shell

package module
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: Jan 21, 2021 License: MIT Imports: 34 Imported by: 7

README

go-btfs-api

Go interface to BTFS HTTP API

Install

go get -u github.com/TRON-US/go-btfs-api

This will download the source into $GOPATH/src/github.com/TRON-US/go-btfs-api.

Usage

See the godocs for details on available methods.

Example

Add a file with the contents "hello world!":

package main

import (
	"fmt"
	"strings"
	"os"

	shell "github.com/TRON-US/go-btfs-api"
)

func main() {
	// Where your local node is running on localhost:5001
	sh := shell.NewShell("localhost:5001")
	cid, err := sh.Add(strings.NewReader("hello world!"))
	if err != nil {
        fmt.Fprintf(os.Stderr, "error: %s", err)
        os.Exit(1)
	}
    fmt.Printf("added %s", cid)
}

For a more complete example, please see: https://github.com/TRON-US/go-btfs-api/blob/master/tests/main.go

Contribute

Contributions are welcome! Please check out the issues.

License

MIT @ TRON-US.

Documentation

Overview

package shell implements a remote API interface for a running btfs daemon

Index

Constants

View Source
const (
	DefaultPathName = ".btfs"
	DefaultPathRoot = "~/" + DefaultPathName
	DefaultApiFile  = "api"
	EnvDir          = "BTFS_PATH"
)
View Source
const (
	TRaw = iota
	TDirectory
	TFile
	TMetadata
	TSymlink
)
View Source
const (
	DirectPin    = "direct"
	RecursivePin = "recursive"
	IndirectPin  = "indirect"
)
View Source
const (
	API_VERSION = "v1"
)

Variables

View Source
var (
	FilesLs    filesLs
	FilesChcid filesChcid
	FilesMkdir filesMkdir
	FilesRead  filesRead
	FilesWrite filesWrite
	FilesStat  filesStat
)
View Source
var KeyGen keyGen

Functions

func NewSessionSignature added in v0.2.1

func NewSessionSignature(hash string, peerIdStr string, uts string, verifyBefore bool) (string, error)

func VerifySessionSignature added in v0.2.1

func VerifySessionSignature(offSignRenterPid peer.ID, data string, sessionSigStr string) error

Types

type AddOpts

type AddOpts = func(*RequestBuilder) error

func Chunker added in v0.1.3

func Chunker(chunker string) AddOpts

func CidVersion added in v0.1.1

func CidVersion(version int) AddOpts

CidVersion allows for selecting the CID version that btfs should use.

func Hash added in v0.1.1

func Hash(hash string) AddOpts

Hash allows for selecting the multihash type

func Meta added in v0.1.1

func Meta(meta string) AddOpts

func OnlyHash

func OnlyHash(enabled bool) AddOpts

func Pin

func Pin(enabled bool) AddOpts

func Progress

func Progress(enabled bool) AddOpts

func RawLeaves

func RawLeaves(enabled bool) AddOpts

type ContractItem added in v0.1.7

type ContractItem struct {
	Key      string `json:"key"`
	Contract string `json:"contract"`
}

type Contracts added in v0.1.7

type Contracts struct {
	Contracts []ContractItem `json:contracts`
}

func (Contracts) SignContracts added in v0.1.7

func (c Contracts) SignContracts(privateKey string, t string) (*Contracts, error)

type Error

type Error struct {
	Command string
	Message string
	Code    int
}

func (*Error) Error

func (e *Error) Error() string

type FilesOpt added in v0.4.0

type FilesOpt func(*RequestBuilder) error

type FilesStatObject added in v0.4.0

type FilesStatObject struct {
	Blocks         int
	CumulativeSize uint64
	Hash           string
	Local          bool
	Size           uint64
	SizeLocal      uint64
	Type           string
	WithLocality   bool
}

type IdOutput

type IdOutput struct {
	ID              string
	PublicKey       string
	Addresses       []string
	AgentVersion    string
	ProtocolVersion string
}

type IpfsObject

type IpfsObject struct {
	Links []ObjectLink
	Data  string
}

type Key added in v0.4.0

type Key struct {
	Id   string
	Name string
}

type KeyOpt added in v0.4.0

type KeyOpt func(*RequestBuilder) error

type KeyRenameObject added in v0.4.0

type KeyRenameObject struct {
	Id        string
	Now       string
	Overwrite bool
	Was       string
}

type Logger added in v0.1.1

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

Logger is used to handle incoming logs from the btfs node

func (Logger) Close added in v0.1.1

func (l Logger) Close() error

