models and doc update
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
ycc
2024-05-22 10:06:00 +02:00
parent 2e2ebad364
commit d657e64ae4
25 changed files with 3675 additions and 427 deletions

8
client/avatar.go Normal file
View File

@ -0,0 +1,8 @@
package client
import "time"
type Avatar struct {
File string
Date time.Time
}

View File

@ -1,6 +1,8 @@
package helpers
import "forge.redroom.link/yves/meowlib/client"
import (
"forge.redroom.link/yves/meowlib/client"
)
func PrepareUserMessage(message string, srvuid string, peer_idx int, replyToUid string, filelist []string) ([]byte, string, error) {
@ -39,3 +41,37 @@ func PrepareUserMessage(message string, srvuid string, peer_idx int, replyToUid
}
return data, "", nil
}
func SendAck(messageUid string, srvuid string, peer_idx int, received int64, processed int64) ([]byte, string, error) {
peer := client.GetConfig().GetIdentity().Peers[peer_idx]
srv, err := client.GetConfig().GetIdentity().MessageServers.LoadServer(srvuid)
if err != nil {
return nil, "PrepareServerMessage : LoadServer", err
}
// Creating User message
usermessage, err := peer.BuildSimpleUserMessage(nil)
if err != nil {
return nil, "PrepareServerMessage : BuildSimpleUserMessage", err
}
usermessage.Status.Uuid = messageUid
usermessage.Status.Received = uint64(received)
usermessage.Status.Processed = uint64(processed)
// Prepare cyphered + packed user message
packedMsg, err := peer.ProcessOutboundUserMessage(usermessage)
if err != nil {
return nil, "PrepareServerMessage : ProcessOutboundUserMessage", err
}
// Creating Server message for transporting the user message
toServerMessage := srv.BuildToServerMessageFromUserMessage(packedMsg)
data, err := srv.ProcessOutboundMessage(toServerMessage)
if err != nil {
return nil, "PrepareServerMessage : ProcessOutboundMessage", err
}
// Store message
err = peer.StoreMessage(usermessage, nil)
if err != nil {
return nil, "PrepareServerMessage : StoreMessage", err
}
return data, "", nil
}

View File

@ -18,10 +18,12 @@ const maxHiddenCount = 30
type Identity struct {
Nickname string `json:"nickname,omitempty"`
DefaultAvatar string `json:"default_avatar,omitempty"`
Avatars []Avatar `json:"avatars,omitempty"`
RootKp meowlib.KeyPair `json:"id_kp,omitempty"`
Status string `json:"status,omitempty"`
Peers PeerList `json:"peers,omitempty"`
HiddenPeers [][]byte `json:"hidden_peers,omitempty"`
Personae PeerList `json:"faces,omitempty"`
Device meowlib.KeyPair `json:"device,omitempty"`
KnownServers ServerList `json:"known_servers,omitempty"`
MessageServers ServerStorage `json:"message_servers,omitempty"`

View File

@ -14,12 +14,14 @@ import (
// Peer manages the peer messaging functions
// - Building simple user messages
// - Utility functions for packing/unpacking, encrypting/decrypting messages for peer communication
// - Peer might be of type "contact" "group" "personnae" "channel" "device" "sensor"
type Peer struct {
Uid string `json:"uid,omitempty"`
Name string `json:"name,omitempty"`
Avatar string `json:"avatar,omitempty"`
MyName string `json:"my_name,omitempty"`
MyAvatar string `json:"my_avatar,omitempty"`
Uid string `json:"uid,omitempty"`
Name string `json:"name,omitempty"`
Avatar string `json:"avatar,omitempty"`
Avatars []Avatar `json:"avatars,omitempty"`
MyName string `json:"my_name,omitempty"`
MyAvatar string `json:"my_avatar,omitempty"`
// Conversation []InternalMessage `json:"conversation,omitempty"`
// My own keys for that peer
MyIdentity meowlib.KeyPair `json:"my_identity,omitempty"`
@ -46,7 +48,8 @@ type Peer struct {
MatriochkaMode bool `json:"matriochka_mode,omitempty"`
DirectMode bool `json:"direct_mode,omitempty"`
DbIds []string `json:"db_ids,omitempty"`
IsDevice bool `json:"is_device,omitempty"`
Type string `json:"type,omitempty"`
PersonnaeDbId string `json:"personnae_db_id,omitempty"`
dbPassword string
}

View File

@ -33,6 +33,7 @@ type Server struct {
Country string `json:"country,omitempty"`
AllowedDelay int `json:"allowed_delay,omitempty"`
Backup bool `json:"backup,omitempty"`
WebRTC bool `json:"webrtc,omitempty"`
}
// CreateServerFromUrl creates a server from a basic url, ex : https://my.meowserver.example:8443/meow/
@ -152,6 +153,7 @@ func (ints *Server) BuildMessageSendingMessage(usermsg *meowlib.PackedUserMessag
return out, nil
}
// ! Unfinished unused ?
// BuildMessageRequestMessage creates a message lookup message to server and returns it as protobuf serialized byte array
func (ints *Server) BuildMessageRequestMessage(lookupKeys []string) ([]byte, error) {
var msg meowlib.ToServerMessage
@ -165,6 +167,27 @@ func (ints *Server) BuildMessageRequestMessage(lookupKeys []string) ([]byte, err
return out, nil
}
// BuildVideoRoomRequestMessage creates a video room request to server and returns it as protobuf serialized byte array
func (ints *Server) BuildVideoRoomRequestMessage(users []string, expiry uint64) ([]byte, error) {
var msg meowlib.ToServerMessage
msg.Uuid = uuid.New().String()
msg.Type = "1"
msg.From = ints.UserKp.Public
// declare an array of meow.VideoCredential
videocreds := make([]*meowlib.VideoCredential, len(users))
for idx := range users {
videocreds[idx] = &meowlib.VideoCredential{
Username: users[idx],
}
}
msg.VideoData.Credentials = videocreds
out, err := proto.Marshal(&msg)
if err != nil {
return nil, err
}
return out, nil
}
// BuildToServerMessageInvitation creates an invitation message to server and returns it as a meowlib.ToServerMessage
// it takes as input a contactcard generated by Identity.InvitePeer
func (ints *Server) BuildToServerMessageInvitationCreation(invitation *meowlib.ContactCard, password string, timeout int, shortCodeLen int) (*meowlib.ToServerMessage, error) {