add uid to peer + helper methods + http
Some checks failed
continuous-integration/drone/push Build is failing
Some checks failed
continuous-integration/drone/push Build is failing
This commit is contained in:
135
client/helpers/invitationCreateHelper.go
Normal file
135
client/helpers/invitationCreateHelper.go
Normal file
@ -0,0 +1,135 @@
|
||||
package helpers
|
||||
|
||||
import (
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"forge.redroom.link/yves/meowlib"
|
||||
"forge.redroom.link/yves/meowlib/client"
|
||||
)
|
||||
|
||||
// InvitationCreatePeer creates a new peer and returns it
|
||||
// Called by invitation initiator
|
||||
// name: the name of the peer
|
||||
// myNickname: my nickname for that peer
|
||||
// invitationMessage: the message to send to the peer
|
||||
// serverUids: the list of server uids
|
||||
func InvitationCreatePeer(name string, myNickname string, invitationMessage string, serverUids []string) (*client.Peer, string, error) {
|
||||
|
||||
mynick := myNickname
|
||||
if myNickname == "" {
|
||||
mynick = client.GetConfig().GetIdentity().Nickname
|
||||
}
|
||||
|
||||
// build my contact card for that friend
|
||||
peer, err := client.GetConfig().GetIdentity().InvitePeer(mynick, myNickname, serverUids, invitationMessage)
|
||||
if err != nil {
|
||||
return nil, "InvitationCreate: InvitePeer", err
|
||||
}
|
||||
client.GetConfig().GetIdentity().Save()
|
||||
|
||||
return peer, "", nil
|
||||
}
|
||||
|
||||
// InvitationCreateFile creates a new peer and writes the invitation to a file
|
||||
// Called by invitation initiator
|
||||
// name: the name of the peer
|
||||
// myNickname: my nickname for that peer
|
||||
// invitationMessage: the message to send to the peer
|
||||
// serverUids: the list of server uids
|
||||
// format: the format of the file (qr or mwiv)
|
||||
func InvitationCreateFile(name string, myNickname string, invitationMessage string, serverUids []string, format string) (*client.Peer, string, error) {
|
||||
|
||||
peer, errdata, err := InvitationCreatePeer(name, myNickname, invitationMessage, serverUids)
|
||||
if err != nil {
|
||||
return nil, errdata, err
|
||||
}
|
||||
c := client.GetConfig()
|
||||
var filename string = ""
|
||||
if format == "qr" {
|
||||
filename = c.StoragePath + string(os.PathSeparator) + peer.MyName + "-" + peer.Name + ".png"
|
||||
err := peer.GetMyContact().WriteQr(filename)
|
||||
if err != nil {
|
||||
return nil, "InvitationCreateFile: WriteQr", err
|
||||
}
|
||||
} else {
|
||||
filename = c.StoragePath + string(os.PathSeparator) + peer.MyName + "-" + peer.Name + ".mwiv"
|
||||
err := peer.GetMyContact().WriteCompressed(filename)
|
||||
if err != nil {
|
||||
return nil, "InvitationCreateFile: WriteCompressed", err
|
||||
}
|
||||
}
|
||||
return peer, "", nil
|
||||
}
|
||||
|
||||
// InvitationCreateMessage creates a new invitation message for an invited peer
|
||||
// Called by invitation initiator
|
||||
// invitationId: the invitation id of the peer
|
||||
// invitationServerUid: the uid of the server for sending the invitation
|
||||
// timeOut: the timeout for the invitation
|
||||
// urlLen: the length of the invitation url
|
||||
// password: the password for the invitation
|
||||
func InvitationCreateMessage(invitationId string, invitationServerUid string, timeOut int, urlLen int, password string) ([]byte, string, error) {
|
||||
|
||||
// lookup for peer with "invitation_id"
|
||||
var myContact *meowlib.ContactCard
|
||||
for i := 0; i < len(client.GetConfig().GetIdentity().Peers); i++ {
|
||||
if client.GetConfig().GetIdentity().Peers[i].InvitationId == invitationId {
|
||||
myContact = client.GetConfig().GetIdentity().Peers[i].GetMyContact()
|
||||
break
|
||||
}
|
||||
}
|
||||
// todo handle not found !!
|
||||
// lookup for message server with "invitation_server"
|
||||
invitationServer, err := client.GetConfig().GetIdentity().MessageServers.LoadServer(invitationServerUid) //.GetServerByIdx(int(jsoninv["invitation_server"].(float64)))
|
||||
if err != nil {
|
||||
return nil, "InvitationCreateMessage: LoadServer", err
|
||||
}
|
||||
// call server.buildinviattion
|
||||
msg, err := invitationServer.BuildToServerMessageInvitationCreation(myContact, password, timeOut, urlLen)
|
||||
if err != nil {
|
||||
return nil, "InvitationCreateMessage: BuildToServerMessageInvitationCreation", err
|
||||
}
|
||||
// fmt.Println("Invitation Create")
|
||||
// fmt.Println(hex.EncodeToString(msg.Invitation.Payload))
|
||||
bytemsg, err := invitationServer.ProcessOutboundMessage(msg)
|
||||
if err != nil {
|
||||
return nil, "InvitationCreateMessage: ProcessOutboundMessage", err
|
||||
}
|
||||
return bytemsg, "", nil
|
||||
}
|
||||
|
||||
// InvitationCreateReadResponse reads the response of an invitation creation (url, expiry)
|
||||
// Called by invitation initiator
|
||||
// invitationServerUid: the uid of the server where we sent the invitation
|
||||
// invitationResponse: the response we got from the server
|
||||
func InvitationCreateReadResponse(invitationServerUid string, invitationResponse []byte) (*meowlib.Invitation, string, error) {
|
||||
|
||||
server, err := client.GetConfig().GetIdentity().MessageServers.LoadServer(invitationServerUid)
|
||||
if err != nil {
|
||||
return nil, "InvitationCreateReadResponse: LoadServer", err
|
||||
}
|
||||
serverMsg, err := server.ProcessInboundServerResponse(invitationResponse)
|
||||
if err != nil {
|
||||
return nil, "InvitationCreateReadResponse: ProcessInboundServerResponse", err
|
||||
}
|
||||
|
||||
return serverMsg.Invitation, "", nil
|
||||
}
|
||||
|
||||
// InvitationSetUrlInfo sets the url info for an invitation
|
||||
// Called by invitation initiator
|
||||
// invitationId: the invitation id of the peer
|
||||
// url: the url of the invitation we got from the server
|
||||
func InvitationSetUrlInfo(invitationId string, url string, expiry int64) {
|
||||
|
||||
for i := 0; i < len(client.GetConfig().GetIdentity().Peers); i++ {
|
||||
if client.GetConfig().GetIdentity().Peers[i].InvitationId == invitationId {
|
||||
client.GetConfig().GetIdentity().Peers[i].InvitationUrl = url
|
||||
client.GetConfig().GetIdentity().Peers[i].InvitationExpiry = time.Unix(expiry, 0)
|
||||
break
|
||||
}
|
||||
}
|
||||
client.GetConfig().GetIdentity().Save()
|
||||
|
||||
}
|
Reference in New Issue
Block a user