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  }