Commit 104bc87d authored by Łukasz Magiera's avatar Łukasz Magiera

coreapi: implement object.Put

License: MIT
Signed-off-by: default avatarŁukasz Magiera <magik6k@gmail.com>
parent 55c56578
......@@ -64,6 +64,9 @@ type CoreAPI interface {
// Key returns an implementation of Key API.
Key() KeyAPI
// ObjectAPI returns an implementation of Object API
Object() ObjectAPI
// ResolvePath resolves the path using Unixfs resolver
ResolvePath(context.Context, Path) (Path, error)
......@@ -205,8 +208,16 @@ type ObjectAPI interface {
// * 'unixfs-dir' - Empty UnixFS directory
WithType(string) options.ObjectNewOption
// Put imports the node into merkledag
Put(context.Context, Node) (Path, error)
// Put imports the data into merkledag
Put(context.Context, io.Reader, ...options.ObjectPutOption) (Path, error)
// WithInputEnc is an option for Put which specifies the input encoding of the
// data. Default is "json".
//
// Supported encodings:
// * "protobuf"
// * "json"
WithInputEnc(e string) options.ObjectPutOption
// Get returns the node for the path
Get(context.Context, Path) (Node, error)
......
......@@ -4,11 +4,16 @@ type ObjectNewSettings struct {
Type string
}
type ObjectPutSettings struct {
InputEnc string
}
type ObjectAddLinkSettings struct {
Create bool
}
type ObjectNewOption func(*ObjectNewSettings) error
type ObjectPutOption func(*ObjectPutSettings) error
type ObjectAddLinkOption func(*ObjectAddLinkSettings) error
func ObjectNewOptions(opts ...ObjectNewOption) (*ObjectNewSettings, error) {
......@@ -25,6 +30,20 @@ func ObjectNewOptions(opts ...ObjectNewOption) (*ObjectNewSettings, error) {
return options, nil
}
func ObjectPutOptions(opts ...ObjectPutOption) (*ObjectPutSettings, error) {
options := &ObjectPutSettings{
InputEnc: "json",
}
for _, opt := range opts {
err := opt(options)
if err != nil {
return nil, err
}
}
return options, nil
}
func ObjectAddLinkOptions(opts ...ObjectAddLinkOption) (*ObjectAddLinkSettings, error) {
options := &ObjectAddLinkSettings{
Create: false,
......@@ -48,6 +67,13 @@ func (api *ObjectOptions) WithType(t string) ObjectNewOption {
}
}
func (api *ObjectOptions) WithInputEnc(e string) ObjectPutOption {
return func(settings *ObjectPutSettings) error {
settings.InputEnc = e
return nil
}
}
func (api *ObjectOptions) WithCreate(create bool) ObjectAddLinkOption {
return func(settings *ObjectAddLinkSettings) error {
settings.Create = create
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment