core

package
v0.7.8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 4, 2020 License: MIT Imports: 77 Imported by: 5

Documentation

Index

Constants

View Source
const CafeApiVersion = "v1"

CafeApiVersion is the cafe api version

View Source
const ContentLinkName = "content"
View Source
const MetaLinkName = "meta"

Variables

View Source
var ErrAccountRequired = fmt.Errorf("account required")

common errors

View Source
var ErrBlockNotFound = fmt.Errorf("block not found")

ErrBlockNotFound indicates a block was not found in the index

View Source
var ErrBlockWrongType = fmt.Errorf("block type is not the type requested")

ErrBlockWrongType indicates a block was requested as a type other than its own

View Source
var ErrContactNotFound = fmt.Errorf("contact not found")

ErrContactNotFound indicates a local contact was not found

View Source
var ErrFileNotFound = fmt.Errorf("file not found")
View Source
var ErrInvalidFileNode = fmt.Errorf("invalid files node")

ErrInvalidFileNode indicates files where added via a nil ipld node

View Source
var ErrInvalidNode = fmt.Errorf("thread node is not valid")

ErrInvalidNode indicates the thread node is not valid

View Source
var ErrInvalidThreadBlock = fmt.Errorf("invalid thread block")

ErrInvalidThreadBlock is a catch all error for malformed / invalid blocks

View Source
var ErrJsonSchemaRequired = fmt.Errorf("thread schema does not allow json files")

ErrJsonSchemaRequired indicates json files where added without a json schema

View Source
var ErrMissingContentLink = fmt.Errorf("content link not in node")
View Source
var ErrMissingMetaLink = fmt.Errorf("meta link not in node")
View Source
var ErrMissingRepoConfig = fmt.Errorf("you must specify InitConfig.RepoPath or InitConfig.BaseRepoPath and InitConfig.Account")
View Source
var ErrNotAnnotatable = fmt.Errorf("thread is not annotatable")

ErrNotAnnotatable indicates the thread is not annotatable (comments/likes)

View Source
var ErrNotReadable = fmt.Errorf("thread is not readable")

ErrNotReadable indicates the thread is not readable

View Source
var ErrNotShareable = fmt.Errorf("thread is not shareable")

ErrNotShareable indicates the thread does not allow invites, at least for _you_

View Source
var ErrNotWritable = fmt.Errorf("thread is not writable")

ErrNotWritable indicates the thread is not writable (files/messages)

View Source
var ErrOffline = fmt.Errorf("node is offline")
View Source
var ErrStarted = fmt.Errorf("node is started")
View Source
var ErrStopped = fmt.Errorf("node is stopped")
View Source
var ErrThreadInviteNotFound = fmt.Errorf("thread invite not found")

ErrThreadInviteNotFound indicates thread invite is not found

View Source
var ErrThreadLoaded = fmt.Errorf("thread is loaded")

ErrThreadLoaded indicates the thread is already loaded from the datastore

View Source
var ErrThreadNotFound = fmt.Errorf("thread not found")

ErrThreadNotFound indicates thread is not found in the loaded list

View Source
var ErrThreadSchemaRequired = fmt.Errorf("thread schema required to add files")

ErrThreadSchemaRequired indicates files where added without a thread schema

View Source
var ValidContentLinkNames = []string{"content", "d"}
View Source
var ValidMetaLinkNames = []string{"meta", "f"}

Functions

func AccountRepoExists added in v0.7.4

func AccountRepoExists(baseRepoPath string, accountAddress string) bool

AccountRepoExists return whether or not the repo at repoPath exists

func ConvertHeadersToCorsOptions added in v0.1.14

func ConvertHeadersToCorsOptions(headers config.HTTPHeaders) cors.Options

ConvertHeadersToCorsOptions converts http headers into the format that cors options accepts

func FeedItemType added in v0.1.10

func FeedItemType(item *pb.FeedItem) (pb.Block_BlockType, error)

func GetRandomPort added in v0.1.10

func GetRandomPort() string

GetRandomPort returns a port within the acceptable range

func InitRepo added in v0.1.10

func InitRepo(conf InitConfig) error

InitRepo initializes a new node repo

func MigrateRepo added in v0.1.10

func MigrateRepo(conf MigrateConfig) error

MigrateRepo runs _all_ repo migrations, including major

func RepoExists added in v0.7.4

func RepoExists(repoPath string) bool

RepoExists return whether or not the repo at repoPath exists

Types

type AddFileConfig added in v0.1.10

type AddFileConfig struct {
	Input     []byte `json:"input"`
	Use       string `json:"use"`
	Media     string `json:"media"`
	Name      string `json:"name"`
	Plaintext bool   `json:"plaintext"`
}

type BlockDownloads added in v0.4.1

type BlockDownloads struct {
	// contains filtered or unexported fields
}

BlockDownloads manages a queue of pending downloads

