Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
G
go-ipfs
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
jihao
go-ipfs
Commits
f6663bd0
提交
f6663bd0
authored
1月 04, 2018
作者:
Łukasz Magiera
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
coreapi: implement object.Put
License: MIT Signed-off-by:
Łukasz Magiera
<
magik6k@gmail.com
>
上级
64e2327e
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
57 行增加
和
8 行删除
+57
-8
interface.go
core/coreapi/interface/interface.go
+13
-2
object.go
core/coreapi/interface/options/object.go
+26
-0
object.go
core/coreapi/object.go
+9
-3
dagtransl.go
core/coredag/dagtransl.go
+9
-3
没有找到文件。
core/coreapi/interface/interface.go
浏览文件 @
f6663bd0
...
...
@@ -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
)
...
...
core/coreapi/interface/options/object.go
浏览文件 @
f6663bd0
...
...
@@ -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
...
...
core/coreapi/object.go
浏览文件 @
f6663bd0
...
...
@@ -3,7 +3,6 @@ package coreapi
import
(
"bytes"
"context"
"errors"
"io"
"io/ioutil"
...
...
@@ -15,6 +14,7 @@ import (
ft
"github.com/ipfs/go-ipfs/unixfs"
node
"gx/ipfs/QmNwUEK7QbwSqyKBu3mMtToo8SUc6wQJ7gdZq4gGGJqfnf/go-ipld-format"
cid
"gx/ipfs/QmeSrf6pzut73u6zLQkRFQ3ygt3k6XFT2kjdYP8Tnkwwyg/go-cid"
)
type
ObjectAPI
struct
{
...
...
@@ -43,8 +43,14 @@ func (api *ObjectAPI) New(ctx context.Context, opts ...caopts.ObjectNewOption) (
return
n
,
nil
}
func
(
api
*
ObjectAPI
)
Put
(
context
.
Context
,
coreiface
.
Node
)
(
coreiface
.
Path
,
error
)
{
return
nil
,
errors
.
New
(
"todo"
)
// TODO: implement using dag api.
func
(
api
*
ObjectAPI
)
Put
(
ctx
context
.
Context
,
src
io
.
Reader
,
opts
...
caopts
.
ObjectPutOption
)
(
coreiface
.
Path
,
error
)
{
options
,
err
:=
caopts
.
ObjectPutOptions
(
opts
...
)
if
err
!=
nil
{
return
nil
,
err
}
dagApi
:=
api
.
Dag
()
return
dagApi
.
Put
(
ctx
,
src
,
dagApi
.
WithInputEnc
(
options
.
InputEnc
),
dagApi
.
WithCodec
(
cid
.
DagProtobuf
))
}
func
(
api
*
ObjectAPI
)
Get
(
ctx
context
.
Context
,
path
coreiface
.
Path
)
(
coreiface
.
Node
,
error
)
{
...
...
core/coredag/dagtransl.go
浏览文件 @
f6663bd0
...
...
@@ -18,9 +18,10 @@ type InputEncParsers map[string]FormatParsers
// DefaultInputEncParsers is InputEncParser that is used everywhere
var
DefaultInputEncParsers
=
InputEncParsers
{
"json"
:
defaultJSONParsers
,
"raw"
:
defaultRawParsers
,
"cbor"
:
defaultCborParsers
,
"json"
:
defaultJSONParsers
,
"raw"
:
defaultRawParsers
,
"cbor"
:
defaultCborParsers
,
"protobuf"
:
defaultProtobufParsers
,
}
var
defaultJSONParsers
=
FormatParsers
{
...
...
@@ -46,6 +47,11 @@ var defaultCborParsers = FormatParsers{
"dag-cbor"
:
cborRawParser
,
}
var
defaultProtobufParsers
=
FormatParsers
{
"protobuf"
:
dagpbRawParser
,
"dag-pb"
:
dagpbRawParser
,
}
// ParseInputs uses DefaultInputEncParsers to parse io.Reader described by
// input encoding and format to an instance of ipld Node
func
ParseInputs
(
ienc
,
format
string
,
r
io
.
Reader
,
mhType
uint64
,
mhLen
int
)
([]
node
.
Node
,
error
)
{
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论