Close is used to close our reader

func (Logger) Next added in v0.1.1

func (l Logger) Next() (map[string]interface{}, error)

Next is used to retrieve the next event from the logging system

type LsLink struct {
	Hash string
	Name string
	Size uint64
	Type int
}

type LsObject

type LsObject struct {
	Links []*LsLink
	LsLink
}

type Message

type Message struct {
	From     peer.ID
	Data     []byte
	Seqno    []byte
	TopicIDs []string
}

Message is a pubsub message.

type MfsLsEntry added in v0.4.0

type MfsLsEntry struct {
	Name string
	Type uint8
	Size uint64
	Hash string
}
type ObjectLink struct {
	Name, Hash string
	Size       uint64
}

type ObjectStats

type ObjectStats struct {
	Hash           string
	BlockSize      int
	CumulativeSize int
	DataSize       int
	LinksSize      int
	NumLinks       int
}

type PeerInfo

type PeerInfo struct {
	Addrs []string
	ID    string
}

type PeersList

type PeersList struct {
	Peers []string
}

type PinInfo

type PinInfo struct {
	Type string
}

type PinStreamInfo added in v0.3.0

type PinStreamInfo struct {
	Cid  string
	Type string
}

PinStreamInfo is the output type for PinsStream

type PubSubSubscription

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

PubSubSubscription allow you to receive pubsub records that where published on the network.

func (*PubSubSubscription) Cancel

func (s *PubSubSubscription) Cancel() error

Cancel cancels the given subscription.

func (*PubSubSubscription) Next

func (s *PubSubSubscription) Next() (*Message, error)

Next waits for the next record and returns that.

type PublishResponse

type PublishResponse struct {
	Name  string `json:"name"`
	Value string `json:"value"`
}

type Request

type Request struct {
	Ctx     context.Context
	ApiBase string
	Command string
	Args    []string
	Opts    map[string]string
	Body    io.Reader
	Headers map[string]string
}

func NewRequest

func NewRequest(ctx context.Context, url, command string, args ...string) *Request

func (*Request) Send

func (r *Request) Send(c *http.Client) (*Response, error)

type RequestBuilder

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

RequestBuilder is an IPFS commands request builder.

func (*RequestBuilder) Arguments

func (r *RequestBuilder) Arguments(args ...string) *RequestBuilder

Arguments adds the arguments to the args.

func (*RequestBuilder) Body

func (r *RequestBuilder) Body(body io.Reader) *RequestBuilder

Body sets the request body to the given reader.

func (*RequestBuilder) BodyBytes

func (r *RequestBuilder) BodyBytes(body []byte) *RequestBuilder

BodyBytes sets the request body to the given buffer.

func (*RequestBuilder) BodyString

func (r *RequestBuilder) BodyString(body string) *RequestBuilder

BodyString sets the request body to the given string.

func (*RequestBuilder) Exec

func (r *RequestBuilder) Exec(ctx context.Context, res interface{}) error

Exec sends the request a request and decodes the response.

func (*RequestBuilder) Header

func (r *RequestBuilder) Header(name, value string) *RequestBuilder

Header sets the given header.

func (*RequestBuilder) Option

func (r *RequestBuilder) Option(key string, value interface{}) *RequestBuilder

Option sets the given option.

func (*RequestBuilder) Send

func (r *RequestBuilder) Send(ctx context.Context) (*Response, error)

Send sends the request and return the response.

type Response

type Response struct {
	Output io.ReadCloser
	Error  *Error
}

func (*Response) Close

func (r *Response) Close() error

func (*Response) Decode

func (r *Response) Decode(dec interface{}) error

type Shard added in v0.1.7

type Shard struct {
	ContractId string
	Price      int64
	Host       string
	Status     string
}

type Shell

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

func NewLocalShell

func NewLocalShell() *Shell

func NewShell

func NewShell(url string) *Shell

func NewShellWithClient

func NewShellWithClient(url string, client *gohttp.Client) *Shell

func (*Shell) Add

func (s *Shell) Add(r io.Reader, options ...AddOpts) (string, error)

func (*Shell) AddDir

func (s *Shell) AddDir(dir string) (string, error)
func (s *Shell) AddLink(target string) (string, error)

func (*Shell) AddMultiPartFileDir added in v0.2.0

func (s *Shell) AddMultiPartFileDir(dir files.Directory, reedSolomon bool) (string, error)

func (*Shell) AddNoPin

func (s *Shell) AddNoPin(r io.Reader) (string, error)

