159 lines
5.2 KiB
Go
159 lines
5.2 KiB
Go
package types
|
|
|
|
type SpaceAPIResponse struct {
|
|
APICompatibility []string `json:"api_compatibility"` // REQUIRED
|
|
Space string `json:"space"` // REQUIRED
|
|
Logo string `json:"logo"` // REQUIRED
|
|
URL string `json:"url"` // REQUIRED
|
|
|
|
// Minimum number of properties: 1
|
|
Location struct {
|
|
Address string `json:"address,omitzero"`
|
|
Lat float64 `json:"lat,omitzero"`
|
|
Lon float64 `json:"lon,omitzero"`
|
|
Timezone string `json:"timezone,omitzero"`
|
|
CountryCode string `json:"country_code,omitzero"`
|
|
Hint string `json:"hint,omitzero"`
|
|
// Minimum number of items: 1
|
|
Areas []SpaceAPILocationAreas `json:"areas,omitempty"`
|
|
} `json:"location,omitzero"`
|
|
|
|
SpaceFed struct {
|
|
SpaceNet bool `json:"spacenet,omitzero"`
|
|
SpaceSAML bool `json:"spacesaml,omitzero"`
|
|
} `json:"spacefed,omitzero"`
|
|
|
|
Cam []string `json:"cam,omitempty"`
|
|
|
|
State SpaceAPIState `json:"state,omitzero"`
|
|
|
|
Events []SpaceAPIEvents `json:"events,omitempty"`
|
|
|
|
Contact struct {
|
|
Phone string `json:"phone,omitzero"`
|
|
Sip string `json:"sip,omitzero"`
|
|
// keymasters
|
|
Keymasters []struct {
|
|
Name string `json:"name,omitzero"`
|
|
IRCNick string `json:"irc_nick,omitzero"`
|
|
Phone string `json:"phone,omitzero"`
|
|
Email string `json:"email,omitzero"`
|
|
Twitter string `json:"twitter,omitzero"`
|
|
Xmpp string `json:"xmpp,omitzero"`
|
|
Mastodon string `json:"mastodon,omitzero"`
|
|
Matrix string `json:"matrix,omitzero"`
|
|
} `json:"keymasters,omitempty"`
|
|
IRC string `json:"irc,omitzero"`
|
|
Twitter string `json:"twitter,omitzero"`
|
|
Mastodon string `json:"mastodon,omitzero"`
|
|
Facebook string `json:"facebook,omitzero"`
|
|
Identica string `json:"identica,omitzero"`
|
|
Foursquare string `json:"foursquare,omitzero"`
|
|
Email string `json:"email,omitzero"`
|
|
ML string `json:"ml,omitzero"`
|
|
XMPP string `json:"xmpp,omitzero"`
|
|
IssueMail string `json:"issue_mail,omitzero"`
|
|
Gopher string `json:"gopher,omitzero"`
|
|
Matrix string `json:"matrix,omitzero"`
|
|
Mumble string `json:"mumble,omitzero"`
|
|
} `json:"contact"`
|
|
|
|
Sensors map[string][]EnvironmentSensor `json:"sensors,omitempty"`
|
|
|
|
Feeds struct {
|
|
Blog struct {
|
|
Type string `json:"type,omitzero"`
|
|
URL string `json:"url"` // REQUIRED
|
|
} `json:"blog,omitzero"`
|
|
Wiki struct {
|
|
Type string `json:"type,omitzero"`
|
|
URL string `json:"url"` // REQUIRED
|
|
} `json:"wiki,omitzero"`
|
|
Calendar struct {
|
|
Type string `json:"type,omitzero"`
|
|
URL string `json:"url"` // REQUIRED
|
|
} `json:"calendar,omitzero"`
|
|
Flickr struct {
|
|
Type string `json:"type,omitzero"`
|
|
URL string `json:"url"` // REQUIRED
|
|
} `json:"flickr,omitzero"`
|
|
} `json:"feeds,omitzero"`
|
|
|
|
Projects []string `json:"projects,omitempty"`
|
|
|
|
Links []struct {
|
|
Name string `json:"name"` // REQUIRED
|
|
URL string `json:"url"` // REQUIRED
|
|
Description string `json:"description,omitzero"`
|
|
} `json:"links,omitempty"`
|
|
|
|
MembershipPlans []struct {
|
|
Name string `json:"name"` // REQUIRED
|
|
Value int64 `json:"value"` // REQUIRED
|
|
Currency string `json:"currency"` // REQUIRED
|
|
BillingInterval string `json:"billing_interval"` // REQUIRED
|
|
Description string `json:"description,omitzero"`
|
|
} `json:"membership_plans,omitempty"`
|
|
|
|
LinkedSpaces []struct {
|
|
Endpoint string `json:"endpoint,omitzero"`
|
|
Website string `json:"website,omitzero"`
|
|
} `json:"linked_spaces,omitempty"`
|
|
|
|
ExtCCC string `json:"ext_ccc,omitzero"`
|
|
}
|
|
|
|
type SpaceAPILocationAreas struct {
|
|
Name string `json:"name,omitzero"`
|
|
Description string `json:"description,omitzero"`
|
|
SquareMeters float64 `json:"square_meters"` // REQUIRED
|
|
}
|
|
|
|
type SpaceAPIState struct {
|
|
Open bool `json:"open,omitempty"`
|
|
LastChange int64 `json:"lastchange,omitempty"`
|
|
TriggerPerson string `json:"trigger_person,omitempty"`
|
|
Message string `json:"message,omitempty"`
|
|
Icon struct {
|
|
Open string `json:"open,omitempty"` // REQUIRED
|
|
Closed string `json:"closed,omitempty"` // REQUIRED
|
|
} `json:"icon,omitzero"`
|
|
}
|
|
|
|
func (s *SpaceAPIState) FromPersistentSpaceState(state PersistentSpaceState) {
|
|
s.Open = state.State.Open
|
|
s.LastChange = state.State.LastChange
|
|
s.Message = state.State.Message
|
|
}
|
|
|
|
type SpaceAPIEvents struct {
|
|
Name string `json:"name"` // REQUIRED
|
|
Type string `json:"type"` // REQUIRED
|
|
Timestamp int64 `json:"timestamp"` // REQUIRED
|
|
Extra string `json:"extra,omitzero"`
|
|
}
|
|
|
|
type EnvironmentSensor struct {
|
|
Value float64 `json:"value"`
|
|
Unit string `json:"unit"`
|
|
Location string `json:"location,omitempty"`
|
|
Name string `json:"name,omitempty"`
|
|
Description string `json:"description,omitempty"`
|
|
LastChange int64 `json:"lastchange,omitempty"`
|
|
}
|
|
|
|
type PersistentSpaceState struct {
|
|
State struct {
|
|
Open bool `json:"open"`
|
|
LastChange int64 `json:"lastchange"`
|
|
Message string `json:"message,omitempty"`
|
|
} `json:"state"`
|
|
Sensors map[string][]PersistentEnvironmentSensor `json:"sensors,omitempty"`
|
|
}
|
|
|
|
type PersistentEnvironmentSensor struct {
|
|
Value float64 `json:"value"`
|
|
Location string `json:"location,omitempty"`
|
|
Name string `json:"name,omitempty"`
|
|
LastChange int64 `json:"lastchange"`
|
|
}
|