this repo has no description
1package photocopy 2 3import ( 4 "bytes" 5 "context" 6 "encoding/json" 7 "fmt" 8 "io" 9 "net/http" 10) 11 12type NervanaItem struct { 13 Text string `json:"text"` 14 Label string `json:"label"` 15 EntityId string `json:"entityId"` 16 Description string `json:"description"` 17} 18 19func (p *Photocopy) newNervanaRequest(ctx context.Context, text string) (*http.Request, error) { 20 payload := map[string]string{ 21 "text": text, 22 "language": "en", 23 } 24 25 b, err := json.Marshal(payload) 26 if err != nil { 27 return nil, err 28 } 29 30 req, err := http.NewRequestWithContext(ctx, "GET", p.nervanaEndpoint, bytes.NewReader(b)) 31 32 req.Header.Set("Authorization", "Bearer "+p.nervanaApiKey) 33 34 return req, err 35} 36 37func (p *Photocopy) makeNervanaRequest(ctx context.Context, text string) ([]NervanaItem, error) { 38 req, err := p.newNervanaRequest(ctx, text) 39 if err != nil { 40 return nil, err 41 } 42 43 resp, err := p.nervanaClient.Do(req) 44 if err != nil { 45 return nil, err 46 } 47 defer resp.Body.Close() 48 49 if resp.StatusCode != 200 { 50 io.Copy(io.Discard, resp.Body) 51 return nil, fmt.Errorf("received non-200 response code: %d", resp.StatusCode) 52 } 53 54 var nervanaResp []NervanaItem 55 if err := json.NewDecoder(resp.Body).Decode(&nervanaResp); err != nil { 56 return nil, err 57 } 58 59 return nervanaResp, nil 60}