func NewBlockDownloads added in v0.4.1

func NewBlockDownloads(node func() *core.IpfsNode, datastore repo.Datastore, getThread func(id string) *Thread) *BlockDownloads

NewBlockDownloads creates a new download queue

func (*BlockDownloads) Add added in v0.4.1

func (q *BlockDownloads) Add(download *pb.Block) error

Add queues a download, starting it if flush is not active

func (*BlockDownloads) Flush added in v0.4.1

func (q *BlockDownloads) Flush()

Flush processes pending messages

type BlockOutbox added in v0.1.10

type BlockOutbox struct {
	// contains filtered or unexported fields
}

BlockOutbox queues and processes outbound thread messages

func NewBlockOutbox added in v0.1.10

func NewBlockOutbox(
	service func() *ThreadsService,
	node func() *core.IpfsNode,
	datastore repo.Datastore,
	cafeOutbox *CafeOutbox) *BlockOutbox

NewBlockOutbox creates a new outbox queue

func (*BlockOutbox) Add added in v0.1.10

func (q *BlockOutbox) Add(peerId string, env *pb.Envelope) error

Add adds an outbound message

func (*BlockOutbox) Flush added in v0.1.10

func (q *BlockOutbox) Flush()

Flush processes pending messages

type CafeError added in v0.7.0

type CafeError struct {
	Error string `json:"error"`
}

CafeError represents a cafe request error

type CafeInbox added in v0.1.10

type CafeInbox struct {
	// contains filtered or unexported fields
}

CafeInbox queues and processes downloaded cafe messages

func NewCafeInbox added in v0.1.10

func NewCafeInbox(
	service func() *CafeService,
	threadsService func() *ThreadsService,
	node func() *core.IpfsNode,
	datastore repo.Datastore,
) *CafeInbox

NewCafeInbox creates a new inbox queue

func (*CafeInbox) Add added in v0.1.10

func (q *CafeInbox) Add(msg *pb.CafeMessage) error

Add adds an inbound message

func (*CafeInbox) CheckMessages added in v0.1.10

func (q *CafeInbox) CheckMessages() error

CheckMessages asks each active cafe session for new messages

func (*CafeInbox) Flush added in v0.1.10

func (q *CafeInbox) Flush()

Flush processes pending messages

type CafeOutbox added in v0.1.10

type CafeOutbox struct {
	// contains filtered or unexported fields
}

CafeOutbox queues and processes outbound cafe requests

func NewCafeOutbox added in v0.1.10

func NewCafeOutbox(
	node func() *core.IpfsNode,
	datastore repo.Datastore,
	handler CafeOutboxHandler,
	flushBlocks func()) *CafeOutbox

NewCafeOutbox creates a new outbox queue

func (*CafeOutbox) Add added in v0.1.10

func (q *CafeOutbox) Add(target string, rtype pb.CafeRequest_Type, opts ...CafeRequestOption) error

Add adds a request for each active cafe session

func (*CafeOutbox) AddForInbox added in v0.1.12

func (q *CafeOutbox) AddForInbox(peerId string, env *pb.Envelope, inboxes []*pb.Cafe) error

AddForInbox adds a request for a peer's inbox(es)

func (*CafeOutbox) Flush added in v0.1.10

func (q *CafeOutbox) Flush(skipBlocks bool)

Flush processes pending requests

type CafeOutboxHandler added in v0.1.12

type CafeOutboxHandler interface {
	Flush()
}

CafeOutboxHandler is fullfilled by the layer responsible for cafe network requests

Desktop and Server => CafeService over libp2p
Mobile => Objc and Java SDKs

type CafeRequestOption added in v0.1.12

type CafeRequestOption func(*CafeRequestSettings)

CafeRequestOption returns a request setting from an option

func (CafeRequestOption) Cafe added in v0.3.0

Cafe limits the request to a single cafe

func (CafeRequestOption) Group added in v0.1.12

Group sets the request's group field

func (CafeRequestOption) Size added in v0.1.12

Size sets the request's size in bytes

func (CafeRequestOption) SyncGroup added in v0.3.0

SyncGroup sets the request's sync group field

type CafeRequestSettings added in v0.1.12

type CafeRequestSettings struct {
	Size      int
	Group     string
	SyncGroup string
	Cafe      string
}

CafeRequestSettings for a request

func CafeRequestOptions added in v0.1.12

func CafeRequestOptions(opts ...CafeRequestOption) *CafeRequestSettings

CafeRequestOptions returns request settings from options

func (*CafeRequestSettings) Options added in v0.3.0

func (s *CafeRequestSettings) Options() []CafeRequestOption

Options converts settings back to options

type CafeService added in v0.1.10

type CafeService struct {
	// contains filtered or unexported fields
}

CafeService is a libp2p pinning and offline message service

func NewCafeService added in v0.1.10

