1
0
Files
go-yelp-fusion/examples/yelp-https.go

72 lines
1.9 KiB
Go

// This example demonstrates using querystring parameters to perform
// a simple query with the yelp API.
// Example url: http://localhost:8000/?term=coffee&location=seattle
package main
import (
"encoding/json"
"errors"
"fmt"
"io"
"io/ioutil"
"net/http"
"os"
"gitlab.bastian-buehrig.de/go-yelp-fusion/yelp"
)
func main() {
http.HandleFunc("/", res)
http.ListenAndServe(":8000", nil)
}
func res(w http.ResponseWriter, r *http.Request) {
// get the keys either from config file
options, err := getOptions(w)
if err != nil {
fmt.Println(err)
}
// create a new yelp client with the auth keys
client := yelp.New(options, nil)
// make a simple query
term := r.URL.Query().Get("term")
location := r.URL.Query().Get("location")
results, err := client.DoSimpleSearch(term, location)
if err != nil {
fmt.Println(err)
}
// print the results
io.WriteString(w, fmt.Sprintf("<div>Found a total of %v results for \"%v\" in \"%v\".</div>", results.Total, term, location))
io.WriteString(w, "<div>-----------------------------</div>")
for i := 0; i < len(results.Businesses); i++ {
io.WriteString(w, fmt.Sprintf("<div>%v, %v</div>", results.Businesses[i].Name, results.Businesses[i].Rating))
}
}
// getOptions obtains the keys required to use the Yelp API from a config file
// or from environment variables.
func getOptions(w http.ResponseWriter) (options *yelp.AuthOptions, err error) {
var o *yelp.AuthOptions
// start by looking for the keys in config.json
data, err := ioutil.ReadFile("../config.json")
if err != nil {
// if the file isn't there, check environment variables
o = &yelp.AuthOptions{
APIKey: os.Getenv("API_KEY"),
}
if o.APIKey == "" {
return o, errors.New("to use the sample, keys must be provided either in a config.json file at the root of the repo, or in environment variables")
}
} else {
err = json.Unmarshal(data, &o)
return o, err
}
return o, nil
}