signaller/internal/backend.go

70 lines
2.3 KiB
Go
Raw Permalink Normal View History

package internal
2019-07-18 14:10:43 +00:00
import (
2019-08-03 14:19:18 +00:00
"github.com/signaller-matrix/signaller/internal/models"
"github.com/signaller-matrix/signaller/internal/models/common"
2019-08-03 14:19:18 +00:00
"github.com/signaller-matrix/signaller/internal/models/createroom"
"github.com/signaller-matrix/signaller/internal/models/devices"
"github.com/signaller-matrix/signaller/internal/models/events"
2019-08-03 14:19:18 +00:00
"github.com/signaller-matrix/signaller/internal/models/sync"
)
2019-07-18 14:10:43 +00:00
type Backend interface {
Register(username, password, device string) (user User, token string, err models.ApiError)
Login(username, password, device string) (user User, token string, err models.ApiError)
2019-07-23 14:37:02 +00:00
GetUserByToken(token string) (user User)
2019-08-02 13:17:18 +00:00
GetUserByName(userName string) User
2019-07-31 15:01:20 +00:00
GetRoomByID(id string) Room
PublicRooms(filter string) []Room
2019-08-03 07:54:32 +00:00
ValidateUsernameFunc() func(string) error
GetEventByID(id string) events.Event
PutEvent(events.Event) error
GetRoomByAlias(string) Room
GetEventsSince(user User, sinceToken string, limit int) []events.Event
GetRecentEventsOfRoom(roomID string, user User, limit int) []events.Event
Hostname() string
Rooms() map[string]Room // RoomID : Room
Aliases() map[string]Room // Alias : Room
PutRoom(room Room) error
2019-07-18 14:10:43 +00:00
}
type Room interface {
ID() string
Creator() string
Users() []string
AliasName() string
2019-08-08 14:38:30 +00:00
Aliases() []string
Name() string
Topic() string
2019-07-31 15:01:20 +00:00
Visibility() createroom.VisibilityType
WorldReadable() bool
GuestCanJoin() bool
AvatarURL() string
2019-08-02 16:46:46 +00:00
State() createroom.Preset
PutInvited(invitedID string)
PutJoined(joinedID string)
}
type User interface {
Name() string
ID() string
Password() string
CreateRoom(request createroom.Request) (Room, models.ApiError)
LeaveRoom(room Room) models.ApiError
SetTopic(room Room, topic string) models.ApiError
SendMessage(room Room, text string) models.ApiError
2019-07-24 15:04:45 +00:00
JoinedRooms() []Room
2019-07-25 16:56:31 +00:00
ChangePassword(newPassword string)
Devices() []devices.Device
SetRoomVisibility(Room, createroom.VisibilityType) models.ApiError
2019-07-24 14:31:07 +00:00
Logout(token string)
2019-07-24 14:15:07 +00:00
LogoutAll()
JoinRoom(Room) models.ApiError
2019-08-04 08:47:58 +00:00
Invite(Room, User) models.ApiError
AddFilter(filterID string, filter common.Filter)
GetFilterByID(filterID string) *common.Filter
AddRoomAlias(Room, string) models.ApiError
DeleteRoomAlias(string) models.ApiError
2019-08-11 13:53:18 +00:00
Sync(token string, request sync.SyncRequest) (response *sync.SyncReply, err models.ApiError)
}