func NewCafeService(
	account *keypair.Full,
	node func() *core.IpfsNode,
	datastore repo.Datastore,
	inbox *CafeInbox,
) *CafeService

NewCafeService returns a new threads service

func (*CafeService) CheckMessages added in v0.1.10

func (h *CafeService) CheckMessages(cafeId string) error

CheckMessages asks each session's inbox for new messages

func (*CafeService) DeleteMessages added in v0.1.10

func (h *CafeService) DeleteMessages(cafeId string) error

DeleteMessages deletes a page of messages from a cafe

func (*CafeService) Deregister added in v0.1.10

func (h *CafeService) Deregister(cafeId string) error

Deregister removes this peer from a cafe

func (*CafeService) Flush added in v0.1.12

func (h *CafeService) Flush()

Flush begins handling requests recursively

func (*CafeService) Handle added in v0.1.10

func (h *CafeService) Handle(env *pb.Envelope, pid peer.ID) (*pb.Envelope, error)

Handle is called by the underlying service handler method

func (*CafeService) HandleStream added in v0.1.10

func (h *CafeService) HandleStream(env *pb.Envelope, pid peer.ID) (chan *pb.Envelope, chan error, chan interface{})

HandleStream is called by the underlying service handler method

func (*CafeService) Ping added in v0.1.10

func (h *CafeService) Ping(pid peer.ID) (service.PeerStatus, error)

Ping pings another peer

func (*CafeService) Protocol added in v0.1.10

func (h *CafeService) Protocol() protocol.ID

Protocol returns the handler protocol

func (*CafeService) PublishPeer added in v0.1.10

func (h *CafeService) PublishPeer(peer *pb.Peer, cafeId string) error

PublishPeer publishes the local peer's info

func (*CafeService) Register added in v0.1.10

func (h *CafeService) Register(cafeId string, token string) (*pb.CafeSession, error)

Register creates a session with a cafe

func (*CafeService) Search added in v0.1.10

func (h *CafeService) Search(query *pb.Query, cafeId string, reply func(*pb.QueryResult), cancelCh <-chan interface{}) error

Search performs a query via a cafe

func (*CafeService) Start added in v0.1.10

func (h *CafeService) Start()

Start begins online services

type FeedItemPayload added in v0.1.10

type FeedItemPayload interface {
	GetUser() *pb.User
	GetDate() *timestamp.Timestamp
	Reset()
	String() string
	ProtoMessage()
}

func GetFeedItemPayload added in v0.1.10

func GetFeedItemPayload(item *pb.FeedItem) (FeedItemPayload, error)

type InitConfig added in v0.1.10

type InitConfig struct {
	Account         *keypair.Full
	PinCode         string
	RepoPath        string
	BaseRepoPath    string
	SwarmPorts      string
	ApiAddr         string
	CafeApiAddr     string
	GatewayAddr     string
	ProfilingAddr   string
	IsMobile        bool
	IsServer        bool
	LogToDisk       bool
	Debug           bool
	CafeOpen        bool
	CafeURL         string
	CafeNeighborURL string
}

InitConfig is used to setup a textile node

func (InitConfig) Repo added in v0.7.4

func (conf InitConfig) Repo() (string, error)

Repo returns the actual location of the configured repo

func (InitConfig) RepoExists added in v0.7.2

func (conf InitConfig) RepoExists() (bool, error)

RepoExists return whether or not the configured repo already exists

type MigrateConfig added in v0.1.10

type MigrateConfig struct {
	PinCode  string
	RepoPath string
}

MigrateConfig is used to define options during a major migration

type RunConfig added in v0.1.10

type RunConfig struct {
	PinCode           string
	RepoPath          string
	CafeOutboxHandler CafeOutboxHandler
	CheckMessages     func() error
	Debug             bool
}

RunConfig is used to define run options for a textile node

type Textile added in v0.1.10

type Textile struct {
	// contains filtered or unexported fields
}

Textile is the main Textile node structure

func CreateAndStartPeer added in v0.3.0

func CreateAndStartPeer(conf InitConfig, wait bool) (*Textile, error)

func NewTextile added in v0.1.10

func NewTextile(conf RunConfig) (*Textile, error)

NewTextile runs a node out of an initialized repo

func (*Textile) AcceptExternalInvite added in v0.1.10

func (t *Textile) AcceptExternalInvite(id string, key []byte) (mh.Multihash, error)

AcceptExternalInvite attemps to download an encrypted thread key from an external invite, adds a new thread, and notifies the inviter of the join

func (*Textile) AcceptInvite added in v0.1.10

func (t *Textile) AcceptInvite(id string) (mh.Multihash, error)

AcceptInvite adds a new thread, and notifies the inviter of the join

func (*Textile) AcceptInviteViaNotification added in v0.1.10

func (t *Textile) AcceptInviteViaNotification(id string) (mh.Multihash, error)