AddNoPin adds a file to btfs without pinning it Deprecated: Use Add() with option functions instead

func (*Shell) AddSerialFileDir added in v0.2.0

func (s *Shell) AddSerialFileDir(dir string, reedSolomon bool) (string, error)

AddDir adds a directory recursively with all of the files under it

func (*Shell) AddSlicedDirectory added in v0.2.0

func (s *Shell) AddSlicedDirectory(dir files.Directory, reedSolomon bool) (string, error)

func (*Shell) AddWithOpts

func (s *Shell) AddWithOpts(r io.Reader, pin bool, rawLeaves bool) (string, error)

AddWithOpts adds a file to btfs with some additional options Deprecated: Use Add() with option functions instead

func (*Shell) BlockGet

func (s *Shell) BlockGet(path string) ([]byte, error)

func (*Shell) BlockPut

func (s *Shell) BlockPut(block []byte, format, mhtype string, mhlen int) (string, error)

func (*Shell) BlockStat

func (s *Shell) BlockStat(path string) (string, int, error)

func (*Shell) BootstrapAdd

func (s *Shell) BootstrapAdd(peers []string) ([]string, error)

func (*Shell) BootstrapAddDefault

func (s *Shell) BootstrapAddDefault() ([]string, error)

func (*Shell) BootstrapRmAll

func (s *Shell) BootstrapRmAll() ([]string, error)

func (*Shell) Cat

func (s *Shell) Cat(path string) (io.ReadCloser, error)

Cat the content at the given path. Callers need to drain and close the returned reader after usage.

func (*Shell) DagGet

func (s *Shell) DagGet(ref string, out interface{}) error

func (*Shell) DagPut

func (s *Shell) DagPut(data interface{}, ienc, kind string) (string, error)

func (*Shell) DagPutWithOpts

func (s *Shell) DagPutWithOpts(data interface{}, opts ...options.DagPutOption) (string, error)

func (*Shell) FileList

func (s *Shell) FileList(path string) (*UnixLsObject, error)

FileList entries at the given path using the UnixFS commands

func (*Shell) FilesChcid added in v0.4.0

func (s *Shell) FilesChcid(ctx context.Context, path string, options ...FilesOpt) error

FilesChcid change the cid version or hash function of the root node of a given path

func (*Shell) FilesCp added in v0.4.0

func (s *Shell) FilesCp(ctx context.Context, src string, dest string) error

FilesCp copy any IPFS files and directories into MFS (or copy within MFS)

func (*Shell) FilesFlush added in v0.4.0

func (s *Shell) FilesFlush(ctx context.Context, path string) (string, error)

FilesFlush flush a given path's data to disk

func (*Shell) FilesLs added in v0.4.0

func (s *Shell) FilesLs(ctx context.Context, path string, options ...FilesOpt) ([]*MfsLsEntry, error)

FilesLs list directories in the local mutable namespace

func (*Shell) FilesMkdir added in v0.4.0

func (s *Shell) FilesMkdir(ctx context.Context, path string, options ...FilesOpt) error

FilesMkdir make directories

func (*Shell) FilesMv added in v0.4.0

func (s *Shell) FilesMv(ctx context.Context, src string, dest string) error

FilesMv move files

func (*Shell) FilesRead added in v0.4.0

func (s *Shell) FilesRead(ctx context.Context, path string, options ...FilesOpt) (io.ReadCloser, error)

FilesRead read a file in a given MFS

func (*Shell) FilesRm added in v0.4.0

func (s *Shell) FilesRm(ctx context.Context, path string, force bool) error

FilesRm remove a file

func (*Shell) FilesStat added in v0.4.0

func (s *Shell) FilesStat(ctx context.Context, path string, options ...FilesOpt) (*FilesStatObject, error)

FilesStat display file status

func (*Shell) FilesWrite added in v0.4.0

func (s *Shell) FilesWrite(ctx context.Context, path string, data io.Reader, options ...FilesOpt) error

FilesWrite write to a mutable file in a given filesystem

func (*Shell) FindPeer

func (s *Shell) FindPeer(peer string) (*PeerInfo, error)

func (*Shell) Get

func (s *Shell) Get(hash, outdir string) error

func (*Shell) GetLogs added in v0.1.1

func (s *Shell) GetLogs(ctx context.Context) (Logger, error)

GetLogs is used to retrieve a parsable logger object

func (*Shell) GetUts added in v0.1.7

func (s *Shell) GetUts() string

func (*Shell) ID

func (s *Shell) ID(peer ...string) (*IdOutput, error)

ID gets information about a given peer. Arguments:

