ipfs-cluster: github.com/ipfs/ipfs-cluster/api/rest/client Index | Files

package client

import "github.com/ipfs/ipfs-cluster/api/rest/client"

Package client provides a Go Client for the IPFS Cluster API provided by the "api/rest" component. It supports both the HTTP(s) endpoint and the libp2p-http endpoint.

Index

Package Files

client.go methods.go request.go transports.go

Variables

var (
    DefaultTimeout   = 0
    DefaultAPIAddr   = "/ip4/127.0.0.1/tcp/9094"
    DefaultLogLevel  = "info"
    DefaultProxyPort = 9095
    ResolveTimeout   = 30 * time.Second
    DefaultPort      = 9094
)

Configuration defaults

func IsPeerAddress Uses

func IsPeerAddress(addr ma.Multiaddr) bool

IsPeerAddress detects if the given multiaddress identifies a libp2p peer, either because it has the /p2p/ protocol or because it uses /dnsaddr/

func WaitFor Uses

func WaitFor(ctx context.Context, c Client, fp StatusFilterParams) (*api.GlobalPinInfo, error)

WaitFor is a utility function that allows for a caller to wait for a paticular status for a CID (as defined by StatusFilterParams). It returns the final status for that CID and an error, if there was.

WaitFor works by calling Status() repeatedly and checking that all peers have transitioned to the target TrackerStatus or are Remote. If an error of some type happens, WaitFor returns immediately with an empty GlobalPinInfo.

type Client Uses

type Client interface {
    // ID returns information about the cluster Peer.
    ID(context.Context) (*api.ID, error)

    // Peers requests ID information for all cluster peers.
    Peers(context.Context) ([]*api.ID, error)
    // PeerAdd adds a new peer to the cluster.
    PeerAdd(ctx context.Context, pid peer.ID) (*api.ID, error)
    // PeerRm removes a current peer from the cluster
    PeerRm(ctx context.Context, pid peer.ID) error

    // Add imports files to the cluster from the given paths.
    Add(ctx context.Context, paths []string, params *api.AddParams, out chan<- *api.AddedOutput) error
    // AddMultiFile imports new files from a MultiFileReader.
    AddMultiFile(ctx context.Context, multiFileR *files.MultiFileReader, params *api.AddParams, out chan<- *api.AddedOutput) error

    // Pin tracks a Cid with the given replication factor and a name for
    // human-friendliness.
    Pin(ctx context.Context, ci cid.Cid, opts api.PinOptions) error
    // Unpin untracks a Cid from cluster.
    Unpin(ctx context.Context, ci cid.Cid) error

    // PinPath resolves given path into a cid and performs the pin operation.
    PinPath(ctx context.Context, path string, opts api.PinOptions) (*api.Pin, error)
    // UnpinPath resolves given path into a cid and performs the unpin operation.
    // It returns api.Pin of the given cid before it is unpinned.
    UnpinPath(ctx context.Context, path string) (*api.Pin, error)

    // Allocations returns the consensus state listing all tracked items
    // and the peers that should be pinning them.
    Allocations(ctx context.Context, filter api.PinType) ([]*api.Pin, error)
    // Allocation returns the current allocations for a given Cid.
    Allocation(ctx context.Context, ci cid.Cid) (*api.Pin, error)

    // Status returns the current ipfs state for a given Cid. If local is true,
    // the information affects only the current peer, otherwise the information
    // is fetched from all cluster peers.
    Status(ctx context.Context, ci cid.Cid, local bool) (*api.GlobalPinInfo, error)
    // StatusAll gathers Status() for all tracked items.
    StatusAll(ctx context.Context, filter api.TrackerStatus, local bool) ([]*api.GlobalPinInfo, error)

    // Sync makes sure the state of a Cid corresponds to the state reported
    // by the ipfs daemon, and returns it. If local is true, this operation
    // only happens on the current peer, otherwise it happens on every
    // cluster peer.
    Sync(ctx context.Context, ci cid.Cid, local bool) (*api.GlobalPinInfo, error)
    // SyncAll triggers Sync() operations for all tracked items. It only
    // returns informations for items that were de-synced or have an error
    // state. If local is true, the operation is limited to the current
    // peer. Otherwise it happens on every cluster peer.
    SyncAll(ctx context.Context, local bool) ([]*api.GlobalPinInfo, error)

    // Recover retriggers pin or unpin ipfs operations for a Cid in error
    // state.  If local is true, the operation is limited to the current
    // peer, otherwise it happens on every cluster peer.
    Recover(ctx context.Context, ci cid.Cid, local bool) (*api.GlobalPinInfo, error)
    // RecoverAll triggers Recover() operations on all tracked items. If
    // local is true, the operation is limited to the current peer.
    // Otherwise, it happens everywhere.
    RecoverAll(ctx context.Context, local bool) ([]*api.GlobalPinInfo, error)

    // Version returns the ipfs-cluster peer's version.
    Version(context.Context) (*api.Version, error)

    // IPFS returns an instance of go-ipfs-api's Shell, pointing to a
    // Cluster's IPFS proxy endpoint.
    IPFS(context.Context) *shell.Shell

    // GetConnectGraph returns an ipfs-cluster connection graph.
    GetConnectGraph(context.Context) (*api.ConnectGraph, error)

    // Metrics returns a map with the latest metrics of matching name
    // for the current cluster peers.
    Metrics(ctx context.Context, name string) ([]*api.Metric, error)
}

Client interface defines the interface to be used by API clients to interact with the ipfs-cluster-service. All methods take a context.Context as their first parameter, this allows for timing out and cancelling of requests as well as recording metrics and tracing of requests through the API.

func NewDefaultClient Uses

func NewDefaultClient(cfg *Config) (Client, error)

NewDefaultClient initializes a client given a Config.

type Config Uses

type Config struct {
    // Enable SSL support. Only valid without APIAddr.
    SSL bool
    // Skip certificate verification (insecure)
    NoVerifyCert bool

    // Username and password for basic authentication
    Username string
    Password string

    // The ipfs-cluster REST API endpoint in multiaddress form
    // (takes precedence over host:port). It this address contains
    // an /ipfs/, /p2p/ or /dnsaddr, the API will be contacted
    // through a libp2p tunnel, thus getting encryption for
    // free. Using the libp2p tunnel will ignore any configurations.
    APIAddr ma.Multiaddr

    // REST API endpoint host and port. Only valid without
    // APIAddr.
    Host string
    Port string

    // If APIAddr is provided, and the peer uses private networks (pnet),
    // then we need to provide the key. If the peer is the cluster peer,
    // this corresponds to the cluster secret.
    ProtectorKey []byte

    // ProxyAddr is used to obtain a go-ipfs-api Shell instance pointing
    // to the ipfs proxy endpoint of ipfs-cluster. If empty, the location
    // will be guessed from one of APIAddr/Host,
    // and the port used will be ipfs-cluster's proxy default port (9095)
    ProxyAddr ma.Multiaddr

    // Define timeout for network operations
    Timeout time.Duration

    // Specifies if we attempt to re-use connections to the same
    // hosts.
    DisableKeepAlives bool

    // LogLevel defines the verbosity of the logging facility
    LogLevel string
}

Config allows to configure the parameters to connect to the ipfs-cluster REST API.

type StatusFilterParams Uses

type StatusFilterParams struct {
    Cid       cid.Cid
    Local     bool
    Target    api.TrackerStatus
    CheckFreq time.Duration
}

StatusFilterParams contains the parameters required to filter a stream of status results.

Package client imports 35 packages (graph) and is imported by 3 packages. Updated 2019-03-04. Refresh now. Tools for package owners.