37 lines
729 B
Go
37 lines
729 B
Go
package openstates
|
|
|
|
import (
|
|
"context"
|
|
"log"
|
|
|
|
"github.com/machinebox/graphql"
|
|
)
|
|
|
|
type OpenStatesApi struct {
|
|
ApiKey string
|
|
Client *graphql.Client
|
|
}
|
|
|
|
func NewOpenStatesApi(key string) *OpenStatesApi {
|
|
o := OpenStatesApi{
|
|
ApiKey: key,
|
|
}
|
|
o.Client = graphql.NewClient("https://openstates.org/graphql")
|
|
return &o
|
|
}
|
|
|
|
func (o *OpenStatesApi) TurnOnLogging() {
|
|
o.Client.Log = func(s string) { log.Println(s) }
|
|
}
|
|
|
|
func (o *OpenStatesApi) MakeRequest(req *graphql.Request, res interface{}) {
|
|
ctx := context.Background()
|
|
req.Header.Add("X-API-KEY", o.ApiKey)
|
|
if err := o.Client.Run(ctx, req, &res); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|
|
|
|
//func (o *OpenStatesApi) GetLegislatorsForArea(lat float, long float) []PersonNode {
|
|
//}
|