Browse Source

feat: keep compatible with ServerChan (close #63)

JustSong 2 years ago
parent
commit
39da3f9771
2 changed files with 24 additions and 13 deletions
  1. 21 12
      controller/message.go
  2. 3 1
      model/message.go

+ 21 - 12
controller/message.go

@@ -13,6 +13,19 @@ import (
 	"time"
 )
 
+func keepCompatible(message *model.Message) {
+	// Keep compatible with ServerChan: https://sct.ftqq.com/sendkey
+	if message.Description == "" {
+		message.Description = message.Short
+	}
+	if message.Content == "" {
+		message.Content = message.Desp
+	}
+	if message.To == "" {
+		message.To = message.OpenId
+	}
+}
+
 func GetPushMessage(c *gin.Context) {
 	message := model.Message{
 		Title:       c.Query("title"),
@@ -22,15 +35,11 @@ func GetPushMessage(c *gin.Context) {
 		Channel:     c.Query("channel"),
 		Token:       c.Query("token"),
 		To:          c.Query("to"),
+		Desp:        c.Query("desp"),
+		Short:       c.Query("short"),
+		OpenId:      c.Query("openid"),
 	}
-	if message.Description == "" {
-		// Keep compatible with ServerChan
-		message.Description = c.Query("desp")
-	}
-	if message.Channel == "" {
-		// Keep compatible with old version
-		message.Channel = c.Query("type")
-	}
+	keepCompatible(&message)
 	pushMessageHelper(c, &message)
 }
 
@@ -42,8 +51,10 @@ func PostPushMessage(c *gin.Context) {
 		URL:         c.PostForm("url"),
 		Channel:     c.PostForm("channel"),
 		Token:       c.PostForm("token"),
-		Desp:        c.PostForm("desp"),
 		To:          c.PostForm("to"),
+		Desp:        c.PostForm("desp"),
+		Short:       c.PostForm("short"),
+		OpenId:      c.PostForm("openid"),
 	}
 	if message == (model.Message{}) {
 		// Looks like the user is using JSON
@@ -56,9 +67,7 @@ func PostPushMessage(c *gin.Context) {
 			return
 		}
 	}
-	if message.Description == "" {
-		message.Description = message.Desp
-	}
+	keepCompatible(&message)
 	pushMessageHelper(c, &message)
 }
 

+ 3 - 1
model/message.go

@@ -11,7 +11,6 @@ type Message struct {
 	UserId      int    `json:"user_id" gorm:"index"`
 	Title       string `json:"title"`
 	Description string `json:"description"`
-	Desp        string `json:"desp" gorm:"-:all"` // alias for description
 	Content     string `json:"content"`
 	URL         string `json:"url" gorm:"column:url"`
 	Channel     string `json:"channel"`
@@ -21,6 +20,9 @@ type Message struct {
 	Link        string `json:"link" gorm:"unique;index"`
 	To          string `json:"to" gorm:"column:to"`     // if specified, will send to this user(s)
 	Status      int    `json:"status" gorm:"default:0"` // pending, sent, failed
+	OpenId      string `json:"openid" gorm:"-:all"`     // alias for to
+	Desp        string `json:"desp" gorm:"-:all"`       // alias for content
+	Short       string `json:"short" gorm:"-:all"`      // alias for description
 }
 
 func GetMessageById(id int, userId int) (*Message, error) {