package peer import ( "cwtch.im/cwtch/event" "cwtch.im/cwtch/model" "cwtch.im/cwtch/model/attr" "cwtch.im/cwtch/protocol/connections" "git.openprivacy.ca/cwtch.im/tapir/primitives" "git.openprivacy.ca/openprivacy/connectivity" ) // AccessPeeringState provides access to functions relating to the underlying connections of a peer. type AccessPeeringState interface { GetPeerState(string) (connections.ConnectionState, bool) } // ModifyPeeringState is a meta-interface intended to restrict callers to modify-only access to connection peers type ModifyPeeringState interface { BlockUnknownConnections() AllowUnknownConnections() PeerWithOnion(string) JoinServer(string) error } // ModifyContactsAndPeers is a meta-interface intended to restrict a call to reading and modifying contacts // and peers. type ModifyContactsAndPeers interface { ModifyPeeringState } // ReadServers provides access to the servers type ReadServers interface { GetServers() []string } // ReadGroups provides read-only access to group state type ReadGroups interface { GetGroup(string) *model.Group GetGroupState(string) (connections.ConnectionState, bool) GetGroups() []string ExportGroup(string) (string, error) } // ModifyGroups provides write-only access add/edit/remove new groups type ModifyGroups interface { ImportGroup(string) (string, error) StartGroup(string) (string, string, error) } // ModifyServers provides write-only access to servers type ModifyServers interface { AddServer(string) error ResyncServer(onion string) error } // SendMessages enables a caller to sender messages to a contact type SendMessages interface { SendMessage(handle string, message string) error // Deprecated: is unsafe SendGetValToPeer(string, string, string) SendScopedZonedGetValToContact(handle string, scope attr.Scope, zone attr.Zone, key string) // TODO // Deprecated use overlays instead InviteOnionToGroup(string, string) error } // ModifyMessages enables a caller to modify the messages in a timeline type ModifyMessages interface { UpdateMessageFlags(string, int, uint64) } // CwtchPeer provides us with a way of testing systems built on top of cwtch without having to // directly implement a cwtchPeer. type CwtchPeer interface { // Core Cwtch Peer Functions that should not be exposed to // most functions Init(event.Manager) GetIdentity() primitives.Identity GenerateProtocolEngine(acn connectivity.ACN, bus event.Manager) connections.Engine AutoHandleEvents(events []event.Type) Listen() StartPeersConnections() StartServerConnections() Shutdown() // GetOnion is deprecated. If you find yourself needing to rely on this method it is time // to consider replacing this with a GetAddress(es) function that can fully expand cwtch beyond the boundaries // of tor v3 onion services. // Deprecated GetOnion() string // SetScopedZonedAttribute allows the setting of an attribute by scope and zone // scope.zone.key = value SetScopedZonedAttribute(scope attr.Scope, zone attr.Zone, key string, value string) // GetScopedZonedAttribute allows the retrieval of an attribute by scope and zone // scope.zone.key = value GetScopedZonedAttribute(scope attr.Scope, zone attr.Zone, key string) (string, bool) AccessPeeringState ModifyPeeringState ReadGroups ModifyGroups ReadServers ModifyServers SendMessages ModifyMessages // New Unified Conversation Interfaces NewContactConversation(handle string, acl model.AccessControl, accepted bool) error FetchConversations() ([]*model.Conversation, error) FetchConversationInfo(handle string) (*model.Conversation, error) AcceptConversation(conversation int) error SetConversationAttribute(conversation int, path attr.ScopedZonedPath, value string) error GetConversationAttribute(conversation int, path attr.ScopedZonedPath) (string, error) DeleteConversation(conversation int) error GetChannelMessage(conversation int, channel int, id int) (string, model.Attributes, error) ShareFile(fileKey string, serializedManifest string) }