Initial Commit
This commit is contained in:
commit
db7d2a4cc2
5
example/.gitignore
vendored
Normal file
5
example/.gitignore
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# So I can "example `cat api-key`" on the cli
|
||||||
|
api-key
|
||||||
|
|
||||||
|
# Binary
|
||||||
|
example
|
27
example/example.go
Normal file
27
example/example.go
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"github.com/br0xen/sunlight-api/openstates"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
var apiKey string
|
||||||
|
if len(os.Args) > 1 {
|
||||||
|
apiKey = os.Args[1]
|
||||||
|
} else {
|
||||||
|
fmt.Println("Usage: example <apikey>")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
o := openstates.Create(apiKey)
|
||||||
|
//d, err := o.StateMetadata(states.Kansas)
|
||||||
|
d, err := o.GetBillDetailFromID("KSB00002165")
|
||||||
|
//d, err := o.GetBillDetail(states.Kansas, "2013-2014", "HR 6020")
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
fmt.Printf("%+v\n", d)
|
||||||
|
}
|
96
openstates/bill_structs.go
Normal file
96
openstates/bill_structs.go
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
package openstates
|
||||||
|
|
||||||
|
import "time"
|
||||||
|
|
||||||
|
// Bill is a Bill
|
||||||
|
type Bill struct {
|
||||||
|
Title string `json:"title"`
|
||||||
|
CreatedAtStr string `json:"created_at"`
|
||||||
|
CreatedAt time.Time `json:"-"`
|
||||||
|
UpdatedAtStr string `json:"updated_at"`
|
||||||
|
UpdatedAt time.Time `json:"-"`
|
||||||
|
Chamber string `json:"chamber"`
|
||||||
|
State string `json:"state"`
|
||||||
|
Session string `json:"session"`
|
||||||
|
Subjects []string `json:"subjects"`
|
||||||
|
Type []string `json:"type"`
|
||||||
|
ID string `json:"id"`
|
||||||
|
BillID string `json:"bill_id"`
|
||||||
|
HasDetail bool `json:"-"`
|
||||||
|
ActionDates *ActionDates `json:"action_dates"`
|
||||||
|
Actions []Action `json:"actions"`
|
||||||
|
AlternateTitles []string `json:"alternate_titles"`
|
||||||
|
Documents []string `json:"documents"`
|
||||||
|
Level string `json:"level"`
|
||||||
|
ScrapedSubjects []string `json:"scraped_subjects"`
|
||||||
|
Sources []Source `json:"sources"`
|
||||||
|
Sponsors []Sponsor `json:"sponsors"`
|
||||||
|
Versions []Version `json:"versions"`
|
||||||
|
Votes []Vote `json:"votes"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ActionDates are the dates that actions happened on the bill
|
||||||
|
type ActionDates struct {
|
||||||
|
PassedUpperStr string `json:"passed_upper"`
|
||||||
|
PassedUpper time.Time `json:"-"`
|
||||||
|
PassedLowerStr string `json:"passed_lower"`
|
||||||
|
PassedLower time.Time `json:"-"`
|
||||||
|
LastStr string `json:"last"`
|
||||||
|
Last time.Time `json:"-"`
|
||||||
|
SignedStr string `json:"signed"`
|
||||||
|
Signed time.Time `json:"-"`
|
||||||
|
FirstStr string `json:"first"`
|
||||||
|
First time.Time `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Action on a bill
|
||||||
|
type Action struct {
|
||||||
|
Date time.Time
|
||||||
|
DateStr string `json:"date"`
|
||||||
|
Action string `json:"action"`
|
||||||
|
Type []string `json:"type"`
|
||||||
|
Actor string `json:"actor"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Source is a source in a bill
|
||||||
|
type Source struct {
|
||||||
|
URL string `json:"url"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sponsor is a sponsor on a bill
|
||||||
|
type Sponsor struct {
|
||||||
|
LegID string `json:"leg_id"`
|
||||||
|
Type string `json:"type"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Version is a version of a bill
|
||||||
|
type Version struct {
|
||||||
|
URL string `json:"url"`
|
||||||
|
MimeType string `json:"mimetype"`
|
||||||
|
DocID string `json:"doc_id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Vote is a vote on a bill
|
||||||
|
type Vote struct {
|
||||||
|
OtherCount int `json:"other_count"`
|
||||||
|
Threshold string `json:"+threshold"`
|
||||||
|
OtherVotes []Legislator `json:"other_votes"`
|
||||||
|
YesCount int `json:"yes_count"`
|
||||||
|
YesVotes []Legislator `json:"yes_votes"`
|
||||||
|
NoCount int `json:"no_count"`
|
||||||
|
NoVotes []Legislator `json:"no_votes"`
|
||||||
|
Motion string `json:"motion"`
|
||||||
|
Chamber string `json:"chamber"`
|
||||||
|
State string `json:"state"`
|
||||||
|
Session string `json:"session"`
|
||||||
|
Sources []Source `json:"sources"`
|
||||||
|
Passed bool `json:"passed"`
|
||||||
|
DateStr string `json:"date"`
|
||||||
|
Date time.Time `json:"-"`
|
||||||
|
VoteID string `json:"vote_id"`
|
||||||
|
Type string `json:"type"`
|
||||||
|
ID string `json:"id"`
|
||||||
|
BillID string `json:"bill_id"`
|
||||||
|
}
|
107
openstates/bills.go
Normal file
107
openstates/bills.go
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
package openstates
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
"strconv"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/br0xen/sunlight-api/openstates/states"
|
||||||
|
)
|
||||||
|
|
||||||
|
// GetBillsWithParams returns all bills with parameters 'v'
|
||||||
|
func (o *OpenStates) GetBillsWithParams(v url.Values) ([]Bill, error) {
|
||||||
|
var ret []Bill
|
||||||
|
var err error
|
||||||
|
var getVal []byte
|
||||||
|
if getVal, err = o.call("bills", v); err != nil {
|
||||||
|
return ret, err
|
||||||
|
}
|
||||||
|
err = json.Unmarshal(getVal, &ret)
|
||||||
|
if err == nil {
|
||||||
|
for i := range ret {
|
||||||
|
ret[i].CreatedAt, err = time.Parse("2006-01-02 15:04:05", ret[i].CreatedAtStr)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Error on idx: " + strconv.Itoa(i))
|
||||||
|
return ret, err
|
||||||
|
}
|
||||||
|
ret[i].UpdatedAt, err = time.Parse("2006-01-02 15:04:05", ret[i].UpdatedAtStr)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Error on idx: " + strconv.Itoa(i))
|
||||||
|
return ret, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetBillsForState gets all bills for state st
|
||||||
|
func (o *OpenStates) GetBillsForState(st string) ([]Bill, error) {
|
||||||
|
st, err := states.ScrubToAbbr(st)
|
||||||
|
if err != nil {
|
||||||
|
return []Bill{}, err
|
||||||
|
}
|
||||||
|
vals := url.Values{}
|
||||||
|
vals.Set("state", st)
|
||||||
|
return o.GetBillsWithParams(vals)
|
||||||
|
}
|
||||||
|
|
||||||
|
// QueryBillsForState Does a search for bills with text 'q' in state 'st
|
||||||
|
func (o *OpenStates) QueryBillsForState(st string, q string) ([]Bill, error) {
|
||||||
|
st, err := states.ScrubToAbbr(st)
|
||||||
|
if err != nil {
|
||||||
|
return []Bill{}, err
|
||||||
|
}
|
||||||
|
vals := url.Values{}
|
||||||
|
vals.Set("state", st)
|
||||||
|
vals.Set("q", q)
|
||||||
|
return o.GetBillsWithParams(vals)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o *OpenStates) getBillDetailForEndpoint(ep string) (*Bill, error) {
|
||||||
|
var ret *Bill
|
||||||
|
var err error
|
||||||
|
var getVal []byte
|
||||||
|
v := url.Values{}
|
||||||
|
if getVal, err = o.call(ep, v); err != nil {
|
||||||
|
return ret, err
|
||||||
|
}
|
||||||
|
fmt.Println(string(getVal))
|
||||||
|
err = json.Unmarshal(getVal, &ret)
|
||||||
|
ret.HasDetail = true
|
||||||
|
if err == nil {
|
||||||
|
if err = UnmarshalTimeString(ret.CreatedAtStr, &ret.CreatedAt); err != nil {
|
||||||
|
return ret, err
|
||||||
|
}
|
||||||
|
if err = UnmarshalTimeString(ret.UpdatedAtStr, &ret.UpdatedAt); err != nil {
|
||||||
|
return ret, err
|
||||||
|
}
|
||||||
|
UnmarshalTimeString(ret.ActionDates.PassedUpperStr, &ret.ActionDates.PassedUpper)
|
||||||
|
UnmarshalTimeString(ret.ActionDates.PassedLowerStr, &ret.ActionDates.PassedLower)
|
||||||
|
UnmarshalTimeString(ret.ActionDates.LastStr, &ret.ActionDates.Last)
|
||||||
|
UnmarshalTimeString(ret.ActionDates.SignedStr, &ret.ActionDates.Signed)
|
||||||
|
UnmarshalTimeString(ret.ActionDates.FirstStr, &ret.ActionDates.First)
|
||||||
|
for i := range ret.Actions {
|
||||||
|
UnmarshalTimeString(ret.Actions[i].DateStr, &ret.Actions[i].Date)
|
||||||
|
}
|
||||||
|
for i := range ret.Votes {
|
||||||
|
UnmarshalTimeString(ret.Votes[i].DateStr, &ret.Votes[i].Date)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetBillDetail Gets bill detail from state, session, and name
|
||||||
|
func (o *OpenStates) GetBillDetail(st, sess, name string) (*Bill, error) {
|
||||||
|
st, err := states.ScrubToAbbr(st)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return o.getBillDetailForEndpoint("bills/" + st + "/" + sess + "/" + name)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetBillDetailFromID ...
|
||||||
|
func (o *OpenStates) GetBillDetailFromID(id string) (*Bill, error) {
|
||||||
|
return o.getBillDetailForEndpoint("bills/" + id)
|
||||||
|
}
|
7
openstates/legislator_structs.go
Normal file
7
openstates/legislator_structs.go
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
package openstates
|
||||||
|
|
||||||
|
// Legislator is a legislator
|
||||||
|
type Legislator struct {
|
||||||
|
LegID string `json:"leg_id"`
|
||||||
|
NameOnBill string `json:"name"` // Shows up when pulling bill detail
|
||||||
|
}
|
34
openstates/legislators.go
Normal file
34
openstates/legislators.go
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
package openstates
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"net/url"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SearchLegislators retrieves a list of legislators based on a number of
|
||||||
|
// parameters, the results do not include the `roles` or `old_roles` items
|
||||||
|
// by default
|
||||||
|
// Valid Parameters:
|
||||||
|
// * state - Filter by state
|
||||||
|
// * first_name - Filter by first name
|
||||||
|
// * last_name - Filter by last name
|
||||||
|
// * chamber - Only legislators with a role in the specified chamber
|
||||||
|
// * active - 'true' (default) to only include current legislators
|
||||||
|
// * term - Only legislators that have a role in a certain term
|
||||||
|
// * district - Only legislators that have represented the specified district
|
||||||
|
// * party - Only legislators that have been associated with a specified
|
||||||
|
// party
|
||||||
|
func (o *OpenStates) SearchLegislators(v url.Values) ([]Legislator, error) {
|
||||||
|
var ret []Legislator
|
||||||
|
var err error
|
||||||
|
var getVal []byte
|
||||||
|
if getVal, err = o.call("legislators", v); err != nil {
|
||||||
|
return ret, err
|
||||||
|
}
|
||||||
|
err = json.Unmarshal(getVal, &ret)
|
||||||
|
if err == nil {
|
||||||
|
//for i := range ret {
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
return ret, err
|
||||||
|
}
|
99
openstates/openstates.go
Normal file
99
openstates/openstates.go
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
package openstates
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
|
"net/http"
|
||||||
|
"net/url"
|
||||||
|
"strconv"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/br0xen/sunlight-api/openstates/states"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Create returns a new OpenStates object
|
||||||
|
func Create(key string) *OpenStates {
|
||||||
|
o := OpenStates{APIVersion: 1, APIKey: key}
|
||||||
|
return &o
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetAPIVersion changes the api version
|
||||||
|
func (o *OpenStates) SetAPIVersion(i int) {
|
||||||
|
o.APIVersion = i
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o *OpenStates) call(endpoint string, values url.Values) ([]byte, error) {
|
||||||
|
var ret []byte
|
||||||
|
url := "http://openstates.org/api/v" + strconv.Itoa(o.APIVersion) + "/" + endpoint + "?apikey=" + o.APIKey
|
||||||
|
if len(values) > 0 {
|
||||||
|
url += "&" + values.Encode()
|
||||||
|
}
|
||||||
|
resp, err := http.Get(url)
|
||||||
|
if err != nil {
|
||||||
|
return ret, err
|
||||||
|
}
|
||||||
|
defer resp.Body.Close()
|
||||||
|
body, err := ioutil.ReadAll(resp.Body)
|
||||||
|
return body, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// AllMetadata returns all state's metadata
|
||||||
|
func (o *OpenStates) AllMetadata() ([]StateMeta, error) {
|
||||||
|
var ret []StateMeta
|
||||||
|
var getVal []byte
|
||||||
|
var err error
|
||||||
|
vals := url.Values{}
|
||||||
|
if getVal, err = o.call("metadata", vals); err != nil {
|
||||||
|
return ret, err
|
||||||
|
}
|
||||||
|
err = json.Unmarshal(getVal, &ret)
|
||||||
|
return ret, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// StateMetadata pulls metadata for a specific state
|
||||||
|
func (o *OpenStates) StateMetadata(st string) (*StateMeta, error) {
|
||||||
|
var ret *StateMeta
|
||||||
|
var err error
|
||||||
|
orig := st
|
||||||
|
if states.IsValidName(st) {
|
||||||
|
st, err = states.NameToAbbr(st)
|
||||||
|
}
|
||||||
|
if !states.IsValidAbbr(st) {
|
||||||
|
return ret, errors.New("Invalid State: " + orig)
|
||||||
|
}
|
||||||
|
var getVal []byte
|
||||||
|
vals := url.Values{}
|
||||||
|
if getVal, err = o.call("metadata/"+st, vals); err != nil {
|
||||||
|
return ret, err
|
||||||
|
}
|
||||||
|
fmt.Println(string(getVal))
|
||||||
|
err = json.Unmarshal(getVal, &ret)
|
||||||
|
return ret, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnmarshalTimeString Takes a time string and a pointer to a time object
|
||||||
|
// and populates the time object with the value from the string
|
||||||
|
func UnmarshalTimeString(s string, t *time.Time) error {
|
||||||
|
var err error
|
||||||
|
// Check if 's' is empty
|
||||||
|
if s == "" {
|
||||||
|
return errors.New("Invalid Time Value")
|
||||||
|
}
|
||||||
|
*t, err = time.Parse("2006-01-02 15:04:05", s)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
resp, err := http.Get("http://openstates.org/api/v1/legislators/geo/?apikey=" + site.OpenStatesKey + "&lat=" + lat + "&long=" + lng)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprint(w, "{\"status\":\"error\"}")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer resp.Body.Close()
|
||||||
|
body, err := ioutil.ReadAll(resp.Body)
|
||||||
|
fmt.Fprint(w, string(body))
|
||||||
|
// http://openstates.org/api/v1/legislators/geo/?lat=35.79&long=-78.78
|
||||||
|
// https://sunlightlabs.github.io/openstates-api/legislators.html#examples/geo-lookup
|
||||||
|
*/
|
54
openstates/os_structs.go
Normal file
54
openstates/os_structs.go
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
package openstates
|
||||||
|
|
||||||
|
import "time"
|
||||||
|
|
||||||
|
// OpenStates is the Wrapper for the OpenStates API
|
||||||
|
type OpenStates struct {
|
||||||
|
APIVersion int
|
||||||
|
APIKey string
|
||||||
|
}
|
||||||
|
|
||||||
|
// StateMeta is all of the metadata for a state
|
||||||
|
type StateMeta struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
Abbr string `json:"abbreviation"`
|
||||||
|
Chambers map[string]StateChamber `json:"chambers"`
|
||||||
|
FeatureFlags []string `json:"feature_flags"`
|
||||||
|
CapitolTimezone time.Location `json:"-"`
|
||||||
|
CapitolTimezoneStr string `json:"capitol_timezone"`
|
||||||
|
ID string `json:"id"`
|
||||||
|
LatestCSVDate time.Time `json:"-"`
|
||||||
|
LatestCSVDateStr string `json:"latest_csv_date"`
|
||||||
|
LatestCSVURL string `json:"latest_csv_url"`
|
||||||
|
LatestJSONDate time.Time `json:"-"`
|
||||||
|
LatestJSONDateStr string `json:"latest_json_date"`
|
||||||
|
LatestJSONURL string `json:"latest_json_url"`
|
||||||
|
LatestUpdate time.Time `json:"-"`
|
||||||
|
LatestUpdateStr string `json:"latest_update"`
|
||||||
|
LegislatureName string `json:"legislature_name"`
|
||||||
|
LegislatureURL string `json:"legislature_url"`
|
||||||
|
SessionDetails map[string]SessionDetail `json:"session_details"`
|
||||||
|
Terms []Term `json:"terms"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// StateChamber is a Chamber in the state's government
|
||||||
|
type StateChamber struct {
|
||||||
|
Name string `json:"name"` // The Chamber name
|
||||||
|
Title string `json:"title"` // Title of a person in this chamber
|
||||||
|
}
|
||||||
|
|
||||||
|
// SessionDetail are details about a specific session
|
||||||
|
type SessionDetail struct {
|
||||||
|
Type string `json:"type"`
|
||||||
|
DisplayName string `json:"display_name"`
|
||||||
|
StartDate time.Time `json:"-"`
|
||||||
|
StartDateStr string `json:"start_date"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Term is a state term
|
||||||
|
type Term struct {
|
||||||
|
EndYear int `json:"end_year"`
|
||||||
|
StartYear int `json:"start_year"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Sessions []string `json:"sessions"`
|
||||||
|
}
|
579
openstates/states/states.go
Normal file
579
openstates/states/states.go
Normal file
@ -0,0 +1,579 @@
|
|||||||
|
package states
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ScrubToAbbr takes a name or abbr and returns an abbr
|
||||||
|
func ScrubToAbbr(nm string) (string, error) {
|
||||||
|
var err error
|
||||||
|
orig := nm
|
||||||
|
if IsValidName(nm) {
|
||||||
|
nm, err = NameToAbbr(nm)
|
||||||
|
}
|
||||||
|
if !IsValidAbbr(nm) {
|
||||||
|
return "", errors.New("Invalid State: " + orig)
|
||||||
|
}
|
||||||
|
return nm, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsValidName returns whether the given string is a valid name
|
||||||
|
func IsValidName(nm string) bool {
|
||||||
|
nm = strings.Title(nm)
|
||||||
|
switch nm {
|
||||||
|
case Alabama:
|
||||||
|
return true
|
||||||
|
case Alaska:
|
||||||
|
return true
|
||||||
|
case Arizona:
|
||||||
|
return true
|
||||||
|
case Arkansas:
|
||||||
|
return true
|
||||||
|
case California:
|
||||||
|
return true
|
||||||
|
case Colorado:
|
||||||
|
return true
|
||||||
|
case Connecticut:
|
||||||
|
return true
|
||||||
|
case Delaware:
|
||||||
|
return true
|
||||||
|
case DistrictOfColumbia:
|
||||||
|
return true
|
||||||
|
case Florida:
|
||||||
|
return true
|
||||||
|
case Georgia:
|
||||||
|
return true
|
||||||
|
case Hawaii:
|
||||||
|
return true
|
||||||
|
case Idaho:
|
||||||
|
return true
|
||||||
|
case Illinois:
|
||||||
|
return true
|
||||||
|
case Indiana:
|
||||||
|
return true
|
||||||
|
case Iowa:
|
||||||
|
return true
|
||||||
|
case Kansas:
|
||||||
|
return true
|
||||||
|
case Kentucky:
|
||||||
|
return true
|
||||||
|
case Louisiana:
|
||||||
|
return true
|
||||||
|
case Maine:
|
||||||
|
return true
|
||||||
|
case Maryland:
|
||||||
|
return true
|
||||||
|
case Massachusetts:
|
||||||
|
return true
|
||||||
|
case Michigan:
|
||||||
|
return true
|
||||||
|
case Minnesota:
|
||||||
|
return true
|
||||||
|
case Mississippi:
|
||||||
|
return true
|
||||||
|
case Missouri:
|
||||||
|
return true
|
||||||
|
case Montana:
|
||||||
|
return true
|
||||||
|
case Nebraska:
|
||||||
|
return true
|
||||||
|
case Nevada:
|
||||||
|
return true
|
||||||
|
case NewHampshire:
|
||||||
|
return true
|
||||||
|
case NewJersey:
|
||||||
|
return true
|
||||||
|
case NewMexico:
|
||||||
|
return true
|
||||||
|
case NewYork:
|
||||||
|
return true
|
||||||
|
case NorthCarolina:
|
||||||
|
return true
|
||||||
|
case NorthDakota:
|
||||||
|
return true
|
||||||
|
case Ohio:
|
||||||
|
return true
|
||||||
|
case Oklahoma:
|
||||||
|
return true
|
||||||
|
case Oregon:
|
||||||
|
return true
|
||||||
|
case Pennsylvania:
|
||||||
|
return true
|
||||||
|
case PuertoRico:
|
||||||
|
return true
|
||||||
|
case RhodeIsland:
|
||||||
|
return true
|
||||||
|
case SouthCarolina:
|
||||||
|
return true
|
||||||
|
case SouthDakota:
|
||||||
|
return true
|
||||||
|
case Tennessee:
|
||||||
|
return true
|
||||||
|
case Texas:
|
||||||
|
return true
|
||||||
|
case Utah:
|
||||||
|
return true
|
||||||
|
case Vermont:
|
||||||
|
return true
|
||||||
|
case Virginia:
|
||||||
|
return true
|
||||||
|
case Washington:
|
||||||
|
return true
|
||||||
|
case WestVirginia:
|
||||||
|
return true
|
||||||
|
case Wisconsin:
|
||||||
|
return true
|
||||||
|
case Wyoming:
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsValidAbbr return whether it was passed a valid abbreviation
|
||||||
|
func IsValidAbbr(a string) bool {
|
||||||
|
a = strings.ToLower(a)
|
||||||
|
switch a {
|
||||||
|
case AlabamaAbbr:
|
||||||
|
return true
|
||||||
|
case AlaskaAbbr:
|
||||||
|
return true
|
||||||
|
case ArizonaAbbr:
|
||||||
|
return true
|
||||||
|
case ArkansasAbbr:
|
||||||
|
return true
|
||||||
|
case CaliforniaAbbr:
|
||||||
|
return true
|
||||||
|
case ColoradoAbbr:
|
||||||
|
return true
|
||||||
|
case ConnecticutAbbr:
|
||||||
|
return true
|
||||||
|
case DelawareAbbr:
|
||||||
|
return true
|
||||||
|
case DistrictOfColumbiaAbbr:
|
||||||
|
return true
|
||||||
|
case FloridaAbbr:
|
||||||
|
return true
|
||||||
|
case GeorgiaAbbr:
|
||||||
|
return true
|
||||||
|
case HawaiiAbbr:
|
||||||
|
return true
|
||||||
|
case IdahoAbbr:
|
||||||
|
return true
|
||||||
|
case IllinoisAbbr:
|
||||||
|
return true
|
||||||
|
case IndianaAbbr:
|
||||||
|
return true
|
||||||
|
case IowaAbbr:
|
||||||
|
return true
|
||||||
|
case KansasAbbr:
|
||||||
|
return true
|
||||||
|
case KentuckyAbbr:
|
||||||
|
return true
|
||||||
|
case LouisianaAbbr:
|
||||||
|
return true
|
||||||
|
case MaineAbbr:
|
||||||
|
return true
|
||||||
|
case MarylandAbbr:
|
||||||
|
return true
|
||||||
|
case MassachusettsAbbr:
|
||||||
|
return true
|
||||||
|
case MichiganAbbr:
|
||||||
|
return true
|
||||||
|
case MinnesotaAbbr:
|
||||||
|
return true
|
||||||
|
case MississippiAbbr:
|
||||||
|
return true
|
||||||
|
case MissouriAbbr:
|
||||||
|
return true
|
||||||
|
case MontanaAbbr:
|
||||||
|
return true
|
||||||
|
case NebraskaAbbr:
|
||||||
|
return true
|
||||||
|
case NevadaAbbr:
|
||||||
|
return true
|
||||||
|
case NewHampshireAbbr:
|
||||||
|
return true
|
||||||
|
case NewJerseyAbbr:
|
||||||
|
return true
|
||||||
|
case NewMexicoAbbr:
|
||||||
|
return true
|
||||||
|
case NewYorkAbbr:
|
||||||
|
return true
|
||||||
|
case NorthCarolinaAbbr:
|
||||||
|
return true
|
||||||
|
case NorthDakotaAbbr:
|
||||||
|
return true
|
||||||
|
case OhioAbbr:
|
||||||
|
return true
|
||||||
|
case OklahomaAbbr:
|
||||||
|
return true
|
||||||
|
case OregonAbbr:
|
||||||
|
return true
|
||||||
|
case PennsylvaniaAbbr:
|
||||||
|
return true
|
||||||
|
case PuertoRicoAbbr:
|
||||||
|
return true
|
||||||
|
case RhodeIslandAbbr:
|
||||||
|
return true
|
||||||
|
case SouthCarolinaAbbr:
|
||||||
|
return true
|
||||||
|
case SouthDakotaAbbr:
|
||||||
|
return true
|
||||||
|
case TennesseeAbbr:
|
||||||
|
return true
|
||||||
|
case TexasAbbr:
|
||||||
|
return true
|
||||||
|
case UtahAbbr:
|
||||||
|
return true
|
||||||
|
case VermontAbbr:
|
||||||
|
return true
|
||||||
|
case VirginiaAbbr:
|
||||||
|
return true
|
||||||
|
case WashingtonAbbr:
|
||||||
|
return true
|
||||||
|
case WestVirginiaAbbr:
|
||||||
|
return true
|
||||||
|
case WisconsinAbbr:
|
||||||
|
return true
|
||||||
|
case WyomingAbbr:
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// NameToAbbr converts a state name to it's abbreviation
|
||||||
|
func NameToAbbr(nm string) (string, error) {
|
||||||
|
nm = strings.Title(nm)
|
||||||
|
switch nm {
|
||||||
|
case Alabama:
|
||||||
|
return AlabamaAbbr, nil
|
||||||
|
case Alaska:
|
||||||
|
return AlaskaAbbr, nil
|
||||||
|
case Arizona:
|
||||||
|
return ArizonaAbbr, nil
|
||||||
|
case Arkansas:
|
||||||
|
return ArkansasAbbr, nil
|
||||||
|
case California:
|
||||||
|
return CaliforniaAbbr, nil
|
||||||
|
case Colorado:
|
||||||
|
return ColoradoAbbr, nil
|
||||||
|
case Connecticut:
|
||||||
|
return ConnecticutAbbr, nil
|
||||||
|
case Delaware:
|
||||||
|
return DelawareAbbr, nil
|
||||||
|
case DistrictOfColumbia:
|
||||||
|
return DistrictOfColumbiaAbbr, nil
|
||||||
|
case Florida:
|
||||||
|
return FloridaAbbr, nil
|
||||||
|
case Georgia:
|
||||||
|
return GeorgiaAbbr, nil
|
||||||
|
case Hawaii:
|
||||||
|
return HawaiiAbbr, nil
|
||||||
|
case Idaho:
|
||||||
|
return IdahoAbbr, nil
|
||||||
|
case Illinois:
|
||||||
|
return IllinoisAbbr, nil
|
||||||
|
case Indiana:
|
||||||
|
return IndianaAbbr, nil
|
||||||
|
case Iowa:
|
||||||
|
return IowaAbbr, nil
|
||||||
|
case Kansas:
|
||||||
|
return KansasAbbr, nil
|
||||||
|
case Kentucky:
|
||||||
|
return KentuckyAbbr, nil
|
||||||
|
case Louisiana:
|
||||||
|
return LouisianaAbbr, nil
|
||||||
|
case Maine:
|
||||||
|
return MaineAbbr, nil
|
||||||
|
case Maryland:
|
||||||
|
return MarylandAbbr, nil
|
||||||
|
case Massachusetts:
|
||||||
|
return MassachusettsAbbr, nil
|
||||||
|
case Michigan:
|
||||||
|
return MichiganAbbr, nil
|
||||||
|
case Minnesota:
|
||||||
|
return MinnesotaAbbr, nil
|
||||||
|
case Mississippi:
|
||||||
|
return MississippiAbbr, nil
|
||||||
|
case Missouri:
|
||||||
|
return MissouriAbbr, nil
|
||||||
|
case Montana:
|
||||||
|
return MontanaAbbr, nil
|
||||||
|
case Nebraska:
|
||||||
|
return NebraskaAbbr, nil
|
||||||
|
case Nevada:
|
||||||
|
return NevadaAbbr, nil
|
||||||
|
case NewHampshire:
|
||||||
|
return NewHampshireAbbr, nil
|
||||||
|
case NewJersey:
|
||||||
|
return NewJerseyAbbr, nil
|
||||||
|
case NewMexico:
|
||||||
|
return NewMexicoAbbr, nil
|
||||||
|
case NewYork:
|
||||||
|
return NewYorkAbbr, nil
|
||||||
|
case NorthCarolina:
|
||||||
|
return NorthCarolinaAbbr, nil
|
||||||
|
case NorthDakota:
|
||||||
|
return NorthDakotaAbbr, nil
|
||||||
|
case Ohio:
|
||||||
|
return OhioAbbr, nil
|
||||||
|
case Oklahoma:
|
||||||
|
return OklahomaAbbr, nil
|
||||||
|
case Oregon:
|
||||||
|
return OregonAbbr, nil
|
||||||
|
case Pennsylvania:
|
||||||
|
return PennsylvaniaAbbr, nil
|
||||||
|
case PuertoRico:
|
||||||
|
return PuertoRicoAbbr, nil
|
||||||
|
case RhodeIsland:
|
||||||
|
return RhodeIslandAbbr, nil
|
||||||
|
case SouthCarolina:
|
||||||
|
return SouthCarolinaAbbr, nil
|
||||||
|
case SouthDakota:
|
||||||
|
return SouthDakotaAbbr, nil
|
||||||
|
case Tennessee:
|
||||||
|
return TennesseeAbbr, nil
|
||||||
|
case Texas:
|
||||||
|
return TexasAbbr, nil
|
||||||
|
case Utah:
|
||||||
|
return UtahAbbr, nil
|
||||||
|
case Vermont:
|
||||||
|
return VermontAbbr, nil
|
||||||
|
case Virginia:
|
||||||
|
return VirginiaAbbr, nil
|
||||||
|
case Washington:
|
||||||
|
return WashingtonAbbr, nil
|
||||||
|
case WestVirginia:
|
||||||
|
return WestVirginiaAbbr, nil
|
||||||
|
case Wisconsin:
|
||||||
|
return WisconsinAbbr, nil
|
||||||
|
case Wyoming:
|
||||||
|
return WyomingAbbr, nil
|
||||||
|
}
|
||||||
|
return "", errors.New("Invalid State Name")
|
||||||
|
}
|
||||||
|
|
||||||
|
// AbbrToName converts a state abbreviation to it's name
|
||||||
|
func AbbrToName(nm string) (string, error) {
|
||||||
|
nm = strings.ToLower(nm)
|
||||||
|
switch nm {
|
||||||
|
case AlabamaAbbr:
|
||||||
|
return Alabama, nil
|
||||||
|
case AlaskaAbbr:
|
||||||
|
return Alaska, nil
|
||||||
|
case ArizonaAbbr:
|
||||||
|
return Arizona, nil
|
||||||
|
case ArkansasAbbr:
|
||||||
|
return Arkansas, nil
|
||||||
|
case CaliforniaAbbr:
|
||||||
|
return California, nil
|
||||||
|
case ColoradoAbbr:
|
||||||
|
return Colorado, nil
|
||||||
|
case ConnecticutAbbr:
|
||||||
|
return Connecticut, nil
|
||||||
|
case DelawareAbbr:
|
||||||
|
return Delaware, nil
|
||||||
|
case DistrictOfColumbiaAbbr:
|
||||||
|
return DistrictOfColumbia, nil
|
||||||
|
case FloridaAbbr:
|
||||||
|
return Florida, nil
|
||||||
|
case GeorgiaAbbr:
|
||||||
|
return Georgia, nil
|
||||||
|
case HawaiiAbbr:
|
||||||
|
return Hawaii, nil
|
||||||
|
case IdahoAbbr:
|
||||||
|
return Idaho, nil
|
||||||
|
case IllinoisAbbr:
|
||||||
|
return Illinois, nil
|
||||||
|
case IndianaAbbr:
|
||||||
|
return Indiana, nil
|
||||||
|
case IowaAbbr:
|
||||||
|
return Iowa, nil
|
||||||
|
case KansasAbbr:
|
||||||
|
return Kansas, nil
|
||||||
|
case KentuckyAbbr:
|
||||||
|
return Kentucky, nil
|
||||||
|
case LouisianaAbbr:
|
||||||
|
return Louisiana, nil
|
||||||
|
case MaineAbbr:
|
||||||
|
return Maine, nil
|
||||||
|
case MarylandAbbr:
|
||||||
|
return Maryland, nil
|
||||||
|
case MassachusettsAbbr:
|
||||||
|
return Massachusetts, nil
|
||||||
|
case MichiganAbbr:
|
||||||
|
return Michigan, nil
|
||||||
|
case MinnesotaAbbr:
|
||||||
|
return Minnesota, nil
|
||||||
|
case MississippiAbbr:
|
||||||
|
return Mississippi, nil
|
||||||
|
case MissouriAbbr:
|
||||||
|
return Missouri, nil
|
||||||
|
case MontanaAbbr:
|
||||||
|
return Montana, nil
|
||||||
|
case NebraskaAbbr:
|
||||||
|
return Nebraska, nil
|
||||||
|
case NevadaAbbr:
|
||||||
|
return Nevada, nil
|
||||||
|
case NewHampshireAbbr:
|
||||||
|
return NewHampshire, nil
|
||||||
|
case NewJerseyAbbr:
|
||||||
|
return NewJersey, nil
|
||||||
|
case NewMexicoAbbr:
|
||||||
|
return NewMexico, nil
|
||||||
|
case NewYorkAbbr:
|
||||||
|
return NewYork, nil
|
||||||
|
case NorthCarolinaAbbr:
|
||||||
|
return NorthCarolina, nil
|
||||||
|
case NorthDakotaAbbr:
|
||||||
|
return NorthDakota, nil
|
||||||
|
case OhioAbbr:
|
||||||
|
return Ohio, nil
|
||||||
|
case OklahomaAbbr:
|
||||||
|
return Oklahoma, nil
|
||||||
|
case OregonAbbr:
|
||||||
|
return Oregon, nil
|
||||||
|
case PennsylvaniaAbbr:
|
||||||
|
return Pennsylvania, nil
|
||||||
|
case PuertoRicoAbbr:
|
||||||
|
return PuertoRico, nil
|
||||||
|
case RhodeIslandAbbr:
|
||||||
|
return RhodeIsland, nil
|
||||||
|
case SouthCarolinaAbbr:
|
||||||
|
return SouthCarolina, nil
|
||||||
|
case SouthDakotaAbbr:
|
||||||
|
return SouthDakota, nil
|
||||||
|
case TennesseeAbbr:
|
||||||
|
return Tennessee, nil
|
||||||
|
case TexasAbbr:
|
||||||
|
return Texas, nil
|
||||||
|
case UtahAbbr:
|
||||||
|
return Utah, nil
|
||||||
|
case VermontAbbr:
|
||||||
|
return Vermont, nil
|
||||||
|
case VirginiaAbbr:
|
||||||
|
return Virginia, nil
|
||||||
|
case WashingtonAbbr:
|
||||||
|
return Washington, nil
|
||||||
|
case WestVirginiaAbbr:
|
||||||
|
return WestVirginia, nil
|
||||||
|
case WisconsinAbbr:
|
||||||
|
return Wisconsin, nil
|
||||||
|
case WyomingAbbr:
|
||||||
|
return Wyoming, nil
|
||||||
|
}
|
||||||
|
return "", errors.New("Invalid State Abbreviation")
|
||||||
|
}
|
||||||
|
|
||||||
|
// State Name Constants
|
||||||
|
const (
|
||||||
|
Alabama = "Alabama"
|
||||||
|
Alaska = "Alaska"
|
||||||
|
Arizona = "Arizona"
|
||||||
|
Arkansas = "Arkansas"
|
||||||
|
California = "California"
|
||||||
|
Colorado = "Colorado"
|
||||||
|
Connecticut = "Connecticut"
|
||||||
|
Delaware = "Delaware"
|
||||||
|
DistrictOfColumbia = "District of Columbia"
|
||||||
|
Florida = "Florida"
|
||||||
|
Georgia = "Georgia"
|
||||||
|
Hawaii = "Hawaii"
|
||||||
|
Idaho = "Idaho"
|
||||||
|
Illinois = "Illinois"
|
||||||
|
Indiana = "Indiana"
|
||||||
|
Iowa = "Iowa"
|
||||||
|
Kansas = "Kansas"
|
||||||
|
Kentucky = "Kentucky"
|
||||||
|
Louisiana = "Louisiana"
|
||||||
|
Maine = "Maine"
|
||||||
|
Maryland = "Maryland"
|
||||||
|
Massachusetts = "Massachusetts"
|
||||||
|
Michigan = "Michigan"
|
||||||
|
Minnesota = "Minnesota"
|
||||||
|
Mississippi = "Mississippi"
|
||||||
|
Missouri = "Missouri"
|
||||||
|
Montana = "Montana"
|
||||||
|
Nebraska = "Nebraska"
|
||||||
|
Nevada = "Nevada"
|
||||||
|
NewHampshire = "New Hampshire"
|
||||||
|
NewJersey = "New Jersey"
|
||||||
|
NewMexico = "New Mexico"
|
||||||
|
NewYork = "New York"
|
||||||
|
NorthCarolina = "North Carolina"
|
||||||
|
NorthDakota = "North Dakota"
|
||||||
|
Ohio = "Ohio"
|
||||||
|
Oklahoma = "Oklahoma"
|
||||||
|
Oregon = "Oregon"
|
||||||
|
Pennsylvania = "Pennsylvania"
|
||||||
|
PuertoRico = "Puerto Rico"
|
||||||
|
RhodeIsland = "Rhode Island"
|
||||||
|
SouthCarolina = "South Carolina"
|
||||||
|
SouthDakota = "South Dakota"
|
||||||
|
Tennessee = "Tennessee"
|
||||||
|
Texas = "Texas"
|
||||||
|
Utah = "Utah"
|
||||||
|
Vermont = "Vermont"
|
||||||
|
Virginia = "Virginia"
|
||||||
|
Washington = "Washington"
|
||||||
|
WestVirginia = "West Virginia"
|
||||||
|
Wisconsin = "Wisconsin"
|
||||||
|
Wyoming = "Wyoming"
|
||||||
|
)
|
||||||
|
|
||||||
|
// State Abbreviation Constants
|
||||||
|
const (
|
||||||
|
AlabamaAbbr = "al"
|
||||||
|
AlaskaAbbr = "ak"
|
||||||
|
ArizonaAbbr = "az"
|
||||||
|
ArkansasAbbr = "ar"
|
||||||
|
CaliforniaAbbr = "ca"
|
||||||
|
ColoradoAbbr = "co"
|
||||||
|
ConnecticutAbbr = "ct"
|
||||||
|
DelawareAbbr = "de"
|
||||||
|
DistrictOfColumbiaAbbr = "dc"
|
||||||
|
FloridaAbbr = "fl"
|
||||||
|
GeorgiaAbbr = "ga"
|
||||||
|
HawaiiAbbr = "hi"
|
||||||
|
IdahoAbbr = "id"
|
||||||
|
IllinoisAbbr = "il"
|
||||||
|
IndianaAbbr = "in"
|
||||||
|
IowaAbbr = "io"
|
||||||
|
KansasAbbr = "ks"
|
||||||
|
KentuckyAbbr = "ky"
|
||||||
|
LouisianaAbbr = "la"
|
||||||
|
MaineAbbr = "me"
|
||||||
|
MarylandAbbr = "md"
|
||||||
|
MassachusettsAbbr = "ma"
|
||||||
|
MichiganAbbr = "mi"
|
||||||
|
MinnesotaAbbr = "mn"
|
||||||
|
MississippiAbbr = "ms"
|
||||||
|
MissouriAbbr = "mo"
|
||||||
|
MontanaAbbr = "mt"
|
||||||
|
NebraskaAbbr = "ne"
|
||||||
|
NevadaAbbr = "nv"
|
||||||
|
NewHampshireAbbr = "nh"
|
||||||
|
NewJerseyAbbr = "nj"
|
||||||
|
NewMexicoAbbr = "nm"
|
||||||
|
NewYorkAbbr = "ny"
|
||||||
|
NorthCarolinaAbbr = "nc"
|
||||||
|
NorthDakotaAbbr = "nd"
|
||||||
|
OhioAbbr = "oh"
|
||||||
|
OklahomaAbbr = "ok"
|
||||||
|
OregonAbbr = "or"
|
||||||
|
PennsylvaniaAbbr = "pa"
|
||||||
|
PuertoRicoAbbr = "pr"
|
||||||
|
RhodeIslandAbbr = "ri"
|
||||||
|
SouthCarolinaAbbr = "sc"
|
||||||
|
SouthDakotaAbbr = "sd"
|
||||||
|
TennesseeAbbr = "tn"
|
||||||
|
TexasAbbr = "tx"
|
||||||
|
UtahAbbr = "ut"
|
||||||
|
VermontAbbr = "vt"
|
||||||
|
VirginiaAbbr = "va"
|
||||||
|
WashingtonAbbr = "wa"
|
||||||
|
WestVirginiaAbbr = "wv"
|
||||||
|
WisconsinAbbr = "wi"
|
||||||
|
WyomingAbbr = "wy"
|
||||||
|
)
|
1
sunlight.go
Normal file
1
sunlight.go
Normal file
@ -0,0 +1 @@
|
|||||||
|
package sunlightApi
|
Loading…
Reference in New Issue
Block a user