Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var Command = &cli.Command{ Name: "web", Usage: "HTTP JSON API", Action: func(ctx *cli.Context) error { chURL := env.GetString("DB_CH_URL", "") pgURL := env.GetString("DB_PG_URL", "") conn, err := repository.ConnectDB( ctx.Context, chURL, pgURL) if err != nil { return errors.Wrap(err, "cannot connect to a database") } def, err := contract.NewRepository(conn.PG).GetDefinitions(ctx.Context) if err != nil { return errors.Wrap(err, "get definitions") } err = abi.RegisterDefinitions(def) if err != nil { return errors.Wrap(err, "get definitions") } client := liteclient.NewConnectionPool() api := ton.NewAPIClient(client, ton.ProofCheckPolicyUnsafe).WithRetry() for _, addr := range strings.Split(env.GetString("LITESERVERS", ""), ",") { split := strings.Split(addr, "|") if len(split) != 2 { return fmt.Errorf("wrong server address format '%s'", addr) } host, key := split[0], split[1] if err := client.AddConnection(ctx.Context, host, key); err != nil { return errors.Wrapf(err, "cannot add connection with %s host and %s key", host, key) } } qs, err := query.NewService(ctx.Context, &app.QueryConfig{ DB: conn, API: api, }) if err != nil { return err } if err := qs.Start(); err != nil { return err } srv := http.NewServer( env.GetString("LISTEN", "0.0.0.0:80"), ) srv.RegisterRoutes(http.NewController(qs)) c := make(chan os.Signal, 1) signal.Notify(c, syscall.SIGINT, syscall.SIGTERM) go func() { <-c qs.Stop() conn.Close() os.Exit(0) }() if err = srv.Run(); err != nil { return err } return nil }, }
Functions ¶
This section is empty.
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.