Split server and serverlist + serverlist methods
	
		
			
	
		
	
	
		
	
		
			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:
		@@ -27,17 +27,14 @@ type Server struct {
 | 
				
			|||||||
	AllowedDelay int                `json:"allowed_delay,omitempty"`
 | 
						AllowedDelay int                `json:"allowed_delay,omitempty"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ServerList struct {
 | 
					// CreateServerFromUrl creates a server from a basic url, ex : https://my.meowserver.example:8443/meow/
 | 
				
			||||||
	Name    string
 | 
					func CreateServerFromUrl(url string) *Server {
 | 
				
			||||||
	Servers []Server
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func ServerFromUrl(url string) *Server {
 | 
					 | 
				
			||||||
	var is Server
 | 
						var is Server
 | 
				
			||||||
	is.ServerData.Url = url
 | 
						is.ServerData.Url = url
 | 
				
			||||||
	return &is
 | 
						return &is
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Create a server from a server card
 | 
				
			||||||
func CreateServerFromServerCard(server *meowlib.ServerCard) *Server {
 | 
					func CreateServerFromServerCard(server *meowlib.ServerCard) *Server {
 | 
				
			||||||
	var is Server
 | 
						var is Server
 | 
				
			||||||
	is.ServerData = *server
 | 
						is.ServerData = *server
 | 
				
			||||||
@@ -45,12 +42,6 @@ func CreateServerFromServerCard(server *meowlib.ServerCard) *Server {
 | 
				
			|||||||
	return &is
 | 
						return &is
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (sl *ServerList) AddUrls(urls []string) {
 | 
					 | 
				
			||||||
	for _, url := range urls {
 | 
					 | 
				
			||||||
		sl.Servers = append(sl.Servers, *ServerFromUrl(url))
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// AsymEncryptMessage prepares a message to send to a specific internal server
 | 
					// AsymEncryptMessage prepares a message to send to a specific internal server
 | 
				
			||||||
func (ints *Server) AsymEncryptMessage(Message []byte) (*meowlib.EncryptedMessage, error) {
 | 
					func (ints *Server) AsymEncryptMessage(Message []byte) (*meowlib.EncryptedMessage, error) {
 | 
				
			||||||
	var enc *meowlib.EncryptedMessage
 | 
						var enc *meowlib.EncryptedMessage
 | 
				
			||||||
@@ -106,7 +97,7 @@ func (ints *Server) BuildMessageRequestMessage(lookupKeys []string) ([]byte, err
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// BuildToServerMessageInvitation creates an invitation message to server and returns it as a meowlib.ToServerMessage
 | 
					// BuildToServerMessageInvitation creates an invitation message to server and returns it as a meowlib.ToServerMessage
 | 
				
			||||||
func (ints *Server) BuildToServerMessageInvitationCreation(invitation *meowlib.ContactCard, password string, timeout int, urllen int) (*meowlib.ToServerMessage, error) {
 | 
					func (ints *Server) BuildToServerMessageInvitationCreation(invitation *meowlib.ContactCard, password string, timeout int, invitationIdLen int) (*meowlib.ToServerMessage, error) {
 | 
				
			||||||
	var msg meowlib.ToServerMessage
 | 
						var msg meowlib.ToServerMessage
 | 
				
			||||||
	var inv meowlib.Invitation
 | 
						var inv meowlib.Invitation
 | 
				
			||||||
	payload, err := invitation.Compress()
 | 
						payload, err := invitation.Compress()
 | 
				
			||||||
@@ -118,25 +109,26 @@ func (ints *Server) BuildToServerMessageInvitationCreation(invitation *meowlib.C
 | 
				
			|||||||
	inv.Step = 1
 | 
						inv.Step = 1
 | 
				
			||||||
	inv.Password = password
 | 
						inv.Password = password
 | 
				
			||||||
	inv.Timeout = int32(timeout)
 | 
						inv.Timeout = int32(timeout)
 | 
				
			||||||
	inv.Idlen = int32(urllen)
 | 
						inv.Idlen = int32(invitationIdLen)
 | 
				
			||||||
	inv.Payload = payload
 | 
						inv.Payload = payload
 | 
				
			||||||
	msg.Invitation = &inv
 | 
						msg.Invitation = &inv
 | 
				
			||||||
	return &msg, nil
 | 
						return &msg, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// BuildToServerMessageInvitationRequest requests invitation with provided id from server and returns it as a meowlib.ToServerMessage
 | 
					// BuildToServerMessageInvitationRequest requests invitation with provided id from server and returns it as a meowlib.ToServerMessage
 | 
				
			||||||
func (ints *Server) BuildToServerMessageInvitationRequest(url string, password string) (*meowlib.ToServerMessage, error) {
 | 
					func (ints *Server) BuildToServerMessageInvitationRequest(invitationId string, password string) (*meowlib.ToServerMessage, error) {
 | 
				
			||||||
	var msg meowlib.ToServerMessage
 | 
						var msg meowlib.ToServerMessage
 | 
				
			||||||
	var inv meowlib.Invitation
 | 
						var inv meowlib.Invitation
 | 
				
			||||||
	msg.Type = "1"
 | 
						msg.Type = "1"
 | 
				
			||||||
	msg.From = ints.Me.Public
 | 
						msg.From = ints.Me.Public
 | 
				
			||||||
	inv.Step = 2
 | 
						inv.Step = 2
 | 
				
			||||||
	inv.Password = password
 | 
						inv.Password = password
 | 
				
			||||||
	inv.Id = url
 | 
						inv.Id = invitationId
 | 
				
			||||||
	msg.Invitation = &inv
 | 
						msg.Invitation = &inv
 | 
				
			||||||
	return &msg, nil
 | 
						return &msg, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// PackServerMessage
 | 
				
			||||||
func (ints *Server) PackServerMessage(payload []byte, signature []byte) (protoPackedMessage []byte, err error) {
 | 
					func (ints *Server) PackServerMessage(payload []byte, signature []byte) (protoPackedMessage []byte, err error) {
 | 
				
			||||||
	var msg meowlib.PackedServerMessage
 | 
						var msg meowlib.PackedServerMessage
 | 
				
			||||||
	msg.From = ints.Me.Public
 | 
						msg.From = ints.Me.Public
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										49
									
								
								client/serverlist.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								client/serverlist.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,49 @@
 | 
				
			|||||||
 | 
					package client
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import "errors"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ServerList manages lists that are used in Identity
 | 
				
			||||||
 | 
					//   - Message servers list
 | 
				
			||||||
 | 
					//   - ArchiveServers lists
 | 
				
			||||||
 | 
					//   - Owned servers lists
 | 
				
			||||||
 | 
					//   - Matriochka paths
 | 
				
			||||||
 | 
					type ServerList struct {
 | 
				
			||||||
 | 
						Name    string
 | 
				
			||||||
 | 
						Servers []Server
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// FilterByIdxs returns a filtered server list filtered according to an index list
 | 
				
			||||||
 | 
					func (sl *ServerList) FilterByIdxs(MessageServerIdxs []int) (filtered *ServerList, err error) {
 | 
				
			||||||
 | 
						filtered.Servers = []Server{}
 | 
				
			||||||
 | 
						for _, i := range MessageServerIdxs {
 | 
				
			||||||
 | 
							if i > len(sl.Servers)-1 {
 | 
				
			||||||
 | 
								return nil, errors.New("requested server out of range of defined message servers")
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						for _, i := range MessageServerIdxs {
 | 
				
			||||||
 | 
							filtered.Servers = append(filtered.Servers, sl.Servers[i])
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return filtered, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// GetServerByIdx returns a server from it's index
 | 
				
			||||||
 | 
					func (sl *ServerList) GetServerByIdx(idx int) (server *Server, err error) {
 | 
				
			||||||
 | 
						return &sl.Servers[idx], nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// GetServerByPubkey returns a server from it's public key
 | 
				
			||||||
 | 
					func (sl *ServerList) GetServerByPubkey(pubkey string) (filtered *Server) {
 | 
				
			||||||
 | 
						for _, srv := range sl.Servers {
 | 
				
			||||||
 | 
							if srv.ServerData.PublicKey == pubkey {
 | 
				
			||||||
 | 
								return &srv
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// AddUrls is a simple utility functon used mainly as a shortcut for testing purposes
 | 
				
			||||||
 | 
					func (sl *ServerList) AddUrls(urls []string) {
 | 
				
			||||||
 | 
						for _, url := range urls {
 | 
				
			||||||
 | 
							sl.Servers = append(sl.Servers, *CreateServerFromUrl(url))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user