github.com/celestiaorg/celestia-node@v0.15.0-beta.1/nodebuilder/gateway/module.go (about)

     1  package gateway
     2  
     3  import (
     4  	"context"
     5  
     6  	logging "github.com/ipfs/go-log/v2"
     7  	"go.uber.org/fx"
     8  
     9  	"github.com/celestiaorg/celestia-node/api/gateway"
    10  	headerServ "github.com/celestiaorg/celestia-node/nodebuilder/header"
    11  	"github.com/celestiaorg/celestia-node/nodebuilder/node"
    12  	shareServ "github.com/celestiaorg/celestia-node/nodebuilder/share"
    13  	stateServ "github.com/celestiaorg/celestia-node/nodebuilder/state"
    14  )
    15  
    16  var log = logging.Logger("module/gateway")
    17  
    18  func ConstructModule(tp node.Type, cfg *Config) fx.Option {
    19  	// sanitize config values before constructing module
    20  	cfgErr := cfg.Validate()
    21  	if !cfg.Enabled {
    22  		return fx.Options()
    23  	}
    24  
    25  	baseComponents := fx.Options(
    26  		fx.Supply(cfg),
    27  		fx.Error(cfgErr),
    28  		fx.Provide(fx.Annotate(
    29  			server,
    30  			fx.OnStart(func(ctx context.Context, server *gateway.Server) error {
    31  				return server.Start(ctx)
    32  			}),
    33  			fx.OnStop(func(ctx context.Context, server *gateway.Server) error {
    34  				return server.Stop(ctx)
    35  			}),
    36  		)),
    37  	)
    38  
    39  	switch tp {
    40  	case node.Light, node.Full:
    41  		return fx.Module(
    42  			"gateway",
    43  			baseComponents,
    44  			fx.Invoke(Handler),
    45  		)
    46  	case node.Bridge:
    47  		return fx.Module(
    48  			"gateway",
    49  			baseComponents,
    50  			fx.Invoke(func(
    51  				state stateServ.Module,
    52  				share shareServ.Module,
    53  				header headerServ.Module,
    54  				serv *gateway.Server,
    55  			) {
    56  				Handler(state, share, header, nil, serv)
    57  			}),
    58  		)
    59  	default:
    60  		panic("invalid node type")
    61  	}
    62  }