mirror of
https://github.com/go-micro/go-micro.git
synced 2025-01-11 17:18:28 +02:00
4ae2528cbe
* add m3o services * update readme
241 lines
7.4 KiB
Go
Executable File
241 lines
7.4 KiB
Go
Executable File
package evchargers
|
|
|
|
import (
|
|
"github.com/m3o/m3o-go/client"
|
|
)
|
|
|
|
func NewEvchargersService(token string) *EvchargersService {
|
|
return &EvchargersService{
|
|
client: client.NewClient(&client.Options{
|
|
Token: token,
|
|
}),
|
|
}
|
|
}
|
|
|
|
type EvchargersService struct {
|
|
client *client.Client
|
|
}
|
|
|
|
// Retrieve reference data as used by this API and in conjunction with the Search endpoint
|
|
func (t *EvchargersService) ReferenceData(request *ReferenceDataRequest) (*ReferenceDataResponse, error) {
|
|
rsp := &ReferenceDataResponse{}
|
|
return rsp, t.client.Call("evchargers", "ReferenceData", request, rsp)
|
|
}
|
|
|
|
// Search by giving a coordinate and a max distance, or bounding box and optional filters
|
|
func (t *EvchargersService) Search(request *SearchRequest) (*SearchResponse, error) {
|
|
rsp := &SearchResponse{}
|
|
return rsp, t.client.Call("evchargers", "Search", request, rsp)
|
|
}
|
|
|
|
type Address struct {
|
|
// Any comments about how to access the charger
|
|
AccessComments string `json:"accessComments"`
|
|
AddressLine1 string `json:"addressLine1"`
|
|
AddressLine2 string `json:"addressLine2"`
|
|
Country *Country `json:"country"`
|
|
CountryId string `json:"countryId"`
|
|
LatLng string `json:"latLng"`
|
|
Location *Coordinates `json:"location"`
|
|
Postcode string `json:"postcode"`
|
|
StateOrProvince string `json:"stateOrProvince"`
|
|
Title string `json:"title"`
|
|
Town string `json:"town"`
|
|
}
|
|
|
|
type BoundingBox struct {
|
|
BottomLeft *Coordinates `json:"bottomLeft"`
|
|
TopRight *Coordinates `json:"topRight"`
|
|
}
|
|
|
|
type ChargerType struct {
|
|
Comments string `json:"comments"`
|
|
Id string `json:"id"`
|
|
// Is this 40KW+
|
|
IsFastChargeCapable bool `json:"isFastChargeCapable"`
|
|
Title string `json:"title"`
|
|
}
|
|
|
|
type CheckinStatusType struct {
|
|
Id string `json:"id"`
|
|
IsAutomated bool `json:"isAutomated"`
|
|
IsPositive bool `json:"isPositive"`
|
|
Title string `json:"title"`
|
|
}
|
|
|
|
type Connection struct {
|
|
// The amps offered
|
|
Amps float64 `json:"amps"`
|
|
ConnectionType *ConnectionType `json:"connectionType"`
|
|
// The ID of the connection type
|
|
ConnectionTypeId string `json:"connectionTypeId"`
|
|
// The current
|
|
Current string `json:"current"`
|
|
Level *ChargerType `json:"level"`
|
|
// The level of charging power available
|
|
LevelId string `json:"levelId"`
|
|
// The power in KW
|
|
Power float64 `json:"power"`
|
|
Reference string `json:"reference"`
|
|
// The voltage offered
|
|
Voltage float64 `json:"voltage"`
|
|
}
|
|
|
|
type ConnectionType struct {
|
|
FormalName string `json:"formalName"`
|
|
Id string `json:"id"`
|
|
IsDiscontinued bool `json:"isDiscontinued"`
|
|
IsObsolete bool `json:"isObsolete"`
|
|
Title string `json:"title"`
|
|
}
|
|
|
|
type Coordinates struct {
|
|
Latitude float64 `json:"latitude"`
|
|
Longitude float64 `json:"longitude"`
|
|
}
|
|
|
|
type Country struct {
|
|
ContinentCode string `json:"continentCode"`
|
|
Id string `json:"id"`
|
|
IsoCode string `json:"isoCode"`
|
|
Title string `json:"title"`
|
|
}
|
|
|
|
type CurrentType struct {
|
|
Description string `json:"description"`
|
|
Id string `json:"id"`
|
|
Title string `json:"title"`
|
|
}
|
|
|
|
type DataProvider struct {
|
|
Comments string `json:"comments"`
|
|
DataProviderStatusType *DataProviderStatusType `json:"dataProviderStatusType"`
|
|
Id string `json:"id"`
|
|
// How is this data licensed
|
|
License string `json:"license"`
|
|
Title string `json:"title"`
|
|
Website string `json:"website"`
|
|
}
|
|
|
|
type DataProviderStatusType struct {
|
|
Id string `json:"id"`
|
|
IsProviderEnabled bool `json:"isProviderEnabled"`
|
|
Title string `json:"title"`
|
|
}
|
|
|
|
type Operator struct {
|
|
Comments string `json:"comments"`
|
|
ContactEmail string `json:"contactEmail"`
|
|
FaultReportEmail string `json:"faultReportEmail"`
|
|
Id string `json:"id"`
|
|
// Is this operator a private individual vs a company
|
|
IsPrivateIndividual bool `json:"isPrivateIndividual"`
|
|
PhonePrimary string `json:"phonePrimary"`
|
|
PhoneSecondary string `json:"phoneSecondary"`
|
|
Title string `json:"title"`
|
|
Website string `json:"website"`
|
|
}
|
|
|
|
type Poi struct {
|
|
// The address
|
|
Address *Address `json:"address"`
|
|
// The connections available at this charge point
|
|
Connections []Connection `json:"connections"`
|
|
// The cost of charging
|
|
Cost string `json:"cost"`
|
|
// The ID of the data provider
|
|
DataProviderId string `json:"dataProviderId"`
|
|
// The ID of the charger
|
|
Id string `json:"id"`
|
|
// The number of charging points
|
|
NumPoints int64 `json:"numPoints,string"`
|
|
// The operator
|
|
Operator *Operator `json:"operator"`
|
|
// The ID of the operator of the charger
|
|
OperatorId string `json:"operatorId"`
|
|
// The type of usage
|
|
UsageType *UsageType `json:"usageType"`
|
|
// The type of usage for this charger point (is it public, membership required, etc)
|
|
UsageTypeId string `json:"usageTypeId"`
|
|
}
|
|
|
|
type ReferenceDataRequest struct {
|
|
}
|
|
|
|
type ReferenceDataResponse struct {
|
|
// The types of charger
|
|
ChargerTypes *ChargerType `json:"chargerTypes"`
|
|
// The types of checkin status
|
|
CheckinStatusTypes *CheckinStatusType `json:"checkinStatusTypes"`
|
|
// The types of connection
|
|
ConnectionTypes *ConnectionType `json:"connectionTypes"`
|
|
// The countries
|
|
Countries []Country `json:"countries"`
|
|
// The types of current
|
|
CurrentTypes *CurrentType `json:"currentTypes"`
|
|
// The providers of the charger data
|
|
DataProviders *DataProvider `json:"dataProviders"`
|
|
// The companies operating the chargers
|
|
Operators []Operator `json:"operators"`
|
|
// The status of the charger
|
|
StatusTypes *StatusType `json:"statusTypes"`
|
|
// The status of a submission
|
|
SubmissionStatusTypes *SubmissionStatusType `json:"submissionStatusTypes"`
|
|
// The different types of usage
|
|
UsageTypes *UsageType `json:"usageTypes"`
|
|
// The types of user comment
|
|
UserCommentTypes *UserCommentType `json:"userCommentTypes"`
|
|
}
|
|
|
|
type SearchRequest struct {
|
|
// Bounding box to search within (top left and bottom right coordinates)
|
|
Box *BoundingBox `json:"box"`
|
|
// IDs of the connection type
|
|
ConnectionTypes string `json:"connectionTypes"`
|
|
// Country ID
|
|
CountryId string `json:"countryId"`
|
|
// Search distance from point in metres, defaults to 5000m
|
|
Distance int64 `json:"distance,string"`
|
|
// Supported charging levels
|
|
Levels []string `json:"levels"`
|
|
// Coordinates from which to begin search
|
|
Location *Coordinates `json:"location"`
|
|
// Maximum number of results to return, defaults to 100
|
|
MaxResults int64 `json:"maxResults,string"`
|
|
// Minimum power in KW. Note: data not available for many chargers
|
|
MinPower int64 `json:"minPower,string"`
|
|
// IDs of the the EV charger operator
|
|
Operators []string `json:"operators"`
|
|
// Usage of the charge point (is it public, membership required, etc)
|
|
UsageTypes string `json:"usageTypes"`
|
|
}
|
|
|
|
type SearchResponse struct {
|
|
Pois []Poi `json:"pois"`
|
|
}
|
|
|
|
type StatusType struct {
|
|
Id string `json:"id"`
|
|
IsOperational bool `json:"isOperational"`
|
|
Title string `json:"title"`
|
|
}
|
|
|
|
type SubmissionStatusType struct {
|
|
Id string `json:"id"`
|
|
IsLive bool `json:"isLive"`
|
|
Title string `json:"title"`
|
|
}
|
|
|
|
type UsageType struct {
|
|
Id string `json:"id"`
|
|
IsAccessKeyRequired bool `json:"isAccessKeyRequired"`
|
|
IsMembershipRequired bool `json:"isMembershipRequired"`
|
|
IsPayAtLocation bool `json:"isPayAtLocation"`
|
|
Title string `json:"title"`
|
|
}
|
|
|
|
type UserCommentType struct {
|
|
Id string `json:"id"`
|
|
Title string `json:"title"`
|
|
}
|