AcceptInviteViaNotification uses an invite notification to accept an invite to a thread

func (*Textile) Account added in v0.1.10

func (t *Textile) Account() *keypair.Full

Account returns account keypair

func (*Textile) AccountContact added in v0.1.10

func (t *Textile) AccountContact() *pb.Contact

AccountContact returns a contact for this account

func (*Textile) AccountThread added in v0.1.10

func (t *Textile) AccountThread() *Thread

AccountThread returns the account private thread

func (*Textile) AddContact added in v0.1.10

func (t *Textile) AddContact(card *pb.Contact) error

AddContact adds or updates a card

func (*Textile) AddExternalInvite added in v0.1.10

func (t *Textile) AddExternalInvite(threadId string) (*pb.ExternalInvite, error)

AddExternalInvite generates a new external invite link to a thread

func (*Textile) AddFileIndex added in v0.1.10

func (t *Textile) AddFileIndex(mill m.Mill, conf AddFileConfig) (*pb.FileIndex, error)

func (*Textile) AddInvite added in v0.1.10

func (t *Textile) AddInvite(threadId string, address string) error

AddInvite creates an invite for each of the target address's peers

func (*Textile) AddNodeFromDirs added in v0.1.10

func (t *Textile) AddNodeFromDirs(dirs *pb.DirectoryList) (ipld.Node, *pb.Keys, error)

func (*Textile) AddNodeFromFiles added in v0.1.10

func (t *Textile) AddNodeFromFiles(files []*pb.FileIndex) (ipld.Node, *pb.Keys, error)

func (*Textile) AddOrUpdateThread added in v0.1.10

func (t *Textile) AddOrUpdateThread(thread *pb.Thread) error

AddOrUpdateThread add or updates a thread directly, usually from a backup

func (*Textile) AddPeer added in v0.7.0

func (t *Textile) AddPeer(peer *pb.Peer) error

AddPeer adds or updates a peer

func (*Textile) AddSchema added in v0.1.10

func (t *Textile) AddSchema(jsonstr string, name string) (*pb.FileIndex, error)

func (*Textile) AddThread added in v0.1.10

func (t *Textile) AddThread(conf pb.AddThreadConfig, sk libp2pc.PrivKey, initiator string, join bool, inviteAccount bool) (*Thread, error)

AddThread adds a thread with a given name and secret key

func (*Textile) Avatar added in v0.1.10

func (t *Textile) Avatar() string

Avatar returns profile avatar

func (*Textile) Block added in v0.1.10

func (t *Textile) Block(id string) (*pb.Block, error)

Block returns block with id

func (*Textile) BlockByParent added in v0.3.0

func (t *Textile) BlockByParent(parent string) (*pb.Block, error)

Block returns block with id

func (*Textile) BlockView added in v0.1.10

func (t *Textile) BlockView(id string) (*pb.Block, error)

BlockView returns block with expanded view properties

func (*Textile) Blocks added in v0.1.10

func (t *Textile) Blocks(offset string, limit int, query string) *pb.BlockList

GetBlocks paginates blocks

func (*Textile) BlocksByTarget added in v0.1.10

func (t *Textile) BlocksByTarget(target string) *pb.BlockList

BlocksByTarget returns block with parent

func (*Textile) CafeApiAddr added in v0.1.10

func (t *Textile) CafeApiAddr() string

CafeApiAddr returns the cafe api address

func (*Textile) CafeInfo added in v0.1.10

func (t *Textile) CafeInfo() *pb.Cafe

CafeInfo returns info about this cafe

func (*Textile) CafeRequestThreadsContent added in v0.7.0

func (t *Textile) CafeRequestThreadsContent(cafe string) error

CafeRequestThreadContent sync the entire thread conents (blocks and files) to the given cafe

func (*Textile) CafeSession added in v0.1.10

func (t *Textile) CafeSession(id string) (*pb.CafeSession, error)

CafeSession returns an active session by id

func (*Textile) CafeSessions added in v0.1.10

func (t *Textile) CafeSessions() *pb.CafeSessionList

CafeSessions lists active cafe sessions

func (*Textile) CafeTokens added in v0.1.10

func (t *Textile) CafeTokens() ([]string, error)

CafeTokens lists all locally-stored (bcrypt hashed) tokens

func (*Textile) CheckCafeMessages added in v0.1.10

func (t *Textile) CheckCafeMessages() error

CheckCafeMessages fetches new messages from registered cafes

func (*Textile) CloseChns added in v0.1.10

func (t *Textile) CloseChns()

CloseChns closes update channels

func (*Textile) Comment added in v0.1.10

func (t *Textile) Comment(blockId string) (*pb.Comment, error)

func (*Textile) Comments added in v0.1.10

func (t *Textile) Comments(target string) (*pb.CommentList, error)

func (*Textile) Config added in v0.1.10

func (t *Textile) Config() *config.Config

