129 lines
3.9 KiB
Go
129 lines
3.9 KiB
Go
|
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
|
||
|
FetchConversationInfo(handle string) (*model.Conversation, error)
|
||
|
AcceptConversation(handle string) error
|
||
|
SetConversationAttribute(handle string, path attr.ScopedZonedPath, value string) error
|
||
|
GetConversationAttribute(handle string, path attr.ScopedZonedPath) (string, error)
|
||
|
DeleteConversation(handle string) error
|
||
|
|
||
|
GetChannelMessage(converstion int, channel int, id int) (string, model.Attributes, error)
|
||
|
|
||
|
ShareFile(fileKey string, serializedManifest string)
|
||
|
}
|