Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- func (h *Handler) SendSMSNotification() error {
- httpClient := http.Client{}
- smsURL := "https://api.telkomsel.com/sms/sendSms/v1"
- form := url.Values{}
- form.Add("from", "FREENUM0")
- form.Add("to", "628112934869")
- form.Add("body", "heimdall notification")
- req, _ := http.NewRequest(http.MethodPatch, smsURL, strings.NewReader(form.Encode()))
- req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
- req.Header.Add("Authorization", `WSSE realm="SDP", profile="UsernameToken", type="AppKey"`)
- req.Header.Add("Accept", "application/json")
- req.Header["X-WSSE"] = []string{h.getWsseHeader("e4f7757fd5b94e049a45fc05df660f28", "5bab92806f77d851")}
- resp, err := httpClient.Do(req)
- if err != nil {
- return err
- }
- if resp.StatusCode != 200 {
- defer resp.Body.Close()
- body, _ := ioutil.ReadAll(resp.Body)
- return fmt.Errorf("sms api returns %d status code, %v", resp.StatusCode, string(body))
- }
- return nil
- }
- func (h *Handler) getWsseHeader(username string, secret string) string {
- created := time.Now().UTC().Format(time.RFC3339)
- m := md5.New()
- m.Write([]byte(strconv.FormatFloat(rand.Float64(), 'f', 6, 64)))
- nonce := hex.EncodeToString(m.Sum(nil))
- creds := (nonce + created + secret)
- hs := sha256.New()
- hs.Write([]byte(creds))
- passwordDigest := base64.StdEncoding.EncodeToString([]byte(hs.Sum(nil)))
- return string("UsernameToken Username=\"" + username + "\", PasswordDigest=\"" + passwordDigest + "\", Nonce=\"" + nonce + "\", Created=\"" + created + "\"")
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement