1
0
mirror of synced 2024-11-26 21:56:02 +03:00

Merge pull request #53 from gwinn/release

replaceMarkdownSymbols
This commit is contained in:
Alex Lushpai 2018-11-07 18:12:38 +03:00 committed by GitHub
commit 862448e942
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 33 additions and 24 deletions

View File

@ -6,10 +6,10 @@ import "time"
type Connection struct { type Connection struct {
ID int `gorm:"primary_key"` ID int `gorm:"primary_key"`
ClientID string `gorm:"client_id type:varchar(70);not null;unique" json:"clientId,omitempty"` ClientID string `gorm:"client_id type:varchar(70);not null;unique" json:"clientId,omitempty"`
APIKEY string `gorm:"api_key type:varchar(100);not null" json:"api_key,omitempty" binding:"required"` APIKEY string `gorm:"api_key type:varchar(100);not null" json:"api_key,omitempty" binding:"required,max=100"`
APIURL string `gorm:"api_url type:varchar(255);not null" json:"api_url,omitempty" binding:"required,validatecrmurl"` APIURL string `gorm:"api_url type:varchar(255);not null" json:"api_url,omitempty" binding:"required,validatecrmurl,max=255"`
MGURL string `gorm:"mg_url type:varchar(255);not null;" json:"mg_url,omitempty"` MGURL string `gorm:"mg_url type:varchar(255);not null;" json:"mg_url,omitempty" binding:"max=255"`
MGToken string `gorm:"mg_token type:varchar(100);not null;unique" json:"mg_token,omitempty"` MGToken string `gorm:"mg_token type:varchar(100);not null;unique" json:"mg_token,omitempty" binding:"max=100"`
CreatedAt time.Time CreatedAt time.Time
UpdatedAt time.Time UpdatedAt time.Time
Active bool `json:"active,omitempty"` Active bool `json:"active,omitempty"`
@ -21,10 +21,10 @@ type Bot struct {
ID int `gorm:"primary_key"` ID int `gorm:"primary_key"`
ConnectionID int `gorm:"connection_id" json:"connectionId,omitempty"` ConnectionID int `gorm:"connection_id" json:"connectionId,omitempty"`
Channel uint64 `gorm:"channel;not null;unique" json:"channel,omitempty"` Channel uint64 `gorm:"channel;not null;unique" json:"channel,omitempty"`
ChannelSettingsHash string `gorm:"channel_settings_hash type:varchar(70)"` ChannelSettingsHash string `gorm:"channel_settings_hash type:varchar(70)" binding:"max=70"`
Token string `gorm:"token type:varchar(100);not null;unique" json:"token,omitempty"` Token string `gorm:"token type:varchar(100);not null;unique" json:"token,omitempty" binding:"max=100"`
Name string `gorm:"name type:varchar(40)" json:"name,omitempty"` Name string `gorm:"name type:varchar(40)" json:"name,omitempty" binding:"max=40"`
Lang string `gorm:"lang type:varchar(2)" json:"lang,omitempty"` Lang string `gorm:"lang type:varchar(2)" json:"lang,omitempty" binding:"max=2"`
CreatedAt time.Time CreatedAt time.Time
UpdatedAt time.Time UpdatedAt time.Time
} }
@ -33,8 +33,8 @@ type Bot struct {
type User struct { type User struct {
ID int `gorm:"primary_key"` ID int `gorm:"primary_key"`
ExternalID int `gorm:"external_id;not null;unique"` ExternalID int `gorm:"external_id;not null;unique"`
UserPhotoURL string `gorm:"user_photo_url type:varchar(255)"` UserPhotoURL string `gorm:"user_photo_url type:varchar(255)" binding:"max=255"`
UserPhotoID string `gorm:"user_photo_id type:varchar(100)"` UserPhotoID string `gorm:"user_photo_id type:varchar(100)" binding:"max=100"`
CreatedAt time.Time CreatedAt time.Time
UpdatedAt time.Time UpdatedAt time.Time
} }

View File

@ -591,7 +591,7 @@ func mgWebhookHandler(c *gin.Context) {
var mb string var mb string
switch msg.Data.Type { switch msg.Data.Type {
case v1.MsgTypeProduct: case v1.MsgTypeProduct:
mb = fmt.Sprintf("*%s*\n", msg.Data.Product.Name) mb = fmt.Sprintf("*%s*\n", replaceMarkdownSymbols(msg.Data.Product.Name))
if msg.Data.Product.Cost != nil && msg.Data.Product.Cost.Value != 0 { if msg.Data.Product.Cost != nil && msg.Data.Product.Cost.Value != 0 {
mb += fmt.Sprintf( mb += fmt.Sprintf(
@ -608,9 +608,9 @@ func mgWebhookHandler(c *gin.Context) {
} }
if msg.Data.Product.Url != "" { if msg.Data.Product.Url != "" {
mb += msg.Data.Product.Url mb += replaceMarkdownSymbols(msg.Data.Product.Url)
} else { } else {
mb += msg.Data.Product.Img mb += replaceMarkdownSymbols(msg.Data.Product.Img)
} }
case v1.MsgTypeOrder: case v1.MsgTypeOrder:
mb = getOrderMessage(msg.Data.Order) mb = getOrderMessage(msg.Data.Order)
@ -678,7 +678,7 @@ func getOrderMessage(dataOrder *v1.MessageDataOrder) string {
mb := "*" + getLocalizedMessage("order") mb := "*" + getLocalizedMessage("order")
if dataOrder.Number != "" { if dataOrder.Number != "" {
mb += " " + dataOrder.Number mb += " " + replaceMarkdownSymbols(dataOrder.Number)
} }
if dataOrder.Date != "" { if dataOrder.Date != "" {
@ -691,7 +691,7 @@ func getOrderMessage(dataOrder *v1.MessageDataOrder) string {
mb += fmt.Sprintf( mb += fmt.Sprintf(
"%d. %s", "%d. %s",
k+1, k+1,
v.Name, replaceMarkdownSymbols(v.Name),
) )
if v.Quantity != nil { if v.Quantity != nil {
@ -727,7 +727,7 @@ func getOrderMessage(dataOrder *v1.MessageDataOrder) string {
mb += fmt.Sprintf( mb += fmt.Sprintf(
"\n*%s:*\n%s", "\n*%s:*\n%s",
getLocalizedMessage("delivery"), getLocalizedMessage("delivery"),
dataOrder.Delivery.Name, replaceMarkdownSymbols(dataOrder.Delivery.Name),
) )
} }
@ -747,7 +747,7 @@ func getOrderMessage(dataOrder *v1.MessageDataOrder) string {
} }
if dataOrder.Delivery.Address != "" { if dataOrder.Delivery.Address != "" {
mb += ";\n" + dataOrder.Delivery.Address mb += ";\n" + replaceMarkdownSymbols(dataOrder.Delivery.Address)
} }
mb += "\n" mb += "\n"
@ -759,7 +759,7 @@ func getOrderMessage(dataOrder *v1.MessageDataOrder) string {
getLocalizedMessage("payment"), getLocalizedMessage("payment"),
) )
for _, v := range dataOrder.Payments { for _, v := range dataOrder.Payments {
mb += v.Name mb += replaceMarkdownSymbols(v.Name)
if v.Amount != nil { if v.Amount != nil {
if val, ok := currency[strings.ToLower(v.Amount.Currency)]; ok && v.Amount.Value != 0 { if val, ok := currency[strings.ToLower(v.Amount.Currency)]; ok && v.Amount.Value != 0 {
@ -779,7 +779,7 @@ func getOrderMessage(dataOrder *v1.MessageDataOrder) string {
if v.Status != nil && v.Status.Name != "" { if v.Status != nil && v.Status.Name != "" {
mb += fmt.Sprintf( mb += fmt.Sprintf(
" (%s)", " (%s)",
v.Status.Name, replaceMarkdownSymbols(v.Status.Name),
) )
} }

View File

@ -24,6 +24,7 @@ var (
"/api/integration-modules/{code}", "/api/integration-modules/{code}",
"/api/integration-modules/{code}/edit", "/api/integration-modules/{code}/edit",
} }
markdownSymbols = []string{"*", "_", "`", "["}
) )
// GenerateToken function // GenerateToken function
@ -133,3 +134,11 @@ func getChannelSettingsHash() (hash string, err error) {
return return
} }
func replaceMarkdownSymbols(s string) string {
for _, v := range markdownSymbols {
s = strings.Replace(s, v, "\\"+v, -1)
}
return s
}

View File

@ -12,12 +12,12 @@
<input name="clientId" type="hidden" value="{{.Conn.ClientID}}"> <input name="clientId" type="hidden" value="{{.Conn.ClientID}}">
<div class="row"> <div class="row">
<div class="input-field col s12"> <div class="input-field col s12">
<input placeholder="CRM Url" id="api_url" name="api_url" type="text" class="validate" value="{{.Conn.APIURL}}"> <input placeholder="CRM Url" id="api_url" name="api_url" type="text" class="validate" value="{{.Conn.APIURL}}" maxlength="255">
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="input-field col s12"> <div class="input-field col s12">
<input placeholder="{{.Locale.ApiKey}}" id="api_key" name="api_key" type="text" class="validate" value="{{.Conn.APIKEY}}"> <input placeholder="{{.Locale.ApiKey}}" id="api_key" name="api_key" type="text" class="validate" value="{{.Conn.APIKEY}}" maxlength="100">
</div> </div>
</div> </div>
<div class="row"> <div class="row">
@ -40,7 +40,7 @@
<input name="connectionId" type="hidden" value="{{.Conn.ID}}"> <input name="connectionId" type="hidden" value="{{.Conn.ID}}">
<div class="row"> <div class="row">
<div class="input-field col s12"> <div class="input-field col s12">
<input placeholder="{{.Locale.TableToken}}" id="token" name="token" type="text" class="validate"> <input placeholder="{{.Locale.TableToken}}" id="token" name="token" type="text" class="validate" maxlength="100">
</div> </div>
</div> </div>
<div class="row"> <div class="row">

View File

@ -4,13 +4,13 @@
<div id="msg"></div> <div id="msg"></div>
<div class="row"> <div class="row">
<div class="input-field col s12"> <div class="input-field col s12">
<input placeholder="CRM Url" id="api_url" name="api_url" type="text" class="validate" <input placeholder="CRM Url" id="api_url" name="api_url" type="text" class="validate" maxlength="255"
{{if .Conn.APIURL}} value="{{.Conn.APIURL}}" {{end}}> {{if .Conn.APIURL}} value="{{.Conn.APIURL}}" {{end}}>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="input-field col s12"> <div class="input-field col s12">
<input placeholder="{{.Locale.ApiKey}}" id="api_key" name="api_key" type="text" class="validate"> <input placeholder="{{.Locale.ApiKey}}" id="api_key" name="api_key" type="text" class="validate" maxlength="100">
</div> </div>
</div> </div>
<div class="row"> <div class="row">