• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

foomo / contentserver / 12019324254

25 Nov 2024 09:43PM UTC coverage: 62.018%. First build
12019324254

push

github

web-flow
Merge pull request #31 from foomo/v1.11.x

Release v1.11.x

852 of 1452 new or added lines in 19 files covered. (58.68%)

1125 of 1814 relevant lines covered (62.02%)

12.7 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/cmd/http.go
1
package cmd
2

3
import (
4
        "context"
5
        "errors"
6

7
        "github.com/foomo/contentserver/pkg/handler"
8
        "github.com/foomo/contentserver/pkg/repo"
9
        "github.com/foomo/keel"
10
        "github.com/foomo/keel/healthz"
11
        keelhttp "github.com/foomo/keel/net/http"
12
        "github.com/foomo/keel/net/http/middleware"
13
        "github.com/foomo/keel/service"
14
        "github.com/spf13/cobra"
15
        "go.uber.org/zap"
16
)
17

NEW
18
func NewHTTPCommand() *cobra.Command {
×
NEW
19
        v := newViper()
×
NEW
20
        cmd := &cobra.Command{
×
NEW
21
                Use:   "http <url>",
×
NEW
22
                Short: "Start http server",
×
NEW
23
                Args:  cobra.ExactArgs(1),
×
NEW
24
                ValidArgsFunction: func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
×
NEW
25
                        var comps []string
×
NEW
26
                        if len(args) == 0 {
×
NEW
27
                                comps = cobra.AppendActiveHelp(comps, "You must specify the URL for the repository you are adding")
×
NEW
28
                        } else {
×
NEW
29
                                comps = cobra.AppendActiveHelp(comps, "This command does not take any more arguments")
×
NEW
30
                        }
×
NEW
31
                        return comps, cobra.ShellCompDirectiveNoFileComp
×
32
                },
NEW
33
                RunE: func(cmd *cobra.Command, args []string) error {
×
NEW
34
                        svr := keel.NewServer(
×
NEW
35
                                keel.WithHTTPReadmeService(true),
×
NEW
36
                                keel.WithHTTPPrometheusService(servicePrometheusEnabledFlag(v)),
×
NEW
37
                                keel.WithHTTPHealthzService(serviceHealthzEnabledFlag(v)),
×
NEW
38
                                keel.WithPrometheusMeter(servicePrometheusEnabledFlag(v)),
×
NEW
39
                                keel.WithOTLPGRPCTracer(otelEnabledFlag(v)),
×
NEW
40
                                keel.WithGracefulPeriod(gracefulTimeoutFlag(v)),
×
NEW
41
                                keel.WithGracefulPeriod(gracefulPeriodFlag(v)),
×
NEW
42
                        )
×
NEW
43

×
NEW
44
                        l := svr.Logger()
×
NEW
45

×
NEW
46
                        r := repo.New(l,
×
NEW
47
                                args[0],
×
NEW
48
                                repo.NewHistory(l,
×
NEW
49
                                        repo.HistoryWithHistoryDir(historyDirFlag(v)),
×
NEW
50
                                        repo.HistoryWithHistoryLimit(historyLimitFlag(v)),
×
NEW
51
                                ),
×
NEW
52
                                repo.WithHTTPClient(
×
NEW
53
                                        keelhttp.NewHTTPClient(
×
NEW
54
                                                keelhttp.HTTPClientWithTelemetry(),
×
NEW
55
                                        ),
×
NEW
56
                                ),
×
NEW
57
                                repo.WithPollInterval(pollIntevalFlag(v)),
×
NEW
58
                                repo.WithPoll(pollFlag(v)),
×
NEW
59
                        )
×
NEW
60

×
NEW
61
                        isLoadedHealtherFn := healthz.NewHealthzerFn(func(ctx context.Context) error {
×
NEW
62
                                if !r.Loaded() {
×
NEW
63
                                        return errors.New("repo not loaded yet")
×
NEW
64
                                }
×
NEW
65
                                return nil
×
66
                        })
67
                        // start initial update and handle error
NEW
68
                        svr.AddStartupHealthzers(isLoadedHealtherFn)
×
NEW
69
                        svr.AddReadinessHealthzers(isLoadedHealtherFn)
×
NEW
70

×
NEW
71
                        svr.AddServices(
×
NEW
72
                                service.NewGoRoutine(l, "repo", func(ctx context.Context, l *zap.Logger) error {
×
NEW
73
                                        return r.Start(ctx)
×
NEW
74
                                }),
×
75
                                service.NewHTTP(l, "http", addressFlag(v),
76
                                        handler.NewHTTP(l, r, handler.WithBasePath(basePathFlag(v))),
77
                                        middleware.Telemetry(),
78
                                        middleware.Logger(),
79
                                        middleware.Recover(),
80
                                ),
81
                        )
82

NEW
83
                        svr.Run()
×
NEW
84
                        return nil
×
85
                },
86
        }
87

NEW
88
        flags := cmd.Flags()
×
NEW
89
        addAddressFlag(flags, v)
×
NEW
90
        addBasePathFlag(flags, v)
×
NEW
91
        addPollFlag(flags, v)
×
NEW
92
        addPollIntervalFlag(flags, v)
×
NEW
93
        addHistoryDirFlag(flags, v)
×
NEW
94
        addHistoryLimitFlag(flags, v)
×
NEW
95
        addGracefulTimeoutFlag(flags, v)
×
NEW
96
        addShutdownTimeoutFlag(flags, v)
×
NEW
97
        addOtelEnabledFlag(flags, v)
×
NEW
98
        addServiceHealthzEnabledFlag(flags, v)
×
NEW
99
        addServicePrometheusEnabledFlag(flags, v)
×
NEW
100

×
NEW
101
        return cmd
×
102
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc