Documentation
¶
Overview ¶
Package remote implements syncronization between qri instances
Index ¶
- Variables
- func Address(cfg *config.Config, name string) (addr string, err error)
- func OplogFromContext(ctx context.Context) (l *oplog.Log, ok bool)
- func VerifySigParams(pubkey crypto.PubKey, params map[string]string) (bool, error)
- type Client
- type Feeds
- type Hook
- type MockClient
- func (c *MockClient) AddDataset(ctx context.Context, ref *reporef.DatasetRef, remoteAddr string) error
- func (c *MockClient) CloneLogs(ctx context.Context, ref dsref.Ref, remoteAddr string) error
- func (c *MockClient) Feeds(ctx context.Context, remoteAddr string) (map[string][]dsref.VersionInfo, error)
- func (c *MockClient) FetchLogs(ctx context.Context, ref dsref.Ref, remoteAddr string) (*oplog.Log, error)
- func (c *MockClient) ListDatasets(ctx context.Context, ds *reporef.DatasetRef, term string, offset, limit int) (res []reporef.DatasetRef, err error)
- func (c *MockClient) NewRemoteRefResolver(addr string) dsref.Resolver
- func (c *MockClient) Preview(ctx context.Context, ref dsref.Ref, remoteAddr string) (*dataset.Dataset, error)
- func (c *MockClient) PullDataset(ctx context.Context, ref *reporef.DatasetRef, remoteAddr string) error
- func (c *MockClient) PushDataset(ctx context.Context, ref reporef.DatasetRef, remoteAddr string) error
- func (c *MockClient) PushLogs(ctx context.Context, ref dsref.Ref, remoteAddr string) error
- func (c *MockClient) RemoveDataset(ctx context.Context, ref reporef.DatasetRef, remoteAddr string) error
- func (c *MockClient) RemoveLogs(ctx context.Context, ref dsref.Ref, remoteAddr string) error
- func (c *MockClient) ResolveHeadRef(ctx context.Context, ref *reporef.DatasetRef, remoteAddr string) error
- type Options
- type PeerSyncClient
- func (c *PeerSyncClient) AddDataset(ctx context.Context, ref *reporef.DatasetRef, remoteAddr string) (err error)
- func (c *PeerSyncClient) CloneLogs(ctx context.Context, ref dsref.Ref, remoteAddr string) error
- func (c *PeerSyncClient) Feeds(ctx context.Context, remoteAddr string) (map[string][]dsref.VersionInfo, error)
- func (c *PeerSyncClient) FetchLogs(ctx context.Context, ref dsref.Ref, remoteAddr string) (*oplog.Log, error)
- func (c *PeerSyncClient) ListDatasets(ctx context.Context, ds *reporef.DatasetRef, term string, offset, limit int) (res []reporef.DatasetRef, err error)deprecated
- func (c *PeerSyncClient) NewRemoteRefResolver(remoteAddr string) dsref.Resolver
- func (c *PeerSyncClient) Preview(ctx context.Context, ref dsref.Ref, remoteAddr string) (*dataset.Dataset, error)
- func (c *PeerSyncClient) PullDataset(ctx context.Context, ref *reporef.DatasetRef, remoteAddr string) error
- func (c *PeerSyncClient) PushDataset(ctx context.Context, ref reporef.DatasetRef, remoteAddr string) error
- func (c *PeerSyncClient) PushLogs(ctx context.Context, ref dsref.Ref, remoteAddr string) error
- func (c *PeerSyncClient) RemoveDataset(ctx context.Context, ref reporef.DatasetRef, remoteAddr string) error
- func (c *PeerSyncClient) RemoveLogs(ctx context.Context, ref dsref.Ref, remoteAddr string) error
- func (c *PeerSyncClient) ResolveHeadRef(ctx context.Context, ref *reporef.DatasetRef, remoteAddr string) error
- type Previews
- type Remote
- func (r *Remote) AddDefaultRoutes(mux *http.ServeMux)
- func (r *Remote) ComponentHTTPHandler(prefix string) http.HandlerFunc
- func (r *Remote) DsyncHTTPHandler() http.HandlerFunc
- func (r *Remote) FeedHTTPHandler(prefix string) http.HandlerFunc
- func (r *Remote) FeedsHTTPHandler() http.HandlerFunc
- func (r *Remote) LogsyncHTTPHandler() http.HandlerFunc
- func (r *Remote) Node() *p2p.QriNode
- func (r *Remote) PreviewHTTPHandler(prefix string) http.HandlerFunc
- func (r *Remote) RefsHTTPHandler() http.HandlerFunc
- func (r *Remote) RemoveDataset(ctx context.Context, params map[string]string) error
- func (r *Remote) ResolveHeadRef(ctx context.Context, peername, name string) (*reporef.DatasetRef, error)
- type RepoFeeds
- type RepoPreviews
Constants ¶
This section is empty.
Variables ¶
var ( // ErrNoRemoteClient is returned when no client is allocated ErrNoRemoteClient = fmt.Errorf("remote: no client to make remote requests") // ErrRemoteNotFound indicates a specified remote couldn't be located ErrRemoteNotFound = fmt.Errorf("remote not found") )
var ErrNotImplemented = fmt.Errorf("not implemented")
ErrNotImplemented is returned for methods that are not implemented
Functions ¶
func Address ¶
Address extracts the address of a remote from a configuration for a given remote name
func OplogFromContext ¶ added in v0.9.1
OplogFromContext pulls an oplog value from
func VerifySigParams ¶ added in v0.9.1
VerifySigParams takes a public key and a map[string]string params and verifies the the signature is correct TODO (ramfox): should be refactored to be private once remotes have their own keystore and can make the replation between a pid and a public key on their own
Types ¶
type Client ¶
type Client interface {
ListDatasets(ctx context.Context, ds *reporef.DatasetRef, term string, offset, limit int) ([]reporef.DatasetRef, error)
ResolveHeadRef(ctx context.Context, ref *reporef.DatasetRef, remoteAddr string) error
NewRemoteRefResolver(addr string) dsref.Resolver
PushDataset(ctx context.Context, ref reporef.DatasetRef, remoteAddr string) error
PullDataset(ctx context.Context, ref *reporef.DatasetRef, remoteAddr string) error
RemoveDataset(ctx context.Context, ref reporef.DatasetRef, remoteAddr string) error
AddDataset(ctx context.Context, ref *reporef.DatasetRef, remoteAddr string) error
PushLogs(ctx context.Context, ref dsref.Ref, remoteAddr string) error
FetchLogs(ctx context.Context, ref dsref.Ref, remoteAddr string) (*oplog.Log, error)
CloneLogs(ctx context.Context, ref dsref.Ref, remoteAddr string) error
RemoveLogs(ctx context.Context, ref dsref.Ref, remoteAddr string) error
Feeds(ctx context.Context, remoteAddr string) (map[string][]dsref.VersionInfo, error)
Preview(ctx context.Context, ref dsref.Ref, remoteAddr string) (*dataset.Dataset, error)
}
Client connects to remotes to perform synchronization tasks
type Feeds ¶ added in v0.9.5
type Feeds interface {
// Feeds returns a set of feeds keyed by name, the number of results in each
// feed, and the number of feeds themselves is up to the server
Feeds(ctx context.Context, userID string) (map[string][]dsref.VersionInfo, error)
// Feed fetches a bounded set of VersionInfos for a given feed name
Feed(ctx context.Context, userID, name string, offset, limit int) ([]dsref.VersionInfo, error)
}
Feeds accesses streams of dataset VersionInfo's to browse. Feeds should be named by their defining characteristic (eg: "popular", "recent", etc.) to distinguish their intention. Feed names must be unique.
The precise behaviour of feeds if left up to the responder. Remotes can make any number of feeds available, and update those feeds with any frequency. A remote may construct feeds of datasets that they don't have data for, simply to assist in dataset discovery.
The userID argument is planned for future use. The Qri roadmap includes plans to implement access control some day, providing an identifier for the user requesting a feed will allow the provider to tailor feeds to show datasets that user may have priviledged access to.
type Hook ¶
Hook is a function called at specific points in the sync cycle hook contexts may be populated with request parameters
type MockClient ¶ added in v0.9.3
type MockClient struct {
// contains filtered or unexported fields
}
MockClient is a remote client suitable for tests
func (*MockClient) AddDataset ¶ added in v0.9.3
func (c *MockClient) AddDataset(ctx context.Context, ref *reporef.DatasetRef, remoteAddr string) error
AddDataset adds a reference to a dataset using test peer info
func (*MockClient) CloneLogs ¶ added in v0.9.5
CloneLogs creates a log from a temp logbook, and merges those into the client's logbook
func (*MockClient) Feeds ¶ added in v0.9.5
func (c *MockClient) Feeds(ctx context.Context, remoteAddr string) (map[string][]dsref.VersionInfo, error)
Feeds is not implemented
func (*MockClient) FetchLogs ¶ added in v0.9.5
func (c *MockClient) FetchLogs(ctx context.Context, ref dsref.Ref, remoteAddr string) (*oplog.Log, error)
FetchLogs is not implemented
func (*MockClient) ListDatasets ¶ added in v0.9.3
func (c *MockClient) ListDatasets(ctx context.Context, ds *reporef.DatasetRef, term string, offset, limit int) (res []reporef.DatasetRef, err error)
ListDatasets is not implemented
func (*MockClient) NewRemoteRefResolver ¶ added in v0.9.9
func (c *MockClient) NewRemoteRefResolver(addr string) dsref.Resolver
NewRemoteRefResolver is not implemented
func (*MockClient) Preview ¶ added in v0.9.5
func (c *MockClient) Preview(ctx context.Context, ref dsref.Ref, remoteAddr string) (*dataset.Dataset, error)
Preview is not implemented
func (*MockClient) PullDataset ¶ added in v0.9.3
func (c *MockClient) PullDataset(ctx context.Context, ref *reporef.DatasetRef, remoteAddr string) error
PullDataset is not implemented
func (*MockClient) PushDataset ¶ added in v0.9.3
func (c *MockClient) PushDataset(ctx context.Context, ref reporef.DatasetRef, remoteAddr string) error
PushDataset is not implemented
func (*MockClient) RemoveDataset ¶ added in v0.9.3
func (c *MockClient) RemoveDataset(ctx context.Context, ref reporef.DatasetRef, remoteAddr string) error
RemoveDataset is not implemented
func (*MockClient) RemoveLogs ¶ added in v0.9.3
RemoveLogs is not implemented
func (*MockClient) ResolveHeadRef ¶ added in v0.9.3
func (c *MockClient) ResolveHeadRef(ctx context.Context, ref *reporef.DatasetRef, remoteAddr string) error
ResolveHeadRef is not implemented
type Options ¶
type Options struct {
// called when a client requests to push a dataset, before any data has been
// received
DatasetPushPreCheck Hook
// called when a dataset has been pushed, but before it's saved
DatasetPushFinalCheck Hook
// called after successfully publishing a dataset version
DatasetPushed Hook
// called when a client has unpublished a dataset version
DatasetRemovePreCheck Hook
// called after a dataset version has been removed
DatasetRemoved Hook
// called before a version pull is permitted
DatasetPullPreCheck Hook
// called when a client pulls a dataset
DatasetPulled Hook
// called before any log data is accepted from a client
LogPushPreCheck Hook
// called after a log has been received by a client, before it's saved
LogPushFinalCheck Hook
// called after a log has been pushed
LogPushed Hook
// called before a log pull is allowed
LogPullPreCheck Hook
// called after a log has been pulled
LogPulled Hook
// called before a log remove is performed
LogRemovePreCheck Hook
// called after a log has been removed
LogRemoved Hook
// called before any feed data request is processed
FeedPreCheck Hook
// called before a preview request is processed
PreviewPreCheck Hook
// Use a custom feeds interface implementation. Default creates a Feeds
// instance from node.Repo
Feeds
// Use a custom previews interface implementation. Default creates a
// Previews instance from node.Repo
Previews
}
Options encapsulates runtime configuration for a remote
type PeerSyncClient ¶ added in v0.9.3
type PeerSyncClient struct {
// contains filtered or unexported fields
}
PeerSyncClient talks to a remote in order to sync peer data
func (*PeerSyncClient) AddDataset ¶ added in v0.9.3
func (c *PeerSyncClient) AddDataset(ctx context.Context, ref *reporef.DatasetRef, remoteAddr string) (err error)
AddDataset fetches & pins a dataset to the store, adding it to the list of stored refs
func (*PeerSyncClient) CloneLogs ¶ added in v0.9.5
CloneLogs pulls logbook data from a remote & stores it locally
func (*PeerSyncClient) Feeds ¶ added in v0.9.5
func (c *PeerSyncClient) Feeds(ctx context.Context, remoteAddr string) (map[string][]dsref.VersionInfo, error)
Feeds fetches the first page of featured & recent feeds in one call
func (*PeerSyncClient) FetchLogs ¶ added in v0.9.5
func (c *PeerSyncClient) FetchLogs(ctx context.Context, ref dsref.Ref, remoteAddr string) (*oplog.Log, error)
FetchLogs pulls logbook data from a remote
func (*PeerSyncClient) ListDatasets
deprecated
added in
v0.9.3
func (c *PeerSyncClient) ListDatasets(ctx context.Context, ds *reporef.DatasetRef, term string, offset, limit int) (res []reporef.DatasetRef, err error)
ListDatasets shows the reflist of a peer
Deprecated: prefer feed methods instead
func (*PeerSyncClient) NewRemoteRefResolver ¶ added in v0.9.9
func (c *PeerSyncClient) NewRemoteRefResolver(remoteAddr string) dsref.Resolver
NewRemoteRefResolver creates a resolver backed by a remote
func (*PeerSyncClient) Preview ¶ added in v0.9.5
func (c *PeerSyncClient) Preview(ctx context.Context, ref dsref.Ref, remoteAddr string) (*dataset.Dataset, error)
Preview fetches a dataset preview from the registry
func (*PeerSyncClient) PullDataset ¶ added in v0.9.3
func (c *PeerSyncClient) PullDataset(ctx context.Context, ref *reporef.DatasetRef, remoteAddr string) error
PullDataset fetches a dataset from a remote source
func (*PeerSyncClient) PushDataset ¶ added in v0.9.3
func (c *PeerSyncClient) PushDataset(ctx context.Context, ref reporef.DatasetRef, remoteAddr string) error
PushDataset pushes the contents of a dataset to a remote
func (*PeerSyncClient) RemoveDataset ¶ added in v0.9.3
func (c *PeerSyncClient) RemoveDataset(ctx context.Context, ref reporef.DatasetRef, remoteAddr string) error
RemoveDataset asks a remote to remove a dataset
func (*PeerSyncClient) RemoveLogs ¶ added in v0.9.3
RemoveLogs requests a remote remove logbook data from an address
func (*PeerSyncClient) ResolveHeadRef ¶ added in v0.9.3
func (c *PeerSyncClient) ResolveHeadRef(ctx context.Context, ref *reporef.DatasetRef, remoteAddr string) error
ResolveHeadRef asks a remote to complete a dataset reference, adding the latest-known path value
type Previews ¶ added in v0.9.5
type Previews interface {
Preview(ctx context.Context, userID, refStr string) (*dataset.Dataset, error)
PreviewComponent(ctx context.Context, userID, refStr, component string) (interface{}, error)
}
Previews is an interface for generating constant-size summaries of dataset data
type Remote ¶
type Remote struct {
Feeds Feeds
Previews Previews
FeedPreCheck Hook
PreviewPreCheck Hook
// contains filtered or unexported fields
}
Remote receives requests from other qri nodes to perform actions on their behalf
func (*Remote) AddDefaultRoutes ¶ added in v0.9.5
AddDefaultRoutes attaches routes a remote client will expect to an HTTP muxer
func (*Remote) ComponentHTTPHandler ¶ added in v0.9.5
func (r *Remote) ComponentHTTPHandler(prefix string) http.HandlerFunc
ComponentHTTPHandler handles dataset component requests over HTTP
func (*Remote) DsyncHTTPHandler ¶
func (r *Remote) DsyncHTTPHandler() http.HandlerFunc
DsyncHTTPHandler provides an http handler for dsync
func (*Remote) FeedHTTPHandler ¶ added in v0.9.5
func (r *Remote) FeedHTTPHandler(prefix string) http.HandlerFunc
FeedHTTPHandler gives access a feed VersionInfos constructed by a remote
func (*Remote) FeedsHTTPHandler ¶ added in v0.9.5
func (r *Remote) FeedsHTTPHandler() http.HandlerFunc
FeedsHTTPHandler provides access to the home feed
func (*Remote) LogsyncHTTPHandler ¶ added in v0.9.1
func (r *Remote) LogsyncHTTPHandler() http.HandlerFunc
LogsyncHTTPHandler provides an http handler for synchronizing logs
func (*Remote) PreviewHTTPHandler ¶ added in v0.9.5
func (r *Remote) PreviewHTTPHandler(prefix string) http.HandlerFunc
PreviewHTTPHandler handles dataset preview requests over HTTP
func (*Remote) RefsHTTPHandler ¶
func (r *Remote) RefsHTTPHandler() http.HandlerFunc
RefsHTTPHandler handles requests for dataset references
func (*Remote) RemoveDataset ¶ added in v0.9.1
RemoveDataset handles requests to remove a dataset currently removes all versions of a dataset TODO (ramfox): add `gen` params that indicates how many versions of the dataset, starting with the most recent version, we should remove. This should remove the latest version of the dataset ref from the refstore and add the (n + 1)th to the refstore gen = -1 should indicate that we remove all the dataset versions
func (*Remote) ResolveHeadRef ¶
func (r *Remote) ResolveHeadRef(ctx context.Context, peername, name string) (*reporef.DatasetRef, error)
ResolveHeadRef fetches the current dataset head path for a given peername and dataset name
type RepoFeeds ¶ added in v0.9.5
RepoFeeds implements the feed interface with a Repo
type RepoPreviews ¶ added in v0.9.5
RepoPreviews implements the previews interface with a Repo
func (RepoPreviews) PreviewComponent ¶ added in v0.9.5
func (rp RepoPreviews) PreviewComponent(ctx context.Context, _, refStr, component string) (interface{}, error)
PreviewComponent gets a component for a reference & component name