github.com/wtfutil/wtf@v0.43.0/modules/gitter/client.go (about) 1 package gitter 2 3 import ( 4 "fmt" 5 "net/http" 6 "strconv" 7 8 "github.com/wtfutil/wtf/utils" 9 ) 10 11 func GetMessages(roomId string, numberOfMessages int, apiToken string) ([]Message, error) { 12 var messages []Message 13 14 resp, err := apiRequest("rooms/"+roomId+"/chatMessages?limit="+strconv.Itoa(numberOfMessages), apiToken) 15 if err != nil { 16 return nil, err 17 } 18 19 err = utils.ParseJSON(&messages, resp.Body) 20 if err != nil { 21 return nil, err 22 } 23 24 return messages, nil 25 } 26 27 func GetRoom(roomUri, apiToken string) (*Room, error) { 28 var rooms Rooms 29 30 resp, err := apiRequest("rooms?q="+roomUri, apiToken) 31 if err != nil { 32 return nil, err 33 } 34 35 err = utils.ParseJSON(&rooms, resp.Body) 36 if err != nil { 37 return nil, err 38 } 39 40 for _, room := range rooms.Results { 41 if room.URI == roomUri { 42 return &room, nil 43 } 44 } 45 46 return nil, nil 47 } 48 49 /* -------------------- Unexported Functions -------------------- */ 50 51 var ( 52 apiBaseURL = "https://api.gitter.im/v1/" 53 ) 54 55 func apiRequest(path, apiToken string) (*http.Response, error) { 56 req, err := http.NewRequest("GET", apiBaseURL+path, http.NoBody) 57 if err != nil { 58 return nil, err 59 } 60 61 bearer := fmt.Sprintf("Bearer %s", apiToken) 62 req.Header.Add("Authorization", bearer) 63 64 httpClient := &http.Client{} 65 resp, err := httpClient.Do(req) 66 if err != nil { 67 return nil, err 68 } 69 defer func() { _ = resp.Body.Close() }() 70 71 if resp.StatusCode < 200 || resp.StatusCode > 299 { 72 return nil, fmt.Errorf(resp.Status) 73 } 74 75 return resp, nil 76 }