Config returns the textile configuration file

func (*Textile) Contact added in v0.1.10

func (t *Textile) Contact(address string) *pb.Contact

Contact looks up a contact by address

func (*Textile) ContactThreads added in v0.1.10

func (t *Textile) ContactThreads(address string) (*pb.ThreadList, error)

ContactThreads returns all threads with the given address

func (*Textile) Contacts added in v0.1.10

func (t *Textile) Contacts() *pb.ContactList

Contacts returns all known contacts, excluding self

func (*Textile) CountUnreadNotifications added in v0.1.10

func (t *Textile) CountUnreadNotifications() int

CountUnreadNotifications counts unread notifications

func (*Textile) CreateCafeToken added in v0.1.10

func (t *Textile) CreateCafeToken(token string, store bool) (string, error)

CreateCafeToken creates (or uses `token`) random access token, returns base58 encoded version, and stores (unless `store` is false) a bcrypt hashed version for later comparison

func (*Textile) DataAtPath added in v0.1.10

func (t *Textile) DataAtPath(path string) ([]byte, error)

DataAtPath returns raw data behind an ipfs path

func (*Textile) Datastore added in v0.3.0

func (t *Textile) Datastore() repo.Datastore

Datastore returns the underlying sqlite datastore interface

func (*Textile) Decrypt added in v0.1.10

func (t *Textile) Decrypt(input []byte) ([]byte, error)

Decrypt decrypts input with account address

func (*Textile) DeregisterCafe added in v0.1.10

func (t *Textile) DeregisterCafe(id string) error

DeregisterCafe removes the session associated with the given cafe

func (*Textile) DoneCh added in v0.1.10

func (t *Textile) DoneCh() <-chan struct{}

DoneCh returns the core node done channel

func (*Textile) Encrypt added in v0.1.10

func (t *Textile) Encrypt(input []byte) ([]byte, error)

Encrypt encrypts input with account address

func (*Textile) Feed added in v0.1.10

func (t *Textile) Feed(req *pb.FeedRequest) (*pb.FeedItemList, error)

func (*Textile) File added in v0.1.10

func (t *Textile) File(blockId string) (*pb.Files, error)

func (*Textile) FileContent added in v0.2.0

func (t *Textile) FileContent(hash string) (io.ReadSeeker, *pb.FileIndex, error)

func (*Textile) FileIndexContent added in v0.2.0

func (t *Textile) FileIndexContent(file *pb.FileIndex) (io.ReadSeeker, error)

func (*Textile) FileMeta added in v0.2.0

func (t *Textile) FileMeta(hash string) (*pb.FileIndex, error)

func (*Textile) Files added in v0.1.10

func (t *Textile) Files(offset string, limit int, threadId string) (*pb.FilesList, error)

func (*Textile) FlushBlocks added in v0.3.0

func (t *Textile) FlushBlocks()

FlushBlocks flushes the block message outbox

func (*Textile) FlushCafes added in v0.3.0

func (t *Textile) FlushCafes()

FlushCafes flushes the cafe request outbox

func (*Textile) GetMedia added in v0.1.10

func (t *Textile) GetMedia(reader io.Reader) (string, error)

func (*Textile) GetMillMedia added in v0.5.0

func (t *Textile) GetMillMedia(reader io.Reader, mill m.Mill) (string, error)

func (*Textile) IgnoreInvite added in v0.1.10

func (t *Textile) IgnoreInvite(id string) error

IgnoreInvite deletes the invite and removes the associated notification.

func (*Textile) IgnoreInviteViaNotification added in v0.1.10

func (t *Textile) IgnoreInviteViaNotification(id string) error

IgnoreInviteViaNotification uses an invite notification to ignore an invite to a thread

func (*Textile) Inbox added in v0.7.0

func (t *Textile) Inbox() *CafeInbox

Inbox returns the cafe inbox

func (*Textile) InviteView added in v0.1.10

func (t *Textile) InviteView(invite *pb.Invite) *pb.InviteView

InviteView gets a pending invite as a view object, which does not include the block payload

func (*Textile) Invites added in v0.1.10

func (t *Textile) Invites() *pb.InviteViewList

Invites lists info on all pending invites

func (*Textile) Ipfs added in v0.1.10

func (t *Textile) Ipfs() *core.IpfsNode

Ipfs returns the underlying ipfs node

func (*Textile) Like added in v0.1.10

func (t *Textile) Like(blockId string) (*pb.Like, error)

func (*Textile) Likes added in v0.1.10

func (t *Textile) Likes(target string) (*pb.LikeList, error)

func (*Textile) LinksAtPath added in v0.1.10

func (t *Textile) LinksAtPath(path string) ([]*ipld.Link, error)

LinksAtPath returns ipld links behind an ipfs path

func (*Textile) Message added in v0.1.10

func (t *Textile) Message(blockId string) (*pb.Text, error)

