api.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package ssmsSuApi
  2. import (
  3. "fmt"
  4. // "strings"
  5. "net/url"
  6. "net/http"
  7. "encoding/json"
  8. )
  9. const (
  10. API_SERVER_URL string = "http://api2.ssms.su/"
  11. )
  12. type ResponseResponseMsg struct {
  13. Err_Code string
  14. Text string
  15. Type string
  16. }
  17. type ResponseResponseData struct {
  18. Id int
  19. Credits float32
  20. N_Raw_SMS int
  21. Sender_Name string
  22. }
  23. type ResponseResponse struct {
  24. Msg ResponseResponseMsg
  25. Data ResponseResponseData
  26. }
  27. type Response struct {
  28. Response ResponseResponse
  29. }
  30. func SendSms(login string, password string, recipient string, message string, senderName string) (error, Response) {
  31. resp, err := http.PostForm(API_SERVER_URL, url.Values{"format":{"JSON"}, "method":{"push_msg"}, "email":{login}, "password":{password}, "sender_name":{senderName}, "phone":{recipient}, "text":{message}})
  32. if (err != nil) {
  33. return err, Response{};
  34. }
  35. defer resp.Body.Close()
  36. decoder := json.NewDecoder(resp.Body)
  37. //decoder := json.NewDecoder(strings.NewReader("{\"response\":{\"msg\":{\"err_code\":\"0\",\"text\":\"OK\",\"type\":\"message\"},\"data\":{\"id\":7021498,\"credits\":\"1.50\",\"n_raw_sms\":1,\"sender_name\":\"MEPHI\"}}}"))
  38. var responseData Response;
  39. decoder.Decode(&responseData)
  40. // response example: {"response":{"msg":{"err_code":"0","text":"OK","type":"message"},"data":{"id":7021498,"credits":"1.50","n_raw_sms":1,"sender_name":"MEPHI"}}}
  41. if (responseData.Response.Msg.Err_Code != "0") {
  42. return fmt.Errorf("Incorrect request: %v: %v [%v]", responseData.Response.Msg.Err_Code, responseData.Response.Msg.Text, responseData.Response.Msg.Type), responseData
  43. }
  44. return nil, responseData
  45. }