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

jeffotoni / quick / 309

01 Apr 2025 02:36AM UTC coverage: 51.751% (+0.5%) from 51.264%
309

push

circleci

jeffotoni
merge fix

0 of 10 new or added lines in 2 files covered. (0.0%)

173 existing lines in 6 files now uncovered.

3487 of 6738 relevant lines covered (51.75%)

1486.87 hits per line

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

0.0
/example/pkg/glog/api/main.go
1
package main
2

3
import (
4
        "context"
5
        "encoding/json"
6
        "fmt"
7
        "time"
8

9
        "github.com/jeffotoni/quick"
10
        "github.com/jeffotoni/quick/pkg/glog"
11
        "github.com/jeffotoni/quick/pkg/rand"
12
)
13

14
const KeyName string = "X-Trace-ID"
15

16
// curl -i -XPOST -H "Content-Type:application/json" localhost:8080/v1/user -d '{"name": "jeff", "year": 2025}'
17
func main() {
×
18

×
19
        logger := glog.Set(glog.Config{
×
20
                Format: "json",
×
21
                Level:  glog.DEBUG,
×
22
        })
×
23

×
24
        q := quick.New()
×
25

×
26
        q.Post("/v1/user", func(c *quick.Ctx) error {
×
27
                // creating a trace
×
NEW
28
                traceID := c.Get("X-Trace-ID")
×
29
                if traceID == "" {
×
30
                        traceID = rand.TraceID()
×
UNCOV
31
                }
×
32

NEW
33
                userID := rand.AlgoDefault(9000, 9000)
×
34
                spanID := "span39393"
×
35

×
UNCOV
36
                ctx, cancel := glog.CreateCtx().
×
37
                        Set("X-Trace-ID", traceID).
×
38
                        Set("X-User-ID", userID).
×
39
                        Set("X-Span-ID", spanID).
×
40
                        Timeout(10 * time.Second).
×
41
                        Build()
×
42
                defer cancel()
×
43

×
44
                c.Set("X-Trace-ID", traceID)
×
45
                c.Set("X-User-ID", userID)
×
46
                c.Set("X-Span-ID", spanID)
×
47

×
48
                c.Set("Content-type", "application/json")
×
49
                var d any
×
50
                err := c.BodyParser(&d)
×
51
                if err != nil {
×
52
                        logger.Error().
×
53
                                Time().
×
54
                                Level().
×
55
                                Str(KeyName, traceID).
×
56
                                Str("error", err.Error()).
×
57
                                Send()
×
58
                        return c.Status(500).JSON(quick.M{"msg": err.Error()})
×
UNCOV
59
                }
×
60

61
                logger.Debug().
×
62
                        Time().
×
63
                        Level().
×
64
                        Str(KeyName, traceID).
×
65
                        Str("func", "BodyParser").
×
66
                        Str("status", "success").
×
67
                        // Caller().
×
68
                        Send()
×
69

×
70
                // call metodh
×
71
                b, err := SaveSomeWhere(ctx, logger, d)
×
UNCOV
72
                if err != nil {
×
73
                        logger.Error().
×
74
                                Time().
×
75
                                Level().
×
76
                                Str(KeyName, traceID).
×
77
                                Str("Error", err.Error()).
×
78
                                Send()
×
79

×
UNCOV
80
                        return c.Status(500).JSON(quick.M{"msg": err.Error()})
×
UNCOV
81
                }
×
82

UNCOV
83
                logger.Debug().
×
UNCOV
84
                        Time().
×
85
                        Level().
×
86
                        Str(KeyName, traceID).
×
87
                        Str("func", "SaveSomeWhere").
×
88
                        Int("code", quick.StatusOK).
×
89
                        Msg("api-post-fluent").
×
90
                        Send()
×
91

×
UNCOV
92
                all := glog.GetCtxAll(ctx)
×
93
                fmt.Printf("X-Trace-ID:%s X-User-ID:%s X-Span-ID:%s\n", all["X-Trace-ID"], all["X-User-ID"], all["X-Span-ID"])
×
94

×
95
                return c.Status(quick.StatusOK).Send(b)
×
96
        })
97

UNCOV
98
        q.Listen("0.0.0.0:8080")
×
99
}
100

101
func SaveSomeWhere(ctx context.Context, logger *glog.Logger, data any) (b []byte, err error) {
×
102
        traceID := glog.GetCtx(ctx, KeyName)
×
103
        b, err = json.Marshal(data)
×
104
        if err != nil {
×
UNCOV
105
                logger.Error().
×
UNCOV
106
                        Time().
×
107
                        Level().
×
108
                        Str(KeyName, traceID).
×
109
                        Str("Error", err.Error()).
×
110
                        Send()
×
111

×
112
                return
×
113
        }
×
114

115
        err = SendQueue(ctx, logger, b)
×
116
        if err != nil {
×
117
                logger.Error().
×
118
                        Time().
×
119
                        Level().
×
UNCOV
120
                        Str(KeyName, traceID).
×
UNCOV
121
                        Str("Error", err.Error()).
×
UNCOV
122
                        Send()
×
UNCOV
123

×
UNCOV
124
                return nil, err
×
UNCOV
125
        }
×
126

UNCOV
127
        logger.Debug().
×
UNCOV
128
                Time().
×
UNCOV
129
                Level().
×
UNCOV
130
                Str(KeyName, traceID).
×
UNCOV
131
                Str("func", "Marshal").
×
UNCOV
132
                Str("status", "success").
×
UNCOV
133
                Send()
×
UNCOV
134

×
UNCOV
135
        return
×
136
}
137

UNCOV
138
func SendQueue(ctx context.Context, logger *glog.Logger, data []byte) (err error) {
×
UNCOV
139
        // send SQS
×
UNCOV
140
        time.Sleep(time.Millisecond * 100)
×
UNCOV
141

×
UNCOV
142
        logger.Debug().
×
UNCOV
143
                Time().
×
UNCOV
144
                Level().
×
UNCOV
145
                Str(KeyName, glog.GetCtx(ctx, KeyName)).
×
UNCOV
146
                Str("func", "SendSQS").
×
UNCOV
147
                Str("status", "success").
×
UNCOV
148
                Send()
×
UNCOV
149

×
UNCOV
150
        return
×
UNCOV
151
}
×
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