1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- package channel
- import (
- "bytes"
- "encoding/json"
- "errors"
- "fmt"
- "message-pusher/model"
- "net/http"
- )
- type barkMessageRequest struct {
- Title string `json:"title"`
- Body string `json:"body"`
- URL string `json:"url"`
- }
- type barkMessageResponse struct {
- Code int `json:"code"`
- Message string `json:"message"`
- }
- func SendBarkMessage(message *model.Message, user *model.User, channel_ *model.Channel) error {
- url := fmt.Sprintf("%s/%s", channel_.URL, channel_.Secret)
- req := barkMessageRequest{
- Title: message.Title,
- Body: message.Content,
- URL: message.URL,
- }
- if message.Content == "" {
- req.Body = message.Description
- }
- reqBody, err := json.Marshal(req)
- if err != nil {
- return err
- }
- resp, err := http.Post(url, "application/json", bytes.NewReader(reqBody))
- if err != nil {
- return err
- }
- var res barkMessageResponse
- err = json.NewDecoder(resp.Body).Decode(&res)
- if err != nil {
- return err
- }
- if res.Code != 200 {
- return errors.New(res.Message)
- }
- return nil
- }
|