github.com/wtfutil/wtf@v0.43.0/modules/zendesk/client.go (about)

     1  package zendesk
     2  
     3  import (
     4  	"fmt"
     5  	"io"
     6  	"net/http"
     7  )
     8  
     9  type Resource struct {
    10  	Response interface{}
    11  	Raw      string
    12  }
    13  
    14  func (widget *Widget) api(meth string) (*Resource, error) {
    15  	trn := &http.Transport{}
    16  
    17  	client := &http.Client{
    18  		Transport: trn,
    19  	}
    20  
    21  	baseURL := fmt.Sprintf("https://%v.zendesk.com/api/v2", widget.settings.subdomain)
    22  	URL := baseURL + "/tickets.json?sort_by=status"
    23  
    24  	req, err := http.NewRequest(meth, URL, http.NoBody)
    25  	if err != nil {
    26  		return nil, err
    27  	}
    28  
    29  	req.Header.Add("Content-Type", "application/json")
    30  
    31  	apiUser := fmt.Sprintf("%v/token", widget.settings.username)
    32  	req.SetBasicAuth(apiUser, widget.settings.apiKey)
    33  
    34  	resp, err := client.Do(req)
    35  	if err != nil {
    36  		return nil, err
    37  	}
    38  	defer func() { _ = resp.Body.Close() }()
    39  
    40  	data, err := io.ReadAll(resp.Body)
    41  	if err != nil {
    42  		return nil, err
    43  	}
    44  
    45  	return &Resource{Response: &resp, Raw: string(data)}, nil
    46  }