@@ -126,9 +126,11 @@ pub async fn webhook(
126
126
) -> axum:: response:: Response {
127
127
// Extract X-GitHub-Event header
128
128
let Some ( ev) = headers. get ( "X-GitHub-Event" ) else {
129
+ tracing:: error!( "X-GitHub-Event header must be set" ) ;
129
130
return ( StatusCode :: BAD_REQUEST , "X-GitHub-Event header must be set" ) . into_response ( ) ;
130
131
} ;
131
132
let Ok ( ev) = ev. to_str ( ) else {
133
+ tracing:: error!( "X-GitHub-Event header must be UTF-8 encoded" ) ;
132
134
return (
133
135
StatusCode :: BAD_REQUEST ,
134
136
"X-GitHub-Event header must be UTF-8 encoded" ,
@@ -141,13 +143,15 @@ pub async fn webhook(
141
143
142
144
// Extract X-Hub-Signature-256 header
143
145
let Some ( sig) = headers. get ( "X-Hub-Signature-256" ) else {
146
+ tracing:: error!( "X-Hub-Signature-256 header must be set" ) ;
144
147
return (
145
148
StatusCode :: BAD_REQUEST ,
146
149
"X-Hub-Signature-256 header must be set" ,
147
150
)
148
151
. into_response ( ) ;
149
152
} ;
150
153
let Ok ( signature) = sig. to_str ( ) else {
154
+ tracing:: error!( "X-Hub-Signature-256 header must be UTF-8 encoded" ) ;
151
155
return (
152
156
StatusCode :: BAD_REQUEST ,
153
157
"X-Hub-Signature-256 header must be UTF-8 encoded" ,
@@ -158,19 +162,21 @@ pub async fn webhook(
158
162
debug ! ( "signature={signature}" ) ;
159
163
160
164
// Check signature on body
161
- if let Err ( _) = check_payload_signed ( & signature, & body) {
165
+ if let Err ( err) = check_payload_signed ( & signature, & body) {
166
+ tracing:: error!( "check_payload_signed: {}" , err) ;
162
167
return ( StatusCode :: FORBIDDEN , "Wrong signature" ) . into_response ( ) ;
163
168
}
164
169
165
170
let Ok ( payload) = str:: from_utf8 ( & body) else {
171
+ tracing:: error!( "payload not utf-8" ) ;
166
172
return ( StatusCode :: BAD_REQUEST , "Payload must be UTF-8" ) . into_response ( ) ;
167
173
} ;
168
174
169
175
match process_payload ( event, payload, & ctx) . await {
170
176
Ok ( true ) => ( "processed request" , ) . into_response ( ) ,
171
177
Ok ( false ) => ( "ignored request" , ) . into_response ( ) ,
172
178
Err ( err) => {
173
- tracing:: error!( "request failed: {:?}" , err) ;
179
+ tracing:: error!( "failed to process payload : {:?}" , err) ;
174
180
let body = format ! ( "request failed: {:?}" , err) ;
175
181
( StatusCode :: INTERNAL_SERVER_ERROR , body) . into_response ( )
176
182
}
0 commit comments