Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.49 KB | None | 0 0
  1. func (h *Handler) SendSMSNotification() error {
  2. httpClient := http.Client{}
  3. smsURL := "https://api.telkomsel.com/sms/sendSms/v1"
  4.  
  5. form := url.Values{}
  6. form.Add("from", "FREENUM0")
  7. form.Add("to", "628112934869")
  8. form.Add("body", "heimdall notification")
  9.  
  10. req, _ := http.NewRequest(http.MethodPatch, smsURL, strings.NewReader(form.Encode()))
  11. req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
  12. req.Header.Add("Authorization", `WSSE realm="SDP", profile="UsernameToken", type="AppKey"`)
  13. req.Header.Add("Accept", "application/json")
  14. req.Header["X-WSSE"] = []string{h.getWsseHeader("e4f7757fd5b94e049a45fc05df660f28", "5bab92806f77d851")}
  15.  
  16. resp, err := httpClient.Do(req)
  17. if err != nil {
  18. return err
  19. }
  20. if resp.StatusCode != 200 {
  21. defer resp.Body.Close()
  22. body, _ := ioutil.ReadAll(resp.Body)
  23. return fmt.Errorf("sms api returns %d status code, %v", resp.StatusCode, string(body))
  24. }
  25. return nil
  26. }
  27.  
  28. func (h *Handler) getWsseHeader(username string, secret string) string {
  29. created := time.Now().UTC().Format(time.RFC3339)
  30. m := md5.New()
  31. m.Write([]byte(strconv.FormatFloat(rand.Float64(), 'f', 6, 64)))
  32. nonce := hex.EncodeToString(m.Sum(nil))
  33. creds := (nonce + created + secret)
  34. hs := sha256.New()
  35. hs.Write([]byte(creds))
  36. passwordDigest := base64.StdEncoding.EncodeToString([]byte(hs.Sum(nil)))
  37. return string("UsernameToken Username=\"" + username + "\", PasswordDigest=\"" + passwordDigest + "\", Nonce=\"" + nonce + "\", Created=\"" + created + "\"")
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement