package gomatrix // RespError is the standard JSON error response from Homeservers. It also implements the Golang "error" interface. // See http://matrix.org/docs/spec/client_server/r0.2.0.html#api-standards type RespError struct { ErrCode string `json:"errcode"` Err string `json:"error"` } // Error returns the errcode and error message. func (e RespError) Error() string { return e.ErrCode + ": " + e.Err } // RespCreateFilter is the JSON response for http://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-client-r0-user-userid-filter type RespCreateFilter struct { FilterID string `json:"filter_id"` } // RespVersions is the JSON response for http://matrix.org/docs/spec/client_server/r0.2.0.html#get-matrix-client-versions type RespVersions struct { Versions []string `json:"versions"` } // RespPublicRooms is the JSON response for http://matrix.org/speculator/spec/HEAD/client_server/unstable.html#get-matrix-client-unstable-publicrooms type RespPublicRooms struct { TotalRoomCountEstimate int `json:"total_room_count_estimate"` PrevBatch string `json:"prev_batch"` NextBatch string `json:"next_batch"` Chunk []PublicRoom `json:"chunk"` } // RespJoinRoom is the JSON response for http://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-client-r0-rooms-roomid-join type RespJoinRoom struct { RoomID string `json:"room_id"` } // RespLeaveRoom is the JSON response for http://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-client-r0-rooms-roomid-leave type RespLeaveRoom struct{} // RespForgetRoom is the JSON response for http://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-client-r0-rooms-roomid-forget type RespForgetRoom struct{} // RespInviteUser is the JSON response for http://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-client-r0-rooms-roomid-invite type RespInviteUser struct{} // RespKickUser is the JSON response for http://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-client-r0-rooms-roomid-kick type RespKickUser struct{} // RespBanUser is the JSON response for http://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-client-r0-rooms-roomid-ban type RespBanUser struct{} // RespUnbanUser is the JSON response for http://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-client-r0-rooms-roomid-unban type RespUnbanUser struct{} // RespTyping is the JSON response for https://matrix.org/docs/spec/client_server/r0.2.0.html#put-matrix-client-r0-rooms-roomid-typing-userid type RespTyping struct{} // RespJoinedRooms is the JSON response for TODO-SPEC https://github.com/matrix-org/synapse/pull/1680 type RespJoinedRooms struct { JoinedRooms []string `json:"joined_rooms"` } // RespJoinedMembers is the JSON response for TODO-SPEC https://github.com/matrix-org/synapse/pull/1680 type RespJoinedMembers struct { Joined map[string]struct { DisplayName *string `json:"display_name"` AvatarURL *string `json:"avatar_url"` } `json:"joined"` } // RespMessages is the JSON response for https://matrix.org/docs/spec/client_server/r0.2.0.html#get-matrix-client-r0-rooms-roomid-messages type RespMessages struct { Start string `json:"start"` Chunk []Event `json:"chunk"` End string `json:"end"` } // RespSendEvent is the JSON response for http://matrix.org/docs/spec/client_server/r0.2.0.html#put-matrix-client-r0-rooms-roomid-send-eventtype-txnid type RespSendEvent struct { EventID string `json:"event_id"` } // RespMediaUpload is the JSON response for http://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-media-r0-upload type RespMediaUpload struct { ContentURI string `json:"content_uri"` } // RespUserInteractive is the JSON response for https://matrix.org/docs/spec/client_server/r0.2.0.html#user-interactive-authentication-api type RespUserInteractive struct { Flows []struct { Stages []string `json:"stages"` } `json:"flows"` Params map[string]interface{} `json:"params"` Session string `json:"session"` Completed []string `json:"completed"` ErrCode string `json:"errcode"` Error string `json:"error"` } // HasSingleStageFlow returns true if there exists at least 1 Flow with a single stage of stageName. func (r RespUserInteractive) HasSingleStageFlow(stageName string) bool { for _, f := range r.Flows { if len(f.Stages) == 1 && f.Stages[0] == stageName { return true } } return false } // RespUserDisplayName is the JSON response for https://matrix.org/docs/spec/client_server/r0.2.0.html#get-matrix-client-r0-profile-userid-displayname type RespUserDisplayName struct { DisplayName string `json:"displayname"` } // RespUserStatus is the JSON response for https://matrix.org/docs/spec/client_server/r0.6.0#get-matrix-client-r0-presence-userid-status type RespUserStatus struct { Presence string `json:"presence"` StatusMsg string `json:"status_msg"` LastActiveAgo int `json:"last_active_ago"` CurrentlyActive bool `json:"currently_active"` } // RespRegister is the JSON response for http://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-client-r0-register type RespRegister struct { AccessToken string `json:"access_token"` DeviceID string `json:"device_id"` HomeServer string `json:"home_server"` RefreshToken string `json:"refresh_token"` UserID string `json:"user_id"` } // RespLogin is the JSON response for http://matrix.org/docs/spec/client_server/r0.6.0.html#post-matrix-client-r0-login type RespLogin struct { AccessToken string `json:"access_token"` DeviceID string `json:"device_id"` HomeServer string `json:"home_server"` UserID string `json:"user_id"` WellKnown DiscoveryInformation `json:"well_known"` } // DiscoveryInformation is the JSON Response for https://matrix.org/docs/spec/client_server/r0.6.0#get-well-known-matrix-client and a part of the JSON Response for https://matrix.org/docs/spec/client_server/r0.6.0#post-matrix-client-r0-login type DiscoveryInformation struct { Homeserver struct { BaseURL string `json:"base_url"` } `json:"m.homeserver"` IdentityServer struct { BaseURL string `json:"base_url"` } `json:"m.identitiy_server"` } // RespLogout is the JSON response for http://matrix.org/docs/spec/client_server/r0.6.0.html#post-matrix-client-r0-logout type RespLogout struct{} // RespLogoutAll is the JSON response for https://matrix.org/docs/spec/client_server/r0.6.0#post-matrix-client-r0-logout-all type RespLogoutAll struct{} // RespCreateRoom is the JSON response for https://matrix.org/docs/spec/client_server/r0.2.0.html#post-matrix-client-r0-createroom type RespCreateRoom struct { RoomID string `json:"room_id"` } // RespSync is the JSON response for http://matrix.org/docs/spec/client_server/r0.2.0.html#get-matrix-client-r0-sync type RespSync struct { NextBatch string `json:"next_batch"` AccountData struct { Events []Event `json:"events"` } `json:"account_data"` Presence struct { Events []Event `json:"events"` } `json:"presence"` Rooms struct { Leave map[string]struct { State struct { Events []Event `json:"events"` } `json:"state"` Timeline struct { Events []Event `json:"events"` Limited bool `json:"limited"` PrevBatch string `json:"prev_batch"` } `json:"timeline"` } `json:"leave"` Join map[string]struct { State struct { Events []Event `json:"events"` } `json:"state"` Timeline struct { Events []Event `json:"events"` Limited bool `json:"limited"` PrevBatch string `json:"prev_batch"` } `json:"timeline"` Ephemeral struct { Events []Event `json:"events"` } `json:"ephemeral"` } `json:"join"` Invite map[string]struct { State struct { Events []Event } `json:"invite_state"` } `json:"invite"` } `json:"rooms"` } // RespTurnServer is the JSON response from a Turn Server type RespTurnServer struct { Username string `json:"username"` Password string `json:"password"` TTL int `json:"ttl"` URIs []string `json:"uris"` }