func (*Textile) Messages added in v0.1.10

func (t *Textile) Messages(offset string, limit int, threadId string) (*pb.TextList, error)

func (*Textile) Mobile added in v0.1.10

func (t *Textile) Mobile() bool

Mobile returns whether or not node is configured for a mobile device

func (*Textile) Name added in v0.1.10

func (t *Textile) Name() string

Username returns profile username

func (*Textile) NotificationCh added in v0.1.10

func (t *Textile) NotificationCh() <-chan *pb.Notification

NotificationsCh returns the notifications channel

func (*Textile) NotificationView added in v0.1.10

func (t *Textile) NotificationView(note *pb.Notification) *pb.Notification

NotificationView returns a notification with expanded view info

func (*Textile) Notifications added in v0.1.10

func (t *Textile) Notifications(offset string, limit int) *pb.NotificationList

Notifications lists notifications

func (*Textile) Online added in v0.1.10

func (t *Textile) Online() bool

Online returns node online status

func (*Textile) OnlineCh added in v0.1.10

func (t *Textile) OnlineCh() <-chan struct{}

OnlineCh returns the online channel

func (*Textile) PeerId added in v0.1.10

func (t *Textile) PeerId() (peer.ID, error)

PeerId returns peer id

func (*Textile) PeerUser added in v0.1.10

func (t *Textile) PeerUser(id string) *pb.User

PeerUser returns a user object with the most recently updated contact for the given id Note: If no underlying contact is found, this will return a blank object w/ a generic user name for display-only purposes.

func (*Textile) Ping added in v0.1.10

func (t *Textile) Ping(pid peer.ID) (service.PeerStatus, error)

Ping pings another peer

func (*Textile) Profile added in v0.1.10

func (t *Textile) Profile() *pb.Peer

Profile returns this node's own peer

func (*Textile) Publish added in v0.6.4

func (t *Textile) Publish(payload []byte, topic string) error

Publish sends 'data' to 'topic'

func (*Textile) PublishPeer added in v0.7.0

func (t *Textile) PublishPeer() error

PublishPeer publishes this peer's info to the cafe network

func (*Textile) ReadAllNotifications added in v0.1.10

func (t *Textile) ReadAllNotifications() error

ReadAllNotifications marks all notification as read

func (*Textile) ReadNotification added in v0.1.10

func (t *Textile) ReadNotification(id string) error

ReadNotification marks a notification as read

func (*Textile) RefreshCafeSession added in v0.1.10

func (t *Textile) RefreshCafeSession(id string) (*pb.CafeSession, error)

RefreshCafeSession attempts to refresh a token with a cafe

func (*Textile) RegisterCafe added in v0.1.10

func (t *Textile) RegisterCafe(id string, token string) (*pb.CafeSession, error)

RegisterCafe registers this account with another peer (the "cafe"), which provides a session token for the service

func (*Textile) RemoveCafeToken added in v0.1.10

func (t *Textile) RemoveCafeToken(token string) error

RemoveCafeToken removes a given cafe token from the local store

func (*Textile) RemoveContact added in v0.1.10

func (t *Textile) RemoveContact(address string) error

RemoveContact removes all contacts that share the given address @todo Add ignore to account thread targeted at the join

func (*Textile) RemoveThread added in v0.1.10

func (t *Textile) RemoveThread(id string) (mh.Multihash, error)

RemoveThread removes a thread @todo rename to abandon to be consistent with CLI+API

func (*Textile) RenameThread added in v0.1.10

func (t *Textile) RenameThread(id string, name string) error

RenameThread adds an announce block to the thread w/ a new name Note: Only thread initiators can update the thread's name

func (*Textile) RepoPath added in v0.1.10

func (t *Textile) RepoPath() string

RepoPath returns the node's repo path

func (*Textile) SearchContacts added in v0.1.10

func (t *Textile) SearchContacts(query *pb.ContactQuery, options *pb.QueryOptions) (<-chan *pb.QueryResult, <-chan error, *broadcast.Broadcaster, error)

SearchContacts searches the network for peers and returns contacts

func (*Textile) SearchThreadSnapshots added in v0.1.10

func (t *Textile) SearchThreadSnapshots(query *pb.ThreadSnapshotQuery, options *pb.QueryOptions) (<-chan *pb.QueryResult, <-chan error, *broadcast.Broadcaster, error)

SearchThreadSnapshots searches the network for snapshots

func (*Textile) Server added in v0.1.13

func (t *Textile) Server() bool

Server returns whether or not node is configured for a server

func (*Textile) SetAvatar added in v0.1.10

func (t *Textile) SetAvatar() error

SetAvatar updates profile with a new avatar at the given file hash.

func (*Textile) SetLogLevel added in v0.1.10

func (t *Textile) SetLogLevel(level *pb.LogLevel, color bool) error

SetLogLevel provides node scoped access to the logging system

