Refactor and comment

This commit is contained in:
ycc
2023-11-08 21:52:09 +01:00
parent 08ff9d58b8
commit 04a390d558
11 changed files with 271 additions and 294 deletions

View File

@ -9,16 +9,22 @@ import (
"google.golang.org/protobuf/proto"
)
// InternalServer manages server related operations
// - Sending messages for server usage
// - Two first steps of an invitation
// - User message sending
// - Messages lookup requests
// - Utility functions for packing/unpacking, encrypting/decrypting messages for server communication
type InternalServer struct {
ServerData meowlib.Server `json:"server_data,omitempty"`
Presence bool `json:"presence,omitempty"`
LastCheck time.Time `json:"last_check,omitempty"`
Uptime time.Duration `json:"uptime,omitempty"`
Login string `json:"login,omitempty"`
Password string `json:"password,omitempty"`
Me meowlib.KeyPair `json:"me,omitempty"`
Country string `json:"country,omitempty"`
AllowedDelay int `json:"allowed_delay,omitempty"`
ServerData meowlib.ServerCard `json:"server_data,omitempty"`
Presence bool `json:"presence,omitempty"`
LastCheck time.Time `json:"last_check,omitempty"`
Uptime time.Duration `json:"uptime,omitempty"`
Login string `json:"login,omitempty"`
Password string `json:"password,omitempty"`
Me meowlib.KeyPair `json:"me,omitempty"`
Country string `json:"country,omitempty"`
AllowedDelay int `json:"allowed_delay,omitempty"`
}
type InternalServerList struct {
@ -32,7 +38,7 @@ func InternalServerFromUrl(url string) *InternalServer {
return &is
}
func InternalServerFromServer(server *meowlib.Server) *InternalServer {
func InternalServerFromServer(server *meowlib.ServerCard) *InternalServer {
var is InternalServer
is.ServerData = *server
is.Me = meowlib.NewKeyPair()
@ -92,7 +98,6 @@ func (ints *InternalServer) BuildMessageRequestMessage(lookupKeys []string) ([]b
msg.Uuid = uuid.New().String()
msg.Type = "1"
msg.From = ints.Me.Public
out, err := proto.Marshal(&msg)
if err != nil {
return nil, err
@ -100,8 +105,8 @@ func (ints *InternalServer) BuildMessageRequestMessage(lookupKeys []string) ([]b
return out, nil
}
// BuildToServerMessageInvitation creates an invintatio message to server from a single packed user message and returns it as a meowlib.ToServerMessage
func (ints *InternalServer) BuildToServerMessageInvitation(invitation *meowlib.ContactCard, password string, timeout int, urllen int) (*meowlib.ToServerMessage, error) {
// BuildToServerMessageInvitation creates an invitation message to server and returns it as a meowlib.ToServerMessage
func (ints *InternalServer) BuildToServerMessageInvitationCreation(invitation *meowlib.ContactCard, password string, timeout int, urllen int) (*meowlib.ToServerMessage, error) {
var msg meowlib.ToServerMessage
var inv meowlib.Invitation
payload, err := invitation.Compress()
@ -110,6 +115,7 @@ func (ints *InternalServer) BuildToServerMessageInvitation(invitation *meowlib.C
}
msg.Type = "1"
msg.From = ints.Me.Public
inv.Step = 1
inv.Password = password
inv.Timeout = int32(timeout)
inv.Idlen = int32(urllen)
@ -118,6 +124,19 @@ func (ints *InternalServer) BuildToServerMessageInvitation(invitation *meowlib.C
return &msg, nil
}
// BuildToServerMessageInvitationRequest requests invitation with provided id from server and returns it as a meowlib.ToServerMessage
func (ints *InternalServer) BuildToServerMessageInvitationRequest(url string, password string) (*meowlib.ToServerMessage, error) {
var msg meowlib.ToServerMessage
var inv meowlib.Invitation
msg.Type = "1"
msg.From = ints.Me.Public
inv.Step = 2
inv.Password = password
inv.Id = url
msg.Invitation = &inv
return &msg, nil
}
func (ints *InternalServer) PackServerMessage(payload []byte, signature []byte) (protoPackedMessage []byte, err error) {
var msg meowlib.PackedServerMessage
msg.From = ints.Me.Public