Documentation ¶
Index ¶
- Constants
- Variables
- func RegularSlashes(path string) (res string)
- type API
- func (a *API) AddFile(ctx context.Context, mhash, path, fname string, content []byte, ...) (storage.Address, string, error)
- func (a *API) AppendFile(ctx context.Context, mhash, path, fname string, existingSize int64, ...) (storage.Address, string, error)
- func (a *API) BuildDirectoryTree(ctx context.Context, mhash string, nameresolver bool) (addr storage.Address, manifestEntryMap map[string]*manifestTrieEntry, ...)
- func (a *API) Delete(ctx context.Context, addr string, path string) (storage.Address, error)
- func (a *API) Get(ctx context.Context, manifestAddr storage.Address, path string) (reader storage.LazySectionReader, mimeType string, status int, ...)
- func (a *API) GetDirectoryTar(ctx context.Context, uri *URI) (io.ReadCloser, error)
- func (a *API) GetManifestList(ctx context.Context, addr storage.Address, prefix string) (list ManifestList, err error)
- func (a *API) Modify(ctx context.Context, addr storage.Address, ...) (storage.Address, error)
- func (a *API) NewManifest(ctx context.Context, toEncrypt bool) (storage.Address, error)
- func (a *API) NewManifestWalker(ctx context.Context, addr storage.Address, quitC chan bool) (*ManifestWalker, error)
- func (a *API) NewManifestWriter(ctx context.Context, addr storage.Address, quitC chan bool) (*ManifestWriter, error)
- func (a *API) NewResourceManifest(ctx context.Context, resourceAddr string) (storage.Address, error)
- func (a *API) Put(ctx context.Context, content string, contentType string, toEncrypt bool) (k storage.Address, wait func(context.Context) error, err error)
- func (a *API) RemoveFile(ctx context.Context, mhash string, path string, fname string, ...) (string, error)
- func (a *API) Resolve(ctx context.Context, uri *URI) (storage.Address, error)
- func (a *API) ResolveResourceManifest(ctx context.Context, addr storage.Address) (storage.Address, error)
- func (a *API) ResourceCreate(ctx context.Context, name string, frequency uint64) (storage.Address, error)
- func (a *API) ResourceHashSize() int
- func (a *API) ResourceIsValidated() bool
- func (a *API) ResourceLookup(ctx context.Context, addr storage.Address, period uint32, version uint32, ...) (string, []byte, error)
- func (a *API) ResourceUpdate(ctx context.Context, name string, data []byte) (storage.Address, uint32, uint32, error)
- func (a *API) ResourceUpdateMultihash(ctx context.Context, name string, data []byte) (storage.Address, uint32, uint32, error)
- func (a *API) Retrieve(ctx context.Context, addr storage.Address) (reader storage.LazySectionReader, isEncrypted bool)
- func (a *API) Store(ctx context.Context, data io.Reader, size int64, toEncrypt bool) (addr storage.Address, wait func(ctx context.Context) error, err error)
- func (a *API) UpdateManifest(ctx context.Context, addr storage.Address, ...) (storage.Address, error)
- func (a *API) Upload(ctx context.Context, uploadDir, index string, toEncrypt bool) (hash string, err error)
- func (a *API) UploadTar(ctx context.Context, bodyReader io.ReadCloser, manifestPath string, ...) (storage.Address, error)
- type Config
- type Control
- type ErrResolve
- type FileSystem
- type Manifest
- type ManifestEntry
- type ManifestList
- type ManifestWalker
- type ManifestWriter
- type MultiResolver
- func (m *MultiResolver) HeaderByNumber(ctx context.Context, name string, blockNr *big.Int) (*types.Header, error)
- func (m *MultiResolver) Resolve(addr string) (h common.Hash, err error)
- func (m *MultiResolver) SetNameHash(nameHash func(string) common.Hash)
- func (m *MultiResolver) ValidateOwner(name string, address common.Address) (bool, error)
- type MultiResolverOption
- type NoResolverError
- type ResolveValidator
- type Resolver
- type Response
- type Storage
- func (s *Storage) Get(ctx context.Context, bzzpath string) (*Response, error)
- func (s *Storage) Modify(ctx context.Context, rootHash, path, contentHash, contentType string) (newRootHash string, err error)
- func (s *Storage) Put(ctx context.Context, content string, contentType string, toEncrypt bool) (storage.Address, func(context.Context) error, error)
- type URI
- type WalkFn
Constants ¶
const ( DefaultHTTPListenAddr = "127.0.0.1" DefaultHTTPPort = "8500" )
const ( ManifestType = "application/bzz-manifest+json" ResourceContentType = "application/bzz-resource" )
Variables ¶
var ErrSkipManifest = errors.New("skip this manifest")
ErrSkipManifest is used as a return value from WalkFn to indicate that the manifest should be skipped
Functions ¶
func RegularSlashes ¶
file system manifest always contains regularized paths no leading or trailing slashes, only single slashes inside
Types ¶
type API ¶
type API struct {
// contains filtered or unexported fields
}
API implements webserver/file system related content storage and retrieval on top of the FileStore it is the public interface of the FileStore which is included in the ethereum stack
func (*API) AddFile ¶
func (a *API) AddFile(ctx context.Context, mhash, path, fname string, content []byte, nameresolver bool) (storage.Address, string, error)
AddFile creates a new manifest entry, adds it to swarm, then adds a file to swarm.
func (*API) AppendFile ¶
func (a *API) AppendFile(ctx context.Context, mhash, path, fname string, existingSize int64, content []byte, oldAddr storage.Address, offset int64, addSize int64, nameresolver bool) (storage.Address, string, error)
AppendFile removes old manifest, appends file entry to new manifest and adds it to Swarm.
func (*API) BuildDirectoryTree ¶
func (a *API) BuildDirectoryTree(ctx context.Context, mhash string, nameresolver bool) (addr storage.Address, manifestEntryMap map[string]*manifestTrieEntry, err error)
BuildDirectoryTree used by swarmfs_unix
func (*API) Get ¶
func (a *API) Get(ctx context.Context, manifestAddr storage.Address, path string) (reader storage.LazySectionReader, mimeType string, status int, contentAddr storage.Address, err error)
Get uses iterative manifest retrieval and prefix matching to resolve basePath to content using FileStore retrieve it returns a section reader, mimeType, status, the key of the actual content and an error
func (*API) GetDirectoryTar ¶
GetDirectoryTar fetches a requested directory as a tarstream it returns an io.Reader and an error. Do not forget to Close() the returned ReadCloser
func (*API) GetManifestList ¶
func (a *API) GetManifestList(ctx context.Context, addr storage.Address, prefix string) (list ManifestList, err error)
GetManifestList lists the manifest entries for the specified address and prefix and returns it as a ManifestList
func (*API) Modify ¶
func (a *API) Modify(ctx context.Context, addr storage.Address, path, contentHash, contentType string) (storage.Address, error)
Modify loads manifest and checks the content hash before recalculating and storing the manifest.
func (*API) NewManifest ¶
NewManifest creates and stores a new, empty manifest
func (*API) NewManifestWalker ¶
func (*API) NewManifestWriter ¶
func (*API) NewResourceManifest ¶
func (a *API) NewResourceManifest(ctx context.Context, resourceAddr string) (storage.Address, error)
Manifest hack for supporting Mutable Resource Updates from the bzz: scheme see swarm/api/api.go:API.Get() for more information
func (*API) Put ¶
func (a *API) Put(ctx context.Context, content string, contentType string, toEncrypt bool) (k storage.Address, wait func(context.Context) error, err error)
Put provides singleton manifest creation on top of FileStore store
func (*API) RemoveFile ¶
func (a *API) RemoveFile(ctx context.Context, mhash string, path string, fname string, nameresolver bool) (string, error)
RemoveFile removes a file entry in a manifest.
func (*API) ResolveResourceManifest ¶
func (a *API) ResolveResourceManifest(ctx context.Context, addr storage.Address) (storage.Address, error)
ResolveResourceManifest retrieves the Mutable Resource manifest for the given address, and returns the address of the metadata chunk.
func (*API) ResourceCreate ¶
func (a *API) ResourceCreate(ctx context.Context, name string, frequency uint64) (storage.Address, error)
ResourceCreate creates Resource and returns its key
func (*API) ResourceHashSize ¶
ResourceHashSize returned the size of the digest produced by the Mutable Resource hashing function
func (*API) ResourceIsValidated ¶
ResourceIsValidated checks if the Mutable Resource has an active content validator.
func (*API) ResourceLookup ¶
func (a *API) ResourceLookup(ctx context.Context, addr storage.Address, period uint32, version uint32, maxLookup *mru.LookupParams) (string, []byte, error)
ResourceLookup Looks up mutable resource updates at specific periods and versions
func (*API) ResourceUpdate ¶
func (a *API) ResourceUpdate(ctx context.Context, name string, data []byte) (storage.Address, uint32, uint32, error)
ResourceUpdate updates a Mutable Resource with arbitrary data. Upon retrieval the update will be retrieved verbatim as bytes.
func (*API) ResourceUpdateMultihash ¶
func (a *API) ResourceUpdateMultihash(ctx context.Context, name string, data []byte) (storage.Address, uint32, uint32, error)
ResourceUpdateMultihash updates a Mutable Resource and marks the update's content to be of multihash type, which will be recognized upon retrieval. It will fail if the data is not a valid multihash.
func (*API) Retrieve ¶
func (a *API) Retrieve(ctx context.Context, addr storage.Address) (reader storage.LazySectionReader, isEncrypted bool)
Retrieve FileStore reader API
func (*API) Store ¶
func (a *API) Store(ctx context.Context, data io.Reader, size int64, toEncrypt bool) (addr storage.Address, wait func(ctx context.Context) error, err error)
Store wraps the Store API call of the embedded FileStore
func (*API) UpdateManifest ¶
type Config ¶
type Config struct { // serialised/persisted fields *storage.FileStoreParams *storage.LocalStoreParams *network.HiveParams Swap *swap.LocalProfile Pss *pss.PssParams //*network.SyncParams Contract common.Address EnsRoot common.Address EnsAPIs []string Path string ListenAddr string Port string PublicKey string BzzKey string NodeID string NetworkID uint64 SwapEnabled bool SyncEnabled bool DeliverySkipCheck bool SyncUpdateDelay time.Duration SwapAPI string Cors string BzzAccount string BootNodes string // contains filtered or unexported fields }
separate bzz directories allow several bzz nodes running in parallel
func NewConfig ¶
func NewConfig() (c *Config)
create a default config with all parameters to set to defaults
func (*Config) Init ¶
func (c *Config) Init(prvKey *ecdsa.PrivateKey)
some config params need to be initialized after the complete config building phase is completed (e.g. due to overriding flags)
func (*Config) ShiftPrivateKey ¶
func (c *Config) ShiftPrivateKey() (privKey *ecdsa.PrivateKey)
type ErrResolve ¶
type ErrResolve error
ErrResolve is returned when an URI cannot be resolved from ENS.
type FileSystem ¶
type FileSystem struct {
// contains filtered or unexported fields
}
func NewFileSystem ¶
func NewFileSystem(api *API) *FileSystem
func (*FileSystem) Download ¶
func (fs *FileSystem) Download(bzzpath, localpath string) error
Download replicates the manifest basePath structure on the local filesystem under localpath
DEPRECATED: Use the HTTP API instead
func (*FileSystem) Upload ¶
func (fs *FileSystem) Upload(lpath, index string, toEncrypt bool) (string, error)
Upload replicates a local directory as a manifest file and uploads it using FileStore store This function waits the chunks to be stored. TODO: localpath should point to a manifest
DEPRECATED: Use the HTTP API instead
type Manifest ¶
type Manifest struct {
Entries []ManifestEntry `json:"entries,omitempty"`
}
Manifest represents a swarm manifest
type ManifestEntry ¶
type ManifestEntry struct { Hash string `json:"hash,omitempty"` Path string `json:"path,omitempty"` ContentType string `json:"contentType,omitempty"` Mode int64 `json:"mode,omitempty"` Size int64 `json:"size,omitempty"` ModTime time.Time `json:"mod_time,omitempty"` Status int `json:"status,omitempty"` }
ManifestEntry represents an entry in a swarm manifest
type ManifestList ¶
type ManifestList struct { CommonPrefixes []string `json:"common_prefixes,omitempty"` Entries []*ManifestEntry `json:"entries,omitempty"` }
ManifestList represents the result of listing files in a manifest
type ManifestWalker ¶
type ManifestWalker struct {
// contains filtered or unexported fields
}
ManifestWalker is used to recursively walk the entries in the manifest and all of its submanifests
func (*ManifestWalker) Walk ¶
func (m *ManifestWalker) Walk(walkFn WalkFn) error
Walk recursively walks the manifest calling walkFn for each entry in the manifest, including submanifests
type ManifestWriter ¶
type ManifestWriter struct {
// contains filtered or unexported fields
}
ManifestWriter is used to add and remove entries from an underlying manifest
func (*ManifestWriter) AddEntry ¶
func (m *ManifestWriter) AddEntry(ctx context.Context, data io.Reader, e *ManifestEntry) (storage.Address, error)
AddEntry stores the given data and adds the resulting key to the manifest
func (*ManifestWriter) RemoveEntry ¶
func (m *ManifestWriter) RemoveEntry(path string) error
RemoveEntry removes the given path from the manifest
type MultiResolver ¶
type MultiResolver struct {
// contains filtered or unexported fields
}
MultiResolver is used to resolve URL addresses based on their TLDs. Each TLD can have multiple resolvers, and the resoluton from the first one in the sequence will be returned.
func NewMultiResolver ¶
func NewMultiResolver(opts ...MultiResolverOption) (m *MultiResolver)
NewMultiResolver creates a new instance of MultiResolver.
func (*MultiResolver) HeaderByNumber ¶
func (m *MultiResolver) HeaderByNumber(ctx context.Context, name string, blockNr *big.Int) (*types.Header, error)
HeaderByNumber uses the validator of the given domainname and retrieves the header for the given block number
func (*MultiResolver) Resolve ¶
func (m *MultiResolver) Resolve(addr string) (h common.Hash, err error)
Resolve resolves address by choosing a Resolver by TLD. If there are more default Resolvers, or for a specific TLD, the Hash from the the first one which does not return error will be returned.
func (*MultiResolver) SetNameHash ¶
func (m *MultiResolver) SetNameHash(nameHash func(string) common.Hash)
SetNameHash sets the hasher function that hashes the domain into a name hash that ENS uses
func (*MultiResolver) ValidateOwner ¶
ValidateOwner checks the ENS to validate that the owner of the given domain is the given eth address
type MultiResolverOption ¶
type MultiResolverOption func(*MultiResolver)
MultiResolverOption sets options for MultiResolver and is used as arguments for its constructor.
func MultiResolverOptionWithNameHash ¶
func MultiResolverOptionWithNameHash(nameHash func(string) common.Hash) MultiResolverOption
MultiResolverOptionWithNameHash is unused at the time of this writing
func MultiResolverOptionWithResolver ¶
func MultiResolverOptionWithResolver(r ResolveValidator, tld string) MultiResolverOption
MultiResolverOptionWithResolver adds a Resolver to a list of resolvers for a specific TLD. If TLD is an empty string, the resolver will be added to the list of default resolver, the ones that will be used for resolution of addresses which do not have their TLD resolver specified.
type NoResolverError ¶
type NoResolverError struct {
TLD string
}
NoResolverError is returned by MultiResolver.Resolve if no resolver can be found for the address.
func NewNoResolverError ¶
func NewNoResolverError(tld string) *NoResolverError
NewNoResolverError creates a NoResolverError for the given top level domain
func (*NoResolverError) Error ¶
func (e *NoResolverError) Error() string
Error NoResolverError implements error
type ResolveValidator ¶
type ResolveValidator interface { Resolver Owner(node [32]byte) (common.Address, error) HeaderByNumber(context.Context, *big.Int) (*types.Header, error) }
ResolveValidator is used to validate the contained Resolver
type Storage ¶
type Storage struct {
// contains filtered or unexported fields
}
implements a service
DEPRECATED: Use the HTTP API instead
func NewStorage ¶
func (*Storage) Get ¶
Get retrieves the content from bzzpath and reads the response in full It returns the Response object, which serialises containing the response body as the value of the Content field NOTE: if error is non-nil, sResponse may still have partial content the actual size of which is given in len(resp.Content), while the expected size is resp.Size
DEPRECATED: Use the HTTP API instead
func (*Storage) Modify ¶
func (s *Storage) Modify(ctx context.Context, rootHash, path, contentHash, contentType string) (newRootHash string, err error)
Modify(rootHash, basePath, contentHash, contentType) takes th e manifest trie rooted in rootHash, and merge on to it. creating an entry w conentType (mime)
DEPRECATED: Use the HTTP API instead
type URI ¶
type URI struct { // Scheme has one of the following values: // // * bzz - an entry in a swarm manifest // * bzz-raw - raw swarm content // * bzz-immutable - immutable URI of an entry in a swarm manifest // (address is not resolved) // * bzz-list - list of all files contained in a swarm manifest // Scheme string // Addr is either a hexadecimal storage address or it an address which // resolves to a storage address Addr string // Path is the path to the content within a swarm manifest Path string // contains filtered or unexported fields }
URI is a reference to content stored in swarm.
func Parse ¶
Parse parses rawuri into a URI struct, where rawuri is expected to have one of the following formats:
* <scheme>:/ * <scheme>:/<addr> * <scheme>:/<addr>/<path> * <scheme>:// * <scheme>://<addr> * <scheme>://<addr>/<path>
with scheme one of bzz, bzz-raw, bzz-immutable, bzz-list or bzz-hash
type WalkFn ¶
type WalkFn func(entry *ManifestEntry) error
WalkFn is the type of function called for each entry visited by a recursive manifest walk
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Show nicely (but simple) formatted HTML error pages (or respond with JSON if the appropriate `Accept` header is set)) for the http package.
|
Show nicely (but simple) formatted HTML error pages (or respond with JSON if the appropriate `Accept` header is set)) for the http package. |