peer: peer.ID of the node to look up. If no peer is specified,

return information about the local peer.

func (*Shell) IsUp

func (s *Shell) IsUp() bool

func (*Shell) KeyGen added in v0.4.0

func (s *Shell) KeyGen(ctx context.Context, name string, options ...KeyOpt) (*Key, error)

KeyGen Create a new keypair

func (*Shell) KeyList added in v0.4.0

func (s *Shell) KeyList(ctx context.Context) ([]*Key, error)

KeyList List all local keypairs

func (*Shell) KeyRename added in v0.4.0

func (s *Shell) KeyRename(ctx context.Context, old string, new string, force bool) (*KeyRenameObject, error)

KeyRename Rename a keypair

func (*Shell) KeyRm added in v0.4.0

func (s *Shell) KeyRm(ctx context.Context, name string) ([]*Key, error)

KeyRm remove a keypair

func (*Shell) List

func (s *Shell) List(path string) ([]*LsLink, error)

List entries at the given path

func (*Shell) NewObject

func (s *Shell) NewObject(template string) (string, error)

func (*Shell) ObjectGet

func (s *Shell) ObjectGet(path string) (*IpfsObject, error)

func (*Shell) ObjectPut

func (s *Shell) ObjectPut(obj *IpfsObject) (string, error)

func (*Shell) ObjectStat

func (s *Shell) ObjectStat(key string) (*ObjectStats, error)

ObjectStat gets stats for the DAG object named by key. It returns the stats of the requested Object or an error.

func (*Shell) Patch

func (s *Shell) Patch(root, action string, args ...string) (string, error)

func (*Shell) PatchData

func (s *Shell) PatchData(root string, set bool, data interface{}) (string, error)
func (s *Shell) PatchLink(root, path, childhash string, create bool) (string, error)

func (*Shell) Pin

func (s *Shell) Pin(path string) error

Pin the given path

func (*Shell) Pins

func (s *Shell) Pins() (map[string]PinInfo, error)

Pins returns a map of the pin hashes to their info (currently just the pin type, one of DirectPin, RecursivePin, or IndirectPin). A map is returned instead of a slice because it is easier to do existence lookup by map key than unordered array searching. The map is likely to be more useful to a client than a flat list.

func (*Shell) PinsStream added in v0.3.0

func (s *Shell) PinsStream(ctx context.Context) (<-chan PinStreamInfo, error)

PinsStream is a streamed version of Pins. It returns a channel of the pins with their type, one of DirectPin, RecursivePin, or IndirectPin.

func (*Shell) PubSubPublish

func (s *Shell) PubSubPublish(topic, data string) (err error)

func (*Shell) PubSubSubscribe

func (s *Shell) PubSubSubscribe(topic string) (*PubSubSubscription, error)

func (*Shell) Publish

func (s *Shell) Publish(node string, value string) error

Publish updates a mutable name to point to a given value

func (*Shell) PublishWithDetails

func (s *Shell) PublishWithDetails(contentHash, key string, lifetime, ttl time.Duration, resolve bool) (*PublishResponse, error)

PublishWithDetails is used for fine grained control over record publishing

func (*Shell) Refs

func (s *Shell) Refs(hash string, recursive bool) (<-chan string, error)

func (*Shell) Remove added in v0.1.4

func (s *Shell) Remove(hash string) bool

Remove file by hash.

func (*Shell) Request

func (s *Shell) Request(command string, args ...string) *RequestBuilder

func (*Shell) Resolve

func (s *Shell) Resolve(id string) (string, error)

Resolve gets resolves the string provided to an /ipns/[name]. If asked to resolve an empty string, resolve instead resolves the node's own /ipns value.

func (*Shell) ResolvePath

func (s *Shell) ResolvePath(path string) (string, error)

func (*Shell) SetTimeout

func (s *Shell) SetTimeout(d time.Duration)

func (*Shell) StatsBW

func (s *Shell) StatsBW(ctx context.Context) (*p2pmetrics.Stats, error)

ObjectStat gets stats for the DAG object named by key. It returns the stats of the requested Object or an error.

func (*Shell) StorageUpload added in v0.1.4

func (s *Shell) StorageUpload(hash string, options ...StorageUploadOpts) (string, error)

Storage upload api.

func (*Shell) StorageUploadGetContractBatch added in v0.1.7

func (s *Shell) StorageUploadGetContractBatch(sid string, uts string, t string) (*Contracts, error)

Storage upload get offline contract batch api.

func (*Shell) StorageUploadGetUnsignedData added in v0.1.7

