dispatch/server/json.go

224 lines
3.1 KiB
Go

package server
import (
"crypto/x509"
"github.com/mailru/easyjson"
"github.com/khlieng/dispatch/pkg/irc"
"github.com/khlieng/dispatch/storage"
)
type WSRequest struct {
Type string
Data easyjson.RawMessage
}
type WSResponse struct {
Type string
Data interface{}
}
type Server struct {
*storage.Server
Status ConnectionUpdate
Features map[string]interface{}
}
type Features struct {
Server string
Features map[string]interface{}
}
type ServerName struct {
Server string
Name string
}
type ReconnectSettings struct {
Server string
SkipVerify bool
}
type ConnectionUpdate struct {
Server string
Connected bool
Error string
ErrorType string
}
func newConnectionUpdate(server string, state irc.ConnectionState) ConnectionUpdate {
status := ConnectionUpdate{
Server: server,
Connected: state.Connected,
}
if state.Error != nil {
status.Error = state.Error.Error()
if _, ok := state.Error.(x509.UnknownAuthorityError); ok {
status.ErrorType = "verify"
}
}
return status
}
type Nick struct {
Server string
Old string `json:"oldNick,omitempty"`
New string `json:"newNick,omitempty"`
}
type NickFail struct {
Server string
}
type Join struct {
Server string
User string
Channels []string
}
type Part struct {
Server string
User string
Channel string
Channels []string
Reason string
}
type Mode struct {
Server string
Channel string
User string
Add string
Remove string
}
type Quit struct {
Server string
User string
Reason string
}
type Message struct {
ID string
Server string
From string
To string
Content string
Type string
}
type Messages struct {
Server string
To string
Messages []storage.Message
Prepend bool
Next string
}
type Topic struct {
Server string
Channel string
Topic string
Nick string
}
type Userlist struct {
Server string
Channel string
Users []string
}
type MOTD struct {
Server string
Title string
Content []string
}
type Invite struct {
Server string
Channel string
User string
}
type Kick struct {
Server string
Channel string
User string
}
type Whois struct {
Server string
User string
}
type WhoisReply struct {
Nick string
Username string
Host string
Realname string
Server string
Channels []string
}
type Away struct {
Server string
Message string
}
type Raw struct {
Server string
Message string
}
type SearchRequest struct {
Server string
Channel string
Phrase string
}
type SearchResult struct {
Server string
Channel string
Results []storage.Message
}
type ClientCert struct {
Cert string
Key string
}
type FetchMessages struct {
Server string
Channel string
Next string
}
type Error struct {
Server string
Message string
}
type IRCError struct {
Server string
Target string
Message string
}
type ChannelSearch struct {
Server string
Q string
Start int
}
type ChannelSearchResult struct {
Results []*storage.ChannelListItem
Start int
}
type ChannelForward struct {
Server string
Old string
New string
}