main.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. package main
  2. import (
  3. "context"
  4. "flag"
  5. "log"
  6. "net/url"
  7. "time"
  8. bm "go-common/library/net/http/blademaster"
  9. "go-common/library/net/netutil/breaker"
  10. xtime "go-common/library/time"
  11. )
  12. const (
  13. _apiPushKey = "http://172.22.33.126:7831/x/internal/broadcast/push/keys"
  14. _apiPushMid = "http://172.22.33.126:7831/x/internal/broadcast/push/mids"
  15. _apiPushRoom = "http://172.22.33.126:7831/x/internal/broadcast/push/room"
  16. _apiPushAll = "http://172.22.33.126:7831/x/internal/broadcast/push/all"
  17. )
  18. var (
  19. cmd string
  20. op string
  21. key string
  22. mid string
  23. room string
  24. platform string
  25. message string
  26. httpClient = bm.NewClient(&bm.ClientConfig{
  27. App: &bm.App{
  28. Key: "6a29f8ed87407c11",
  29. Secret: "d3c5a85f5b895a03735b5d20a273bc57",
  30. },
  31. Dial: xtime.Duration(time.Second),
  32. Timeout: xtime.Duration(time.Second),
  33. KeepAlive: xtime.Duration(time.Second * 10),
  34. Breaker: &breaker.Config{
  35. Window: xtime.Duration(time.Second),
  36. Sleep: xtime.Duration(time.Second),
  37. Bucket: 10,
  38. Ratio: 0.8,
  39. Request: 100,
  40. SwitchOff: false,
  41. },
  42. })
  43. )
  44. func init() {
  45. flag.StringVar(&cmd, "cmd", "", "cmd=key/mid/room/all")
  46. flag.StringVar(&op, "op", "", "op=1000,1002,1003")
  47. flag.StringVar(&key, "key", "", "client key")
  48. flag.StringVar(&mid, "mid", "", "mid")
  49. flag.StringVar(&room, "room", "", "room")
  50. flag.StringVar(&platform, "platform", "", "platform")
  51. flag.StringVar(&message, "message", "", "message content")
  52. }
  53. func main() {
  54. flag.Parse()
  55. if op == "" {
  56. panic("please input the op=1000/1002/1003")
  57. }
  58. switch cmd {
  59. case "key":
  60. pushKey(op, key, message)
  61. case "mid":
  62. pushMid(op, mid, message)
  63. case "room":
  64. pushRoom(op, room, message)
  65. case "all":
  66. pushAll(op, platform, message)
  67. default:
  68. log.Printf("unknown cmd=%s\n", cmd)
  69. return
  70. }
  71. }
  72. func pushKey(op, key, content string) (err error) {
  73. params := url.Values{}
  74. params.Set("operation", op)
  75. params.Set("keys", key)
  76. params.Set("message", content)
  77. var res struct {
  78. Code int `json:"code"`
  79. Msg string `json:"msg"`
  80. }
  81. if err = httpClient.Post(context.Background(), _apiPushKey, "", params, &res); err != nil {
  82. log.Printf("http error(%v)", err)
  83. return
  84. }
  85. log.Printf("sent op[%s] key[%s] message:%s\n result:(%d,%s)\n", op, key, message, res.Code, res.Msg)
  86. return
  87. }
  88. func pushMid(op, mid, content string) (err error) {
  89. params := url.Values{}
  90. params.Set("operation", op)
  91. params.Set("mids", mid)
  92. params.Set("message", content)
  93. var res struct {
  94. Code int `json:"code"`
  95. Msg string `json:"msg"`
  96. }
  97. if err = httpClient.Post(context.Background(), _apiPushMid, "", params, &res); err != nil {
  98. log.Printf("http error(%v)\n", err)
  99. return
  100. }
  101. log.Printf("sent op[%s] mid[%s] message:%s\n, result:(%d,%s)\n", op, mid, message, res.Code, res.Msg)
  102. return
  103. }
  104. func pushRoom(op, room, content string) (err error) {
  105. params := url.Values{}
  106. params.Set("operation", op)
  107. params.Set("room", room)
  108. params.Set("message", content)
  109. var res struct {
  110. Code int `json:"code"`
  111. Msg string `json:"msg"`
  112. }
  113. if err = httpClient.Post(context.Background(), _apiPushRoom, "", params, nil); err != nil {
  114. log.Printf("http error(%v)\n", err)
  115. return
  116. }
  117. log.Printf("sent op[%s] room[%s] message:%s\n, result:(%d,%s)\n", op, room, message, res.Code, res.Msg)
  118. return
  119. }
  120. func pushAll(op, platform, content string) (err error) {
  121. params := url.Values{}
  122. params.Set("operation", op)
  123. params.Set("platform", platform)
  124. params.Set("message", content)
  125. var res struct {
  126. Code int `json:"code"`
  127. Msg string `json:"msg"`
  128. }
  129. if err = httpClient.Post(context.Background(), _apiPushAll, "", params, &res); err != nil {
  130. log.Printf("http error(%v)\n", err)
  131. return
  132. }
  133. log.Printf("sent op[%s] platform[%s] message:%s\n, result:(%d,%s)\n", op, platform, message, res.Code, res.Msg)
  134. return
  135. }