Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
G
go-ipfs
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
jihao
go-ipfs
Commits
4f6c0666
提交
4f6c0666
authored
2月 08, 2018
作者:
Łukasz Magiera
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
coreapi: move path impl to path.go
License: MIT Signed-off-by:
Łukasz Magiera
<
magik6k@gmail.com
>
上级
338e90e9
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
109 行增加
和
102 行删除
+109
-102
coreapi.go
core/coreapi/coreapi.go
+0
-102
path.go
core/coreapi/path.go
+109
-0
没有找到文件。
core/coreapi/coreapi.go
浏览文件 @
4f6c0666
...
...
@@ -14,18 +14,9 @@ Interfaces here aren't yet completely stable.
package
coreapi
import
(
"context"
core
"github.com/ipfs/go-ipfs/core"
coreiface
"github.com/ipfs/go-ipfs/core/coreapi/interface"
caopts
"github.com/ipfs/go-ipfs/core/coreapi/interface/options"
namesys
"github.com/ipfs/go-ipfs/namesys"
ipfspath
"github.com/ipfs/go-ipfs/path"
resolver
"github.com/ipfs/go-ipfs/path/resolver"
uio
"github.com/ipfs/go-ipfs/unixfs/io"
cid
"gx/ipfs/QmYVNvtQkeZ6AKSwDrjQTs432QtL6umrrK41EBq3cu7iSP/go-cid"
ipld
"gx/ipfs/QmZtNq8dArGfnpCZfx2pUNY7UcjGhVp5qqwQ4hH6mpTMRQ/go-ipld-format"
)
type
CoreAPI
struct
{
...
...
@@ -73,96 +64,3 @@ func (api *CoreAPI) Object() coreiface.ObjectAPI {
func
(
api
*
CoreAPI
)
Pin
()
coreiface
.
PinAPI
{
return
(
*
PinAPI
)(
api
)
}
// ResolveNode resolves the path `p` using Unixfx resolver, gets and returns the
// resolved Node.
func
(
api
*
CoreAPI
)
ResolveNode
(
ctx
context
.
Context
,
p
coreiface
.
Path
)
(
ipld
.
Node
,
error
)
{
return
resolveNode
(
ctx
,
api
.
node
.
DAG
,
api
.
node
.
Namesys
,
p
)
}
func
resolveNode
(
ctx
context
.
Context
,
ng
ipld
.
NodeGetter
,
nsys
namesys
.
NameSystem
,
p
coreiface
.
Path
)
(
ipld
.
Node
,
error
)
{
p
,
err
:=
resolvePath
(
ctx
,
ng
,
nsys
,
p
)
if
err
!=
nil
{
return
nil
,
err
}
node
,
err
:=
ng
.
Get
(
ctx
,
p
.
Cid
())
if
err
!=
nil
{
return
nil
,
err
}
return
node
,
nil
}
// ResolvePath resolves the path `p` using Unixfs resolver, returns the
// resolved path.
// TODO: store all of ipfspath.Resolver.ResolvePathComponents() in Path
func
(
api
*
CoreAPI
)
ResolvePath
(
ctx
context
.
Context
,
p
coreiface
.
Path
)
(
coreiface
.
Path
,
error
)
{
return
resolvePath
(
ctx
,
api
.
node
.
DAG
,
api
.
node
.
Namesys
,
p
)
}
func
resolvePath
(
ctx
context
.
Context
,
ng
ipld
.
NodeGetter
,
nsys
namesys
.
NameSystem
,
p
coreiface
.
Path
)
(
coreiface
.
Path
,
error
)
{
if
p
.
Resolved
()
{
return
p
,
nil
}
r
:=
&
resolver
.
Resolver
{
DAG
:
ng
,
ResolveOnce
:
uio
.
ResolveUnixfsOnce
,
}
p2
:=
ipfspath
.
FromString
(
p
.
String
())
node
,
err
:=
core
.
Resolve
(
ctx
,
nsys
,
r
,
p2
)
if
err
==
core
.
ErrNoNamesys
{
return
nil
,
coreiface
.
ErrOffline
}
else
if
err
!=
nil
{
return
nil
,
err
}
var
root
*
cid
.
Cid
if
p2
.
IsJustAKey
()
{
root
=
node
.
Cid
()
}
return
ResolvedPath
(
p
.
String
(),
node
.
Cid
(),
root
),
nil
}
// Implements coreiface.Path
type
path
struct
{
path
ipfspath
.
Path
cid
*
cid
.
Cid
root
*
cid
.
Cid
}
// ParsePath parses path `p` using ipfspath parser, returns the parsed path.
func
(
api
*
CoreAPI
)
ParsePath
(
ctx
context
.
Context
,
p
string
,
opts
...
caopts
.
ParsePathOption
)
(
coreiface
.
Path
,
error
)
{
options
,
err
:=
caopts
.
ParsePathOptions
(
opts
...
)
if
err
!=
nil
{
return
nil
,
err
}
pp
,
err
:=
ipfspath
.
ParsePath
(
p
)
if
err
!=
nil
{
return
nil
,
err
}
res
:=
&
path
{
path
:
pp
}
if
options
.
Resolve
{
return
api
.
ResolvePath
(
ctx
,
res
)
}
return
res
,
nil
}
// ParseCid parses the path from `c`, returns the parsed path.
func
(
api
*
CoreAPI
)
ParseCid
(
c
*
cid
.
Cid
)
coreiface
.
Path
{
return
&
path
{
path
:
ipfspath
.
FromCid
(
c
),
cid
:
c
,
root
:
c
}
}
// ResolvePath parses path from string `p`, returns parsed path.
func
ResolvedPath
(
p
string
,
c
*
cid
.
Cid
,
r
*
cid
.
Cid
)
coreiface
.
Path
{
return
&
path
{
path
:
ipfspath
.
FromString
(
p
),
cid
:
c
,
root
:
r
}
}
func
(
p
*
path
)
String
()
string
{
return
p
.
path
.
String
()
}
func
(
p
*
path
)
Cid
()
*
cid
.
Cid
{
return
p
.
cid
}
func
(
p
*
path
)
Root
()
*
cid
.
Cid
{
return
p
.
root
}
func
(
p
*
path
)
Resolved
()
bool
{
return
p
.
cid
!=
nil
}
core/coreapi/path.go
0 → 100644
浏览文件 @
4f6c0666
package
coreapi
import
(
"context"
core
"github.com/ipfs/go-ipfs/core"
coreiface
"github.com/ipfs/go-ipfs/core/coreapi/interface"
caopts
"github.com/ipfs/go-ipfs/core/coreapi/interface/options"
namesys
"github.com/ipfs/go-ipfs/namesys"
ipfspath
"github.com/ipfs/go-ipfs/path"
resolver
"github.com/ipfs/go-ipfs/path/resolver"
uio
"github.com/ipfs/go-ipfs/unixfs/io"
ipld
"gx/ipfs/QmWi2BYBL5gJ3CiAiQchg6rn1A8iBsrWy51EYxvHVjFvLb/go-ipld-format"
cid
"gx/ipfs/QmapdYm1b22Frv3k17fqrBYTFRxwiaVJkB299Mfn33edeB/go-cid"
)
// ResolveNode resolves the path `p` using Unixfx resolver, gets and returns the
// resolved Node.
func
(
api
*
CoreAPI
)
ResolveNode
(
ctx
context
.
Context
,
p
coreiface
.
Path
)
(
ipld
.
Node
,
error
)
{
return
resolveNode
(
ctx
,
api
.
node
.
DAG
,
api
.
node
.
Namesys
,
p
)
}
func
resolveNode
(
ctx
context
.
Context
,
ng
ipld
.
NodeGetter
,
nsys
namesys
.
NameSystem
,
p
coreiface
.
Path
)
(
ipld
.
Node
,
error
)
{
p
,
err
:=
resolvePath
(
ctx
,
ng
,
nsys
,
p
)
if
err
!=
nil
{
return
nil
,
err
}
node
,
err
:=
ng
.
Get
(
ctx
,
p
.
Cid
())
if
err
!=
nil
{
return
nil
,
err
}
return
node
,
nil
}
// ResolvePath resolves the path `p` using Unixfs resolver, returns the
// resolved path.
// TODO: store all of ipfspath.Resolver.ResolvePathComponents() in Path
func
(
api
*
CoreAPI
)
ResolvePath
(
ctx
context
.
Context
,
p
coreiface
.
Path
)
(
coreiface
.
Path
,
error
)
{
return
resolvePath
(
ctx
,
api
.
node
.
DAG
,
api
.
node
.
Namesys
,
p
)
}
func
resolvePath
(
ctx
context
.
Context
,
ng
ipld
.
NodeGetter
,
nsys
namesys
.
NameSystem
,
p
coreiface
.
Path
)
(
coreiface
.
Path
,
error
)
{
if
p
.
Resolved
()
{
return
p
,
nil
}
r
:=
&
resolver
.
Resolver
{
DAG
:
ng
,
ResolveOnce
:
uio
.
ResolveUnixfsOnce
,
}
p2
:=
ipfspath
.
FromString
(
p
.
String
())
node
,
err
:=
core
.
Resolve
(
ctx
,
nsys
,
r
,
p2
)
if
err
==
core
.
ErrNoNamesys
{
return
nil
,
coreiface
.
ErrOffline
}
else
if
err
!=
nil
{
return
nil
,
err
}
var
root
*
cid
.
Cid
if
p2
.
IsJustAKey
()
{
root
=
node
.
Cid
()
}
return
ResolvedPath
(
p
.
String
(),
node
.
Cid
(),
root
),
nil
}
// Implements coreiface.Path
type
path
struct
{
path
ipfspath
.
Path
cid
*
cid
.
Cid
root
*
cid
.
Cid
}
// ParsePath parses path `p` using ipfspath parser, returns the parsed path.
func
(
api
*
CoreAPI
)
ParsePath
(
ctx
context
.
Context
,
p
string
,
opts
...
caopts
.
ParsePathOption
)
(
coreiface
.
Path
,
error
)
{
options
,
err
:=
caopts
.
ParsePathOptions
(
opts
...
)
if
err
!=
nil
{
return
nil
,
err
}
pp
,
err
:=
ipfspath
.
ParsePath
(
p
)
if
err
!=
nil
{
return
nil
,
err
}
res
:=
&
path
{
path
:
pp
}
if
options
.
Resolve
{
return
api
.
ResolvePath
(
ctx
,
res
)
}
return
res
,
nil
}
// ParseCid parses the path from `c`, retruns the parsed path.
func
(
api
*
CoreAPI
)
ParseCid
(
c
*
cid
.
Cid
)
coreiface
.
Path
{
return
&
path
{
path
:
ipfspath
.
FromCid
(
c
),
cid
:
c
,
root
:
c
}
}
// ResolvePath parses path from string `p`, returns parsed path.
func
ResolvedPath
(
p
string
,
c
*
cid
.
Cid
,
r
*
cid
.
Cid
)
coreiface
.
Path
{
return
&
path
{
path
:
ipfspath
.
FromString
(
p
),
cid
:
c
,
root
:
r
}
}
func
(
p
*
path
)
String
()
string
{
return
p
.
path
.
String
()
}
func
(
p
*
path
)
Cid
()
*
cid
.
Cid
{
return
p
.
cid
}
func
(
p
*
path
)
Root
()
*
cid
.
Cid
{
return
p
.
root
}
func
(
p
*
path
)
Resolved
()
bool
{
return
p
.
cid
!=
nil
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论