github.com/wtfutil/wtf@v0.43.0/modules/rollbar/client.go (about) 1 package rollbar 2 3 import ( 4 "fmt" 5 "net/http" 6 "net/url" 7 8 "github.com/wtfutil/wtf/utils" 9 ) 10 11 func CurrentActiveItems(accessToken, assignedToName string, activeOnly bool) (*ActiveItems, error) { 12 items := &ActiveItems{} 13 14 rollbarAPIURL.Host = "api.rollbar.com" 15 rollbarAPIURL.Path = "/api/1/items" 16 resp, err := rollbarItemRequest(accessToken, assignedToName, activeOnly) 17 if err != nil { 18 return items, err 19 } 20 21 err = utils.ParseJSON(&items, resp.Body) 22 if err != nil { 23 return items, err 24 } 25 26 return items, nil 27 } 28 29 /* -------------------- Unexported Functions -------------------- */ 30 31 var ( 32 rollbarAPIURL = &url.URL{Scheme: "https"} 33 ) 34 35 func rollbarItemRequest(accessToken, assignedToName string, activeOnly bool) (*http.Response, error) { 36 params := url.Values{} 37 params.Add("access_token", accessToken) 38 params.Add("assigned_user", assignedToName) 39 if activeOnly { 40 params.Add("status", "active") 41 } 42 43 requestURL := rollbarAPIURL.ResolveReference(&url.URL{RawQuery: params.Encode()}) 44 req, _ := http.NewRequest("GET", requestURL.String(), http.NoBody) 45 req.Header.Add("Accept", "application/json") 46 req.Header.Add("Content-Type", "application/json") 47 48 httpClient := &http.Client{} 49 resp, err := httpClient.Do(req) 50 if err != nil { 51 return nil, err 52 } 53 defer func() { _ = resp.Body.Close() }() 54 55 if resp.StatusCode < 200 || resp.StatusCode > 299 { 56 return nil, fmt.Errorf(resp.Status) 57 } 58 59 return resp, nil 60 }