@@ -20,32 +20,46 @@ func (handler *Handler) HandleSentry(ctx *fasthttp.RequestCtx) {
2020 return
2121 }
2222
23- // check that X-Sentry-Auth header is available
24- auth := ctx .Request .Header .Peek ("X-Sentry-Auth" )
25- if auth == nil {
26- log .Warnf ("Incoming request without X-Sentry-Auth header" )
27- sendAnswerHTTP (ctx , ResponseMessage {Code : 400 , Error : true , Message : "X-Sentry-Auth header is missing" })
28- return
29- }
30-
31- hawkToken , err := getSentryKeyFromAuth (string (auth ))
32- if err != nil {
33- log .Warnf ("Incoming request with invalid X-Sentry-Auth header: %s" , err )
34- sendAnswerHTTP (ctx , ResponseMessage {Code : 400 , Error : true , Message : err .Error ()})
35- return
23+ var hawkToken string
24+ var err error
25+
26+ // parse incoming get request params
27+ sentryKey := ctx .QueryArgs ().Peek ("sentry_key" )
28+ if sentryKey == nil {
29+ log .Warnf ("Incoming request with deprecated sentry_key parameter" )
30+
31+ // check that X-Sentry-Auth header is available
32+ auth := ctx .Request .Header .Peek ("X-Sentry-Auth" )
33+ if auth == nil {
34+ log .Warnf ("Incoming request without X-Sentry-Auth header" )
35+ sendAnswerHTTP (ctx , ResponseMessage {Code : 400 , Error : true , Message : "X-Sentry-Auth header is missing" })
36+ return
37+ }
38+
39+ hawkToken , err = getSentryKeyFromAuth (string (auth ))
40+ if err != nil {
41+ log .Warnf ("Incoming request with invalid X-Sentry-Auth header=%s: %s" , auth , err )
42+ sendAnswerHTTP (ctx , ResponseMessage {Code : 400 , Error : true , Message : err .Error ()})
43+ return
44+ }
45+ } else {
46+ hawkToken = string (sentryKey )
3647 }
3748
3849 log .Debugf ("Incoming request with hawk integration token: %s" , hawkToken )
3950
40- body := ctx .PostBody ()
41-
42- sentryEnvelopeBody , err := decompressGzipString (body )
43- if err != nil {
44- log .Warnf ("Failed to decompress gzip body: %s" , err )
45- sendAnswerHTTP (ctx , ResponseMessage {Code : 400 , Error : true , Message : "Failed to decompress gzip body" })
46- return
51+ sentryEnvelopeBody := ctx .PostBody ()
52+
53+ // todo: add check of gzip header
54+ if sentryKey == nil {
55+ sentryEnvelopeBody , err = decompressGzipString (sentryEnvelopeBody )
56+ if err != nil {
57+ log .Warnf ("Failed to decompress gzip body: %s" , err )
58+ sendAnswerHTTP (ctx , ResponseMessage {Code : 400 , Error : true , Message : "Failed to decompress gzip body" })
59+ return
60+ }
61+ log .Debugf ("Decompressed body: %s" , sentryEnvelopeBody )
4762 }
48- log .Debugf ("Decompressed body: %s" , sentryEnvelopeBody )
4963
5064 projectId , ok := handler .AccountsMongoDBClient .ValidTokens [hawkToken ]
5165 if ! ok {
0 commit comments