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 }