提交 295cc443 作者: Mildred Ki'Lya

HTTP Gateway: add /ipns/ GET requests

上级 7d09da3c
...@@ -75,7 +75,7 @@ func (i *gatewayHandler) loadTemplate() error { ...@@ -75,7 +75,7 @@ func (i *gatewayHandler) loadTemplate() error {
return nil return nil
} }
func (i *gatewayHandler) ResolvePath(ctx context.Context, p string) (*dag.Node, string, error) { func (i *gatewayHandler) resolveNamePath(ctx context.Context, p string) (string, error) {
p = gopath.Clean(p) p = gopath.Clean(p)
if strings.HasPrefix(p, IpnsPathPrefix) { if strings.HasPrefix(p, IpnsPathPrefix) {
...@@ -83,7 +83,7 @@ func (i *gatewayHandler) ResolvePath(ctx context.Context, p string) (*dag.Node, ...@@ -83,7 +83,7 @@ func (i *gatewayHandler) ResolvePath(ctx context.Context, p string) (*dag.Node,
hash := elements[0] hash := elements[0]
k, err := i.node.Namesys.Resolve(ctx, hash) k, err := i.node.Namesys.Resolve(ctx, hash)
if err != nil { if err != nil {
return nil, "", err return "", err
} }
elements[0] = k.Pretty() elements[0] = k.Pretty()
...@@ -92,6 +92,14 @@ func (i *gatewayHandler) ResolvePath(ctx context.Context, p string) (*dag.Node, ...@@ -92,6 +92,14 @@ func (i *gatewayHandler) ResolvePath(ctx context.Context, p string) (*dag.Node,
if !strings.HasPrefix(p, IpfsPathPrefix) { if !strings.HasPrefix(p, IpfsPathPrefix) {
p = gopath.Join(IpfsPathPrefix, p) p = gopath.Join(IpfsPathPrefix, p)
} }
return p, nil
}
func (i *gatewayHandler) ResolvePath(ctx context.Context, p string) (*dag.Node, string, error) {
p, err := i.resolveNamePath(ctx, p)
if err != nil {
return nil, "", err
}
node, err := i.node.Resolver.ResolvePath(path.Path(p)) node, err := i.node.Resolver.ResolvePath(path.Path(p))
if err != nil { if err != nil {
...@@ -298,7 +306,17 @@ func (i *gatewayHandler) putHandler(w http.ResponseWriter, r *http.Request) { ...@@ -298,7 +306,17 @@ func (i *gatewayHandler) putHandler(w http.ResponseWriter, r *http.Request) {
} }
} }
h, components, err := path.SplitAbsPath(path.Path(urlPath)) ctx, cancel := context.WithCancel(i.node.Context())
defer cancel()
ipfspath, err := i.resolveNamePath(ctx, urlPath)
if err != nil {
// FIXME HTTP error code
webError(w, "Could not resolve name", err, http.StatusInternalServerError)
return
}
h, components, err := path.SplitAbsPath(path.Path(ipfspath))
if err != nil { if err != nil {
webError(w, "Could not split path", err, http.StatusInternalServerError) webError(w, "Could not split path", err, http.StatusInternalServerError)
return return
...@@ -358,7 +376,17 @@ func (i *gatewayHandler) putHandler(w http.ResponseWriter, r *http.Request) { ...@@ -358,7 +376,17 @@ func (i *gatewayHandler) putHandler(w http.ResponseWriter, r *http.Request) {
func (i *gatewayHandler) deleteHandler(w http.ResponseWriter, r *http.Request) { func (i *gatewayHandler) deleteHandler(w http.ResponseWriter, r *http.Request) {
urlPath := r.URL.Path urlPath := r.URL.Path
h, components, err := path.SplitAbsPath(path.Path(urlPath)) ctx, cancel := context.WithCancel(i.node.Context())
defer cancel()
ipfspath, err := i.resolveNamePath(ctx, urlPath)
if err != nil {
// FIXME HTTP error code
webError(w, "Could not resolve name", err, http.StatusInternalServerError)
return
}
h, components, err := path.SplitAbsPath(path.Path(ipfspath))
if err != nil { if err != nil {
webError(w, "Could not split path", err, http.StatusInternalServerError) webError(w, "Could not split path", err, http.StatusInternalServerError)
return return
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论