From 7efffc3579b5ca100d29e68c9b39bfaac65b0152 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Magiera?= Date: Fri, 4 Jan 2019 03:06:23 +0100 Subject: [PATCH] Make Gateway.NoFetch apply to API too MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit License: MIT Signed-off-by: Ɓukasz Magiera --- cmd/ipfs/daemon.go | 5 ++++- commands/context.go | 13 ++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/cmd/ipfs/daemon.go b/cmd/ipfs/daemon.go index e4c891053..88da7ff96 100644 --- a/cmd/ipfs/daemon.go +++ b/cmd/ipfs/daemon.go @@ -560,13 +560,16 @@ func serveHTTPGateway(req *cmds.Request, cctx *oldcmds.Context) (<-chan error, e listeners = append(listeners, gwLis) } + cmdctx := *cctx + cmdctx.Gateway = true + var opts = []corehttp.ServeOption{ corehttp.MetricsCollectionOption("gateway"), corehttp.IPNSHostnameOption(), corehttp.GatewayOption(writable, "/ipfs", "/ipns"), corehttp.VersionOption(), corehttp.CheckVersionOption(), - corehttp.CommandsROOption(*cctx), + corehttp.CommandsROOption(cmdctx), } if cfg.Experimental.P2pHttpProxy { diff --git a/commands/context.go b/commands/context.go index 0ddbd91c2..3934a4c79 100644 --- a/commands/context.go +++ b/commands/context.go @@ -9,6 +9,7 @@ import ( core "github.com/ipfs/go-ipfs/core" coreapi "github.com/ipfs/go-ipfs/core/coreapi" coreiface "github.com/ipfs/go-ipfs/core/coreapi/interface" + options "github.com/ipfs/go-ipfs/core/coreapi/interface/options" loader "github.com/ipfs/go-ipfs/plugin/loader" config "gx/ipfs/QmRd5T3VmYoX6jaNoZovFRQcwWHJqHgTVQTs1Qz92ELJ7C/go-ipfs-config" @@ -29,6 +30,7 @@ type Context struct { config *config.Config LoadConfig func(path string) (*config.Config, error) + Gateway bool api coreiface.CoreAPI node *core.IpfsNode ConstructNode func() (*core.IpfsNode, error) @@ -68,7 +70,16 @@ func (c *Context) GetAPI() (coreiface.CoreAPI, error) { if err != nil { return nil, err } - c.api, err = coreapi.NewCoreAPI(n) + offline := false + if c.Gateway { + cfg, err := c.GetConfig() + if err != nil { + return nil, err + } + offline = cfg.Gateway.NoFetch + } + + c.api, err = coreapi.NewCoreAPI(n, options.Api.Offline(offline)) if err != nil { return nil, err }