I'm using google places api to retrieve all results related with a search, so this is the things that I'm doing
type Places struct {
ApiKey string
Cx string
c *maps.Client
}
func NewPlacesSearch(apiKey, cx string ) (*Places,error) {
c, err := maps.NewClient(maps.WithAPIKey(apiKey))
if err != nil {
return nil, err
}
p := &Places{ApiKey:apiKey, Cx: cx, c:c}
return p,nil
}
// Search returns all the results respect a keywords
func (p *Places) Search(search string) ([]*maps.PlacesSearchResponse, error) {
results := make([]*maps.PlacesSearchResponse,0)
search = url.QueryEscape(search)
response, err := p.makeSearch(search, "")
if err != nil {
return results, err
}
results = append(results,response)
fmt.Printf("%+v
",response)
done:= false
if response.NextPageToken == "" {
done = true
}
for !done {
response, err = p.makeSearch(search, response.NextPageToken)
if err != nil {
log.Fatalf("fatal error: %s", err)
}
fmt.Println(response)
if response.NextPageToken == "" {
done = true
}
results = append(results,response)
}
return results, nil
}
func (p *Places) makeSearch(search, token string) (*maps.PlacesSearchResponse,error) {
r := &maps.TextSearchRequest{Query: search ,PageToken:token}
fmt.Printf("%+v
",r)
response, err:= p.c.TextSearch(context.Background(),r)
if err != nil {
return &maps.PlacesSearchResponse{}, err
}
return &response,nil
}
Im trying to iterate over all the pagination from google results, as you can see in first request inside of Search
function
response, err := p.makeSearch(search, "")
The request is
{
Query:my+text+to+search
Location:<nil>
Radius:0
Language:
MinPrice:
MaxPrice:
OpenNow:false
Type:
PageToken:
}
But when I try to do the second request (inside in the loop) I get a message
fatal error: maps: INVALID_REQUEST -
The second request looks like:
{
Query:my+text+to+search
Location:<nil>
Radius:0
Language:
MinPrice:
MaxPrice:
OpenNow: false
Type:
PageToken: CuQB3AAAAMy72z91....
}
What am I doing wrong?