README
¶
go-ipfs-api
The go interface to ipfs's HTTP API
Install
go install github.com/doubox/go-ipfs-api@latest
This will download the source into $GOPATH/src/github.com/doubox/go-ipfs-api
.
Usage
See the godocs for details on available methods. This should match the specs at ipfs/specs (Core API); however, there are still some methods which are not accounted for. If you would like to add any of them, see the contribute section below. See also the HTTP API.
Example
Add a file with the contents "hello world!":
package main
import (
"fmt"
"strings"
"os"
shell "github.com/doubox/go-ipfs-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/doubox/go-ipfs-api/blob/master/tests/main.go
Contribute
Contributions are welcome! Please check out the issues.
Want to hack on IPFS?
License
MIT
Documentation
¶
Overview ¶
package shell implements a remote API interface for a running ipfs daemon
Index ¶
- Constants
- Variables
- type AddOpts
- type Error
- type FilesOpt
- type FilesStatObject
- type IdOutput
- type IpfsObject
- type Key
- type KeyOpt
- type KeyRenameObject
- type LsLink
- type LsObject
- type Message
- type MfsLsEntry
- type ObjectLink
- type ObjectStats
- type PeerInfo
- type PeerStatus
- type PeeringLsOutput
- type PeersList
- type PinInfo
- type PinStreamInfo
- type PinType
- type PubSubSubscription
- type PublishResponse
- type Request
- type RequestBuilder
- func (r *RequestBuilder) Arguments(args ...string) *RequestBuilder
- func (r *RequestBuilder) Body(body io.Reader) *RequestBuilder
- func (r *RequestBuilder) BodyBytes(body []byte) *RequestBuilder
- func (r *RequestBuilder) BodyString(body string) *RequestBuilder
- func (r *RequestBuilder) Exec(ctx context.Context, res interface{}) error
- func (r *RequestBuilder) Header(name, value string) *RequestBuilder
- func (r *RequestBuilder) Option(key string, value interface{}) *RequestBuilder
- func (r *RequestBuilder) Send(ctx context.Context) (*Response, error)
- type Response
- type Shell
- func (s *Shell) Add(r io.Reader, options ...AddOpts) (string, error)
- func (s *Shell) AddDir(dir string) (string, error)
- func (s *Shell) AddLink(target string) (string, error)
- func (s *Shell) AddNoPin(r io.Reader) (string, error)
- func (s *Shell) AddWithOpts(r io.Reader, pin bool, rawLeaves bool) (string, error)
- func (s *Shell) BlockGet(path string) ([]byte, error)
- func (s *Shell) BlockPut(block []byte, format, mhtype string, mhlen int) (string, error)
- func (s *Shell) BlockStat(path string) (string, int, error)
- func (s *Shell) BootstrapAdd(peers []string) ([]string, error)
- func (s *Shell) BootstrapAddDefault() ([]string, error)
- func (s *Shell) BootstrapRmAll() ([]string, error)
- func (s *Shell) Cat(path string) (io.ReadCloser, error)
- func (s *Shell) DagGet(ref string, out interface{}) error
- func (s *Shell) DagPut(data interface{}, inputCodec, storeCodec string) (string, error)
- func (s *Shell) DagPutWithOpts(data interface{}, opts ...options.DagPutOption) (string, error)
- func (s *Shell) FileList(path string) (*UnixLsObject, error)
- func (s *Shell) FilesChcid(ctx context.Context, path string, options ...FilesOpt) error
- func (s *Shell) FilesCp(ctx context.Context, src string, dest string) error
- func (s *Shell) FilesFlush(ctx context.Context, path string) (string, error)
- func (s *Shell) FilesLs(ctx context.Context, path string, options ...FilesOpt) ([]*MfsLsEntry, error)
- func (s *Shell) FilesMkdir(ctx context.Context, path string, options ...FilesOpt) error
- func (s *Shell) FilesMv(ctx context.Context, src string, dest string) error
- func (s *Shell) FilesRead(ctx context.Context, path string, options ...FilesOpt) (io.ReadCloser, error)
- func (s *Shell) FilesRm(ctx context.Context, path string, force bool) error
- func (s *Shell) FilesStat(ctx context.Context, path string, options ...FilesOpt) (*FilesStatObject, error)
- func (s *Shell) FilesWrite(ctx context.Context, path string, data io.Reader, options ...FilesOpt) error
- func (s *Shell) FindPeer(peer string) (*PeerInfo, error)
- func (s *Shell) Get(hash, outdir string) error
- func (s *Shell) ID(peer ...string) (*IdOutput, error)
- func (s *Shell) IsUp() bool
- func (s *Shell) KeyGen(ctx context.Context, name string, options ...KeyOpt) (*Key, error)
- func (s *Shell) KeyList(ctx context.Context) ([]*Key, error)
- func (s *Shell) KeyRename(ctx context.Context, old string, new string, force bool) (*KeyRenameObject, error)
- func (s *Shell) KeyRm(ctx context.Context, name string) ([]*Key, error)
- func (s *Shell) List(path string) ([]*LsLink, error)
- func (s *Shell) NewObject(template string) (string, error)
- func (s *Shell) ObjectGet(path string) (*IpfsObject, error)
- func (s *Shell) ObjectPut(obj *IpfsObject) (string, error)
- func (s *Shell) ObjectStat(key string) (*ObjectStats, error)
- func (s *Shell) Patch(root, action string, args ...string) (string, error)
- 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 (s *Shell) Pin(path string) error
- func (s *Shell) Pins() (map[string]PinInfo, error)
- func (s *Shell) PinsOfType(ctx context.Context, pinType PinType) (map[string]PinInfo, error)
- func (s *Shell) PinsStream(ctx context.Context) (<-chan PinStreamInfo, error)
- func (s *Shell) PubSubPublish(topic, data string) (err error)
- func (s *Shell) PubSubSubscribe(topic string) (*PubSubSubscription, error)
- func (s *Shell) Publish(node string, value string) error
- func (s *Shell) PublishWithDetails(contentHash, key string, lifetime, ttl time.Duration, resolve bool) (*PublishResponse, error)
- func (s *Shell) Refs(hash string, recursive bool) (<-chan string, error)
- func (s *Shell) Request(command string, args ...string) *RequestBuilder
- func (s *Shell) Resolve(id string) (string, error)
- func (s *Shell) ResolvePath(path string) (string, error)
- func (s *Shell) SetTimeout(d time.Duration)
- func (s *Shell) StatsBW(ctx context.Context) (*p2pmetrics.Stats, error)
- func (s *Shell) SwarmConnect(ctx context.Context, addr ...string) error
- func (s *Shell) SwarmPeeringAdd(ctx context.Context, addr string) (*PeerStatus, error)
- func (s *Shell) SwarmPeeringLs(ctx context.Context) (*PeeringLsOutput, error)
- func (s *Shell) SwarmPeers(ctx context.Context) (*SwarmConnInfos, error)
- func (s *Shell) Unpin(path string) error
- func (s *Shell) Version() (string, string, error)
- type SwarmConnInfo
- type SwarmConnInfos
- type SwarmStreamInfo
- type UnixLsLink
- type UnixLsObject
Constants ¶
const ( DefaultPathName = ".ipfs" DefaultPathRoot = "~/" + DefaultPathName DefaultApiFile = "api" EnvDir = "IPFS_PATH" )
const ( TRaw = iota TDirectory TFile TMetadata TSymlink )
Variables ¶
var ( FilesLs filesLs FilesChcid filesChcid FilesMkdir filesMkdir FilesRead filesRead FilesWrite filesWrite FilesStat filesStat )
var KeyGen keyGen
Functions ¶
This section is empty.
Types ¶
type AddOpts ¶
type AddOpts = func(*RequestBuilder) error
func CidVersion ¶
CidVersion allows for selecting the CID version that ipfs should use.
type FilesOpt ¶
type FilesOpt func(*RequestBuilder) error
type FilesStatObject ¶
type IpfsObject ¶
type IpfsObject struct { Links []ObjectLink Data string }
type KeyOpt ¶
type KeyOpt func(*RequestBuilder) error
type KeyRenameObject ¶
type ObjectLink ¶
type ObjectStats ¶
type PeerStatus ¶
type PeeringLsOutput ¶
type PeeringLsOutput struct {
Peers []PeerInfo
}
type PinStreamInfo ¶
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 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 ¶
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.
type Response ¶
type Response struct { Output io.ReadCloser Error *Error }
type Shell ¶
type Shell struct {
// contains filtered or unexported fields
}
func NewLocalShell ¶
func NewLocalShell() *Shell
func (*Shell) AddNoPin ¶
AddNoPin adds a file to ipfs without pinning it Deprecated: Use Add() with option functions instead
func (*Shell) AddWithOpts ¶
AddWithOpts adds a file to ipfs with some additional options Deprecated: Use Add() with option functions instead
func (*Shell) BootstrapAddDefault ¶
func (*Shell) BootstrapRmAll ¶
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) 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 ¶
FilesChcid change the cid version or hash function of the root node of a given path
func (*Shell) FilesFlush ¶
FilesFlush flush a given path's data to disk
func (*Shell) FilesLs ¶
func (s *Shell) FilesLs(ctx context.Context, path string, options ...FilesOpt) ([]*MfsLsEntry, error)
FilesLs list directories in the local mutable namespace
func (*Shell) FilesMkdir ¶
FilesMkdir make directories
func (*Shell) FilesRead ¶
func (s *Shell) FilesRead(ctx context.Context, path string, options ...FilesOpt) (io.ReadCloser, error)
FilesRead read a file in a given MFS
func (*Shell) FilesStat ¶
func (s *Shell) FilesStat(ctx context.Context, path string, options ...FilesOpt) (*FilesStatObject, error)
FilesStat display file status
func (*Shell) FilesWrite ¶
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) ID ¶
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) KeyRename ¶
func (s *Shell) KeyRename(ctx context.Context, old string, new string, force bool) (*KeyRenameObject, error)
KeyRename Rename a keypair
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) Pins ¶
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) PinsOfType ¶
Pins returns a map of the pins of specified type (DirectPin, RecursivePin, or IndirectPin)
func (*Shell) PinsStream ¶
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 (*Shell) PubSubSubscribe ¶
func (s *Shell) PubSubSubscribe(topic string) (*PubSubSubscription, error)
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) Resolve ¶
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) SetTimeout ¶
func (*Shell) StatsBW ¶
ObjectStat gets stats for the DAG object named by key. It returns the stats of the requested Object or an error.
func (*Shell) SwarmConnect ¶
SwarmConnect opens a swarm connection to a specific address.
func (*Shell) SwarmPeeringAdd ¶
SwarmPeeringAdd adds a peer into the peering subsysytem.
func (*Shell) SwarmPeeringLs ¶
func (s *Shell) SwarmPeeringLs(ctx context.Context) (*PeeringLsOutput, error)
SwarmPeeringLs lists peers registered in the peering subsystem
func (*Shell) SwarmPeers ¶
func (s *Shell) SwarmPeers(ctx context.Context) (*SwarmConnInfos, error)
SwarmPeers gets all the swarm peers
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 UnixLsObject ¶
type UnixLsObject struct { Hash string Size uint64 Type string Links []*UnixLsLink }