11package main
22
33import (
4+ "bytes"
45 "context"
6+ "encoding/json"
57 "fmt"
8+ "io/ioutil"
69 "log"
10+ "math/rand"
11+ "net/http"
712 "os"
13+ "time"
14+
15+ "github.com/davecgh/go-spew/spew"
816
917 "firebase.google.com/go/messaging"
1018 "github.com/joho/godotenv"
@@ -31,6 +39,11 @@ func main() {
3139 log .Fatal (stacktrace .Propagate (err , "cannot create messaging client" ))
3240 }
3341
42+ err = createSmsMessage ()
43+ if err != nil {
44+ log .Fatal (stacktrace .Propagate (err , "cannot create sms message" ))
45+ }
46+
3447 result , err := client .Send (context .Background (), & messaging.Message {
3548 Data : map [string ]string {
3649 "hello" : "world" ,
@@ -43,3 +56,42 @@ func main() {
4356
4457 log .Println (fmt .Sprintf ("sent event with response [%s]" , result ))
4558}
59+
60+ func createSmsMessage () error {
61+ payload , err := json .Marshal (map [string ]string {
62+ "from" : os .Getenv ("PHONE_NUMBER" ),
63+ "to" : os .Getenv ("PHONE_NUMBER" ),
64+ "content" : fmt .Sprintf ("[%s] random message [%d]" , time .Now ().String (), rand .Int ()),
65+ })
66+ if err != nil {
67+ return stacktrace .Propagate (err , "cannot convert message to map" )
68+ }
69+
70+ client := http.Client {}
71+ req , err := http .NewRequest (http .MethodPost , "https://api.httpsms.com/v1/messages/send" , bytes .NewBuffer (payload ))
72+ if err != nil {
73+ return stacktrace .Propagate (err , "cannot do http request" )
74+ }
75+
76+ req .Header = http.Header {
77+ "Content-Type" : {"application/json" },
78+ "X-API-Key" : {os .Getenv ("API_KEY" )},
79+ }
80+
81+ response , err := client .Do (req )
82+ if err != nil {
83+ return stacktrace .Propagate (err , "cannot do http request" )
84+ }
85+
86+ body , err := ioutil .ReadAll (response .Body )
87+ if err != nil {
88+ return stacktrace .Propagate (err , "cannot read response body" )
89+ }
90+
91+ if response .StatusCode >= 400 {
92+ return stacktrace .NewError (fmt .Sprintf ("[%s] %s" , response .StatusCode , string (body )))
93+ }
94+
95+ spew .Dump (string (body ))
96+ return nil
97+ }
0 commit comments