Files
ciimsproxy/cmd/main/main.go
T

87 lines
2.1 KiB
Go
Raw Normal View History

2020-05-11 14:58:22 +08:00
package main
import (
"net/http"
2020-09-15 10:24:08 +08:00
"os"
2020-05-11 14:58:22 +08:00
"github.com/gin-gonic/gin"
"gzzn.com/mini/ciimsproxy/internal"
)
const (
servicePrefix string = "/services/ExchangeService"
// defaultURL string = "http://localhost:8080"
2020-09-15 10:24:08 +08:00
//defaultURL string = "http://192.168.10.96:8080"
2020-05-11 14:58:22 +08:00
)
2020-09-15 10:24:08 +08:00
var defaultURL = ""
2020-05-11 14:58:22 +08:00
func main() {
2020-09-15 10:24:08 +08:00
defaultURL = os.Getenv("CIIMS_SERVER")
listen := os.Getenv("PROXY_LISTEN")
if listen == "" {
listen = ":9090"
}
println("use ciims : " + defaultURL)
2020-05-11 14:58:22 +08:00
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
2020-09-15 10:24:08 +08:00
r.POST("/send", sendMessage)
2020-05-11 14:58:22 +08:00
r.POST("/receive", receiveMessage)
// r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
2020-09-15 10:24:08 +08:00
r.Run(listen)
2020-05-11 14:58:22 +08:00
}
func sendMessage(c *gin.Context) {
var message struct {
URL string `json:"url" `
User string `json:"user" binding:"required"`
Pass string `json:"pass" binding:"required"`
Event string `json:"event" binding:"required"`
2020-09-16 10:59:05 +08:00
Priority int `json:"priority" `
2020-05-11 14:58:22 +08:00
Val bool `json:"val"`
Msg string `json:"msg" binding:"required"`
}
err := c.Bind(&message)
if err == nil {
msg := internal.CreateSend(message.User, message.Pass,
message.Priority, message.Event, message.Val, message.Msg)
url := getURL(message.URL)
resp := internal.Send(url, msg)
c.String(http.StatusOK, resp)
} else {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
}
}
func receiveMessage(c *gin.Context) {
var message struct {
URL string `json:"url" `
User string `json:"user" binding:"required"`
Pass string `json:"pass" binding:"required"`
Count int `json:"count" binding:"required"`
}
err := c.Bind(&message)
if err == nil {
msg := internal.CreateReceive(message.User, message.Pass, message.Count)
url := getURL(message.URL)
resp := internal.Send(url, msg)
c.JSON(http.StatusOK, gin.H{"msgs": internal.GetMsgs(resp)})
} else {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
}
}
func getURL(url string) string {
var result string
if len(url) > 0 {
result = url + servicePrefix
} else {
result = defaultURL + servicePrefix
}
return result
}