REST file import endpoint

This commit is contained in:
Łukasz Magiera
2019-10-23 11:39:44 +02:00
parent 855b1fdd6e
commit aab3bd617a
9 changed files with 111 additions and 32 deletions
+25
View File
@@ -4,6 +4,7 @@ import (
"context"
"errors"
"golang.org/x/xerrors"
"io"
"os"
"github.com/ipfs/go-blockservice"
@@ -213,6 +214,30 @@ func (a *API) ClientImport(ctx context.Context, path string) (cid.Cid, error) {
return nd.Cid(), bufferedDS.Commit()
}
func (a *API) ClientImportLocal(ctx context.Context, f io.Reader) (cid.Cid, error) {
file := files.NewReaderFile(f)
bufferedDS := ipld.NewBufferedDAG(ctx, a.LocalDAG)
params := ihelper.DagBuilderParams{
Maxlinks: build.UnixfsLinksPerLevel,
RawLeaves: true,
CidBuilder: nil,
Dagserv: bufferedDS,
}
db, err := params.New(chunker.NewSizeSplitter(file, int64(build.UnixfsChunkSize)))
if err != nil {
return cid.Undef, err
}
nd, err := balanced.Layout(db)
if err != nil {
return cid.Undef, err
}
return nd.Cid(), bufferedDS.Commit()
}
func (a *API) ClientListImports(ctx context.Context) ([]api.Import, error) {
if a.Filestore == nil {
return nil, errors.New("listing imports is not supported with in-memory dag yet")