func (*Textile) SetName added in v0.1.10

func (t *Textile) SetName(name string) error

SetName updates profile with a new username

func (*Textile) Sign added in v0.1.10

func (t *Textile) Sign(input []byte) ([]byte, error)

Sign signs input with account seed

func (*Textile) SnapshotThreads added in v0.1.10

func (t *Textile) SnapshotThreads() error

SnapshotThreads creates a store thread request for all threads

func (*Textile) Start added in v0.1.10

func (t *Textile) Start() error

Start creates an ipfs node and starts textile services

func (*Textile) Started added in v0.1.10

func (t *Textile) Started() bool

Started returns node started status

func (*Textile) Stop added in v0.1.10

func (t *Textile) Stop() error

Stop destroys the ipfs node and shutsdown textile services

func (*Textile) Summary added in v0.1.10

func (t *Textile) Summary() *pb.Summary

Summary returns a summary of node data

func (*Textile) SyncAccount added in v0.1.10

func (t *Textile) SyncAccount(options *pb.QueryOptions) (*broadcast.Broadcaster, error)

SyncAccount performs a thread backup search and applies the result

func (*Textile) TargetNodeKeys added in v0.1.10

func (t *Textile) TargetNodeKeys(node ipld.Node) (*pb.Keys, error)

func (*Textile) Thread added in v0.1.10

func (t *Textile) Thread(id string) *Thread

Thread get a thread by id from loaded threads

func (*Textile) ThreadByKey added in v0.1.10

func (t *Textile) ThreadByKey(key string) *Thread

ThreadByKey get a thread by key from loaded threads

func (*Textile) ThreadPeers added in v0.1.10

func (t *Textile) ThreadPeers(id string) (*pb.PeerList, error)

ThreadPeers returns a list of thread peers

func (*Textile) ThreadUpdateListener added in v0.1.10

func (t *Textile) ThreadUpdateListener() *broadcast.Listener

ThreadUpdateListener returns the thread update channel

func (*Textile) ThreadView added in v0.1.10

func (t *Textile) ThreadView(id string) (*pb.Thread, error)

ThreadView returns a thread with expanded view properties

func (*Textile) Threads added in v0.1.10

func (t *Textile) Threads() []*Thread

Threads lists loaded threads

func (*Textile) UpdateCh added in v0.1.10

func (t *Textile) UpdateCh() <-chan *pb.AccountUpdate

UpdateCh returns the account update channel

func (*Textile) UpdatePeerInboxes added in v0.7.0

func (t *Textile) UpdatePeerInboxes() error

UpdatePeerInboxes sets own peer inboxes from the current cafe sessions

func (*Textile) ValidateCafeToken added in v0.1.10

func (t *Textile) ValidateCafeToken(token string) (bool, error)

ValidateCafeToken checks whether a supplied base58 encoded token matches the locally-stored bcrypt hashed equivalent

func (*Textile) Verify added in v0.1.10

func (t *Textile) Verify(input []byte, sig []byte) error

Verify verifies input with account address

func (*Textile) WaitAdd added in v0.6.11

func (t *Textile) WaitAdd(delta int, src string)

WaitAdd add delta wait to the stop wait group

func (*Textile) WaitDone added in v0.6.11

func (t *Textile) WaitDone(src string)

WaitDone marks a wait as done in the stop wait group

func (*Textile) Writer added in v0.1.10

func (t *Textile) Writer() io.Writer

Writer returns the output writer (logger / stdout)

type Thread added in v0.1.10

type Thread struct {
	Id      string
	Key     string // app key, usually UUID
	Name    string
	PrivKey libp2pc.PrivKey
	Schema  *pb.Node
	// contains filtered or unexported fields
}

Thread is the primary mechanism representing a collecion of data / files / photos

func NewThread added in v0.1.10

func NewThread(model *pb.Thread, conf *ThreadConfig) (*Thread, error)

NewThread create a new Thread from a repo model and config

func (*Thread) AddComment added in v0.1.10

func (t *Thread) AddComment(target string, body string) (mh.Multihash, error)

AddComment adds an outgoing comment block

func (*Thread) AddExternalInvite added in v0.1.10

func (t *Thread) AddExternalInvite() (mh.Multihash, []byte, error)

AddExternalInvite creates an add block, which can be retrieved by any peer and does not become part of the hash chain

func (*Thread) AddFiles added in v0.1.10

func (t *Thread) AddFiles(node ipld.Node, target string, caption string, keys map[string]string) (mh.Multihash, error)

AddFile adds an outgoing files block

func (*Thread) AddFlag added in v0.1.10

func (t *Thread) AddFlag(block string) (mh.Multihash, error)

AddFlag adds an outgoing flag block targeted at another block to flag

func (*Thread) AddIgnore added in v0.1.10

func (t *Thread) AddIgnore(block string) (mh.Multihash, error)

AddIgnore adds an outgoing ignore block targeted at another block to ignore

func (*Thread) AddInvite added in v0.1.10

func (t *Thread) AddInvite(p *pb.Peer) (mh.Multihash, error)

AddInvite creates an outgoing add block, which is sent directly to the recipient and does not become part of the hash chain

func (*Thread) AddLike added in v0.1.10

func (t *Thread) AddLike(target string) (mh.Multihash, error)

AddLike adds an outgoing like block

func (*Thread) AddMessage added in v0.1.10

func (t *Thread) AddMessage(target string, body string) (mh.Multihash, error)

AddMessage adds an outgoing message block

func (*Thread) Annouce added in v0.7.0

func (t *Thread) Annouce(msg *pb.ThreadAnnounce) (mh.Multihash, error)

announce creates an outgoing announce block

func (*Thread) Decrypt added in v0.1.10

func (t *Thread) Decrypt(data []byte) ([]byte, error)

Decrypt data with thread secret key

func (*Thread) Encrypt added in v0.1.10

func (t *Thread) Encrypt(data []byte) ([]byte, error)

Encrypt data with thread public key

func (*Thread) Heads added in v0.3.0

func (t *Thread) Heads() ([]string, error)

Heads returns the node ids of the current HEADs

func (*Thread) LatestFiles added in v0.1.12

func (t *Thread) LatestFiles() *pb.Block

LatestFiles returns the most recent files block

func (*Thread) Peers added in v0.1.10

func (t *Thread) Peers() []pb.ThreadPeer

Peers returns locally known peers in this thread

func (*Thread) UpdateSchema added in v0.1.12

func (t *Thread) UpdateSchema(hash string) error

UpdateSchema sets a new schema hash on the model and loads its node

type ThreadConfig added in v0.1.10

type ThreadConfig struct {
	RepoPath       string
	Config         *config.Config
	Account        *keypair.Full
	Node           func() *core.IpfsNode
	Datastore      repo.Datastore
	Service        func() *ThreadsService
	BlockOutbox    *BlockOutbox
	BlockDownloads *BlockDownloads
	CafeOutbox     *CafeOutbox
	AddPeer        func(*pb.Peer) error
	PushUpdate     func(*pb.Block, string)
}

ThreadConfig is used to construct a Thread

type ThreadsService added in v0.1.10

type ThreadsService struct {
	// contains filtered or unexported fields
}

ThreadService is a libp2p service for orchestrating a collection of files with annotations amongst a group of peers

func NewThreadsService added in v0.1.10

func NewThreadsService(
	account *keypair.Full,
	node func() *core.IpfsNode,
	datastore repo.Datastore,
	getThread func(string) *Thread,
	addThread func([]byte, []string) (mh.Multihash, error),
	removeThread func(string) (mh.Multihash, error),
	sendNotification func(*pb.Notification) error,
) *ThreadsService

NewThreadsService returns a new threads service

func (*ThreadsService) Handle added in v0.1.10

func (h *ThreadsService) Handle(env *pb.Envelope, pid peer.ID) (*pb.Envelope, error)

Handle is called by the underlying service handler method

func (*ThreadsService) HandleStream added in v0.1.10

func (h *ThreadsService) HandleStream(env *pb.Envelope, pid peer.ID) (chan *pb.Envelope, chan error, chan interface{})

HandleStream is called by the underlying service handler method

func (*ThreadsService) NewEnvelope added in v0.1.10

func (h *ThreadsService) NewEnvelope(threadId string, node []byte, block []byte, sig []byte) (*pb.Envelope, error)

NewEnvelope signs and wraps an encypted block for transport

func (*ThreadsService) NewEnvelopeAck added in v0.5.4

func (h *ThreadsService) NewEnvelopeAck(sig []byte) (*pb.Envelope, error)

NewEnvelopeAck signs and wraps an ack message

func (*ThreadsService) Ping added in v0.1.10

func (h *ThreadsService) Ping(pid peer.ID) (service.PeerStatus, error)

Ping pings another peer

func (*ThreadsService) Protocol added in v0.1.10

func (h *ThreadsService) Protocol() protocol.ID

Protocol returns the handler protocol

func (*ThreadsService) SendMessage added in v0.1.10

func (h *ThreadsService) SendMessage(ctx context.Context, peerId string, env *pb.Envelope) error

SendMessage sends a message to a peer

func (*ThreadsService) SendPubSubMessage added in v0.6.6

func (h *ThreadsService) SendPubSubMessage(msg pb.BlockMessage) error

SendPubSubMessage publishes the message to the recipient's peerID-based topic and waits for an acknowledgement response. This mechanism can result in inbox-free direct messaging via a relay node, which can be useful when two peers are not direcly connected.

func (*ThreadsService) Start added in v0.1.10

func (h *ThreadsService) Start()

Start begins online services

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL