package main import ( "net/http" "os" "github.com/gin-gonic/gin" "gzzn.com/mini/ciimsproxy/internal" ) const ( servicePrefix string = "/services/ExchangeService" // defaultURL string = "http://localhost:8080" //defaultURL string = "http://192.168.10.96:8080" ) var defaultURL = "" func main() { defaultURL = os.Getenv("CIIMS_SERVER") listen := os.Getenv("PROXY_LISTEN") if listen == "" { listen = ":9090" } println("use ciims : " + defaultURL) r := gin.Default() r.GET("/ping", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "pong", }) }) r.POST("/send", sendMessage) r.POST("/receive", receiveMessage) // r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080") r.Run(listen) } 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"` Priority int `json:"priority" ` 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 }