signaller/internal/backend.go
2019-07-29 19:32:38 +05:00

42 lines
1.2 KiB
Go

package internal
import (
"github.com/nxshock/signaller/internal/models"
"github.com/nxshock/signaller/internal/models/createroom"
"github.com/nxshock/signaller/internal/models/devices"
"github.com/nxshock/signaller/internal/models/rooms"
"github.com/nxshock/signaller/internal/models/sync"
)
type Backend interface {
Register(username, password, device string) (user User, token string, err *models.ApiError)
Login(username, password, device string) (token string, err *models.ApiError)
GetUserByToken(token string) (user User)
Sync(token string, request sync.SyncRequest) (response *sync.SyncReply, err *models.ApiError)
}
type Room interface {
ID() string
Creator() User
Users() []User
AliasName() string
Name() string
Topic() string
Events() []rooms.Event
}
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
JoinedRooms() []Room
ChangePassword(newPassword string)
Devices() []devices.Device
Logout(token string)
LogoutAll()
}