File tree Expand file tree Collapse file tree 2 files changed +71
-0
lines changed Expand file tree Collapse file tree 2 files changed +71
-0
lines changed Original file line number Diff line number Diff line change
1
+ #lang racket/base
2
+
3
+ (require json
4
+ net/http-easy
5
+ net/uri-codec
6
+ net/url
7
+ sentry
8
+ sentry/tracing)
9
+
10
+ (provide
11
+ make-tracing-middleware)
12
+
13
+ (define (make-tracing-middleware sentry)
14
+ (make-keyword-procedure
15
+ (lambda (kws kw-args u k . args)
16
+ (parameterize ([current-sentry sentry])
17
+ (define method (kw-ref kws kw-args '#:method ))
18
+ (define params (kw-ref kws kw-args '#:params ))
19
+ (define method-str (string-upcase (symbol->string method)))
20
+ ;; https://develop.sentry.dev/sdk/telemetry/traces/span-data-conventions/
21
+ (define data
22
+ (hasheq
23
+ 'http.request.method
24
+ method-str
25
+ 'http.query
26
+ (format
27
+ "?~a "
28
+ (alist->form-urlencoded
29
+ (append
30
+ (or (url-query u) null)
31
+ (or params null))))
32
+ 'server.address
33
+ (or (url-host u)
34
+ (json-null))
35
+ 'server.port
36
+ (or (url-port u)
37
+ (case (url-scheme u)
38
+ [("https " ) 443 ]
39
+ [else 80 ]))))
40
+ (call-with-span
41
+ #:origin 'auto.http.easy
42
+ #:operation 'http.client
43
+ #:description (format "~a ~a " method-str (url->string u))
44
+ #:data data
45
+ (lambda (s)
46
+ (define res (keyword-apply k kws kw-args u args))
47
+ (span-set! s 'http.response.status_code (response-status-code res))
48
+ (cond
49
+ [(response-headers-ref res 'content-length )
50
+ => (λ (len) (span-set! s 'http.response_content_length len))]
51
+ [(response-closed? res)
52
+ (define len (bytes-length (response-body res)))
53
+ (span-set! s 'http.response_content_length len)]
54
+ [else (void)])
55
+ res))))))
56
+
57
+ (define (kw-ref kws kw-args needle)
58
+ (for/first ([kw (in-list kws)]
59
+ [kw-arg (in-list kw-args)]
60
+ #:when (equal? kw needle))
61
+ kw-arg))
Original file line number Diff line number Diff line change
1
+ #lang info
2
+
3
+ (define license 'BSD-3-Clause )
4
+ (define version "0.1 " )
5
+ (define collection "net " )
6
+ (define deps
7
+ '("base "
8
+ "http-easy-lib "
9
+ "net-lib "
10
+ "sentry-lib " ))
You can’t perform that action at this time.
0 commit comments