func (s *Shell) StorageUploadGetUnsignedData(sid string, uts string, sessionStatus string) (*UnsignedData, error)

Storage upload get offline unsigned data api.

func (*Shell) StorageUploadOffSign added in v0.1.7

func (s *Shell) StorageUploadOffSign(hash string, uts string, options ...StorageUploadOpts) (string, error)

Storage upload api.

func (*Shell) StorageUploadSign added in v0.1.7

func (s *Shell) StorageUploadSign(id string, hash string, unsignedData *UnsignedData, uts string, sessionStatus string) ([]byte, error)

Storage upload sign offline data api.

func (*Shell) StorageUploadSignBalance added in v0.1.7

func (s *Shell) StorageUploadSignBalance(id string, unsignedData *UnsignedData, uts string, sessionStatus string) error

func (*Shell) StorageUploadSignBatch added in v0.1.7

func (s *Shell) StorageUploadSignBatch(sid string, unsignedBatchContracts *Contracts, uts string, t string) error

Storage upload sign offline contract batch api.

func (*Shell) StorageUploadSignGuardFileMeta added in v0.1.7

func (s *Shell) StorageUploadSignGuardFileMeta(id string, unsignedData *UnsignedData,
	uts string, sessionStatus string) error

func (*Shell) StorageUploadSignGuardQuestions added in v0.2.2

func (s *Shell) StorageUploadSignGuardQuestions(id string, unsignedData *UnsignedData,
	uts string, sessionStatus string) error

func (*Shell) StorageUploadSignPayChannel added in v0.1.7

func (s *Shell) StorageUploadSignPayChannel(id string, unsignedData *UnsignedData, uts string, sessionStatus string,
	totalPrice int64) error

func (*Shell) StorageUploadSignPayRequest added in v0.1.7

func (s *Shell) StorageUploadSignPayRequest(id string, unsignedData *UnsignedData, uts string,
	sessionStatus string) error

func (*Shell) StorageUploadSignWaitupload added in v0.2.2

func (s *Shell) StorageUploadSignWaitupload(id string, unsignedData *UnsignedData,
	uts string, sessionStatus string) error

func (*Shell) StorageUploadStatus added in v0.1.4

func (s *Shell) StorageUploadStatus(id string) (*Storage, error)

Storage upload status api.

func (*Shell) SwarmConnect

func (s *Shell) SwarmConnect(ctx context.Context, addr ...string) error

SwarmConnect opens a swarm connection to a specific address.

func (*Shell) SwarmPeers

func (s *Shell) SwarmPeers(ctx context.Context) (*SwarmConnInfos, error)

SwarmPeers gets all the swarm peers

func (*Shell) Unpin

func (s *Shell) Unpin(path string) error

Unpin the given path

func (*Shell) Version

func (s *Shell) Version() (string, string, error)

returns btfs version and commit sha

type Storage added in v0.1.4

type Storage struct {
	Status   string
	Message  string
	FileHash string
	Shards   map[string]Shard
}

type StorageOpts added in v0.1.7

type StorageOpts = func(*RequestBuilder) error

func Hosts added in v0.1.7

func Hosts(hosts string) StorageOpts

func UploadMode added in v0.1.7

func UploadMode(mode string) StorageOpts

type StorageUploadOpts added in v0.1.5

type StorageUploadOpts = func(*RequestBuilder) error

func StorageLength added in v0.1.5

func StorageLength(length int) StorageUploadOpts

Set storage upload time.

type SwarmConnInfo

type SwarmConnInfo struct {
	Addr    string
	Peer    string
	Latency string
	Muxer   string
	Streams []SwarmStreamInfo
}

type SwarmConnInfos

type SwarmConnInfos struct {
	Peers []SwarmConnInfo
}

type SwarmStreamInfo

type SwarmStreamInfo struct {
	Protocol string
}
type UnixLsLink struct {
	Hash string
	Name string
	Size uint64
	Type string
}

type UnixLsObject

type UnixLsObject struct {
	Hash  string
	Size  uint64
	Type  string
	Links []*UnixLsLink
}

type UnsignedData added in v0.1.7

type UnsignedData struct {
	Unsigned string
	Opcode   string
	Price    int64
}

func (UnsignedData) SignBalanceData added in v0.1.7

func (d UnsignedData) SignBalanceData(privateKey string) (*ledgerpb.SignedPublicKey, error)

func (UnsignedData) SignData added in v0.1.7

func (d UnsignedData) SignData(privateKey string) ([]byte, error)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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