equal
deleted
inserted
replaced
|
1 package gondole |
|
2 |
|
3 import ( |
|
4 "encoding/json" |
|
5 "fmt" |
|
6 |
|
7 "github.com/sendgrid/rest" |
|
8 ) |
|
9 |
|
10 // Search search for contents (accounts or statuses) and returns a Results |
|
11 func (g *Client) Search(query string, resolve bool) (*Results, error) { |
|
12 if query == "" { |
|
13 return nil, ErrInvalidParameter |
|
14 } |
|
15 req := g.prepareRequest("search") |
|
16 req.QueryParams["q"] = query |
|
17 if resolve { |
|
18 req.QueryParams["resolve"] = "true" |
|
19 } |
|
20 r, err := rest.API(req) |
|
21 if err != nil { |
|
22 return nil, fmt.Errorf("search: %s", err.Error()) |
|
23 } |
|
24 |
|
25 // Check for error reply |
|
26 var errorResult Error |
|
27 if err := json.Unmarshal([]byte(r.Body), &errorResult); err == nil { |
|
28 // The empty object is not an error |
|
29 if errorResult.Text != "" { |
|
30 return nil, fmt.Errorf("%s", errorResult.Text) |
|
31 } |
|
32 } |
|
33 |
|
34 // Not an error reply; let's unmarshal the data |
|
35 var results Results |
|
36 err = json.Unmarshal([]byte(r.Body), &results) |
|
37 if err != nil { |
|
38 return nil, fmt.Errorf("search API: %s", err.Error()) |
|
39 } |
|
40 return &results, nil |
|
41 } |