@@ -403,53 +403,63 @@ func (s *inMemoryServer) startWebhook(webhook *Webhook) (err error) {
403403 memLogger .Info ("stop webhook server" , "name" , wh .Name )
404404 return
405405 case <- timer .C :
406- client := http .DefaultClient
407-
408- payload , err := render .RenderAsReader ("mock webhook server payload" , wh .Request .Body , wh )
409- if err != nil {
410- memLogger .Error (err , "Error when render payload" )
411- continue
406+ if err = runWebhook (s .ctx , s , wh ); err != nil {
407+ memLogger .Error (err , "Error when run webhook" )
412408 }
409+ }
410+ }
411+ }(webhook )
412+ return
413+ }
413414
414- method := util .EmptyThenDefault (wh .Request .Method , http .MethodPost )
415- api , err := render .Render ("webhook request api" , wh .Request .Path , s )
416- if err != nil {
417- memLogger .Error (err , "Error when render api" , "raw" , wh .Request .Path )
418- continue
419- }
415+ func runWebhook (ctx context.Context , objCtx interface {}, wh * Webhook ) (err error ) {
416+ client := http .DefaultClient
420417
421- var bearerToken string
422- bearerToken , err = getBearerToken ( s . ctx , wh .Request )
423- if err != nil {
424- memLogger . Error ( err , "Error when render bearer token" )
425- continue
426- }
418+ var payload io. Reader
419+ payload , err = render . RenderAsReader ( "mock webhook server payload" , wh .Request . Body , wh )
420+ if err != nil {
421+ err = fmt . Errorf ( "error when render payload: %w" , err )
422+ return
423+ }
427424
428- req , err := http .NewRequestWithContext (s .ctx , method , api , payload )
429- if err != nil {
430- memLogger .Error (err , "Error when create request" )
431- continue
432- }
425+ method := util .EmptyThenDefault (wh .Request .Method , http .MethodPost )
426+ var api string
427+ api , err = render .Render ("webhook request api" , wh .Request .Path , objCtx )
428+ if err != nil {
429+ err = fmt .Errorf ("error when render api: %w" , err )
430+ return
431+ }
433432
434- if bearerToken != "" {
435- memLogger .V (7 ).Info ("set bearer token" , "token" , bearerToken )
436- req .Header .Set ("Authorization" , fmt .Sprintf ("Bearer %s" , bearerToken ))
437- }
433+ var bearerToken string
434+ bearerToken , err = getBearerToken (ctx , wh .Request )
435+ if err != nil {
436+ memLogger .Error (err , "Error when render bearer token" )
437+ return
438+ }
438439
439- for k , v := range wh .Request .Header {
440- req .Header .Set (k , v )
441- }
440+ var req * http.Request
441+ req , err = http .NewRequestWithContext (ctx , method , api , payload )
442+ if err != nil {
443+ memLogger .Error (err , "Error when create request" )
444+ return
445+ }
442446
443- resp , err := client .Do (req )
444- if err != nil {
445- memLogger .Error (err , "Error when sending webhook" )
446- } else {
447- data , _ := io .ReadAll (resp .Body )
448- memLogger .V (7 ).Info ("received from webhook" , "code" , resp .StatusCode , "response" , string (data ))
449- }
450- }
451- }
452- }(webhook )
447+ if bearerToken != "" {
448+ memLogger .V (7 ).Info ("set bearer token" , "token" , bearerToken )
449+ req .Header .Set ("Authorization" , fmt .Sprintf ("Bearer %s" , bearerToken ))
450+ }
451+
452+ for k , v := range wh .Request .Header {
453+ req .Header .Set (k , v )
454+ }
455+
456+ resp , err := client .Do (req )
457+ if err != nil {
458+ err = fmt .Errorf ("error when sending webhook" )
459+ } else {
460+ data , _ := io .ReadAll (resp .Body )
461+ memLogger .V (7 ).Info ("received from webhook" , "code" , resp .StatusCode , "response" , string (data ))
462+ }
453463 return
454464}
455465
@@ -459,7 +469,6 @@ type bearerToken struct {
459469
460470func getBearerToken (ctx context.Context , request RequestWithAuth ) (token string , err error ) {
461471 if request .BearerAPI == "" {
462- memLogger .Info ("bearer token is not set" )
463472 return
464473 }
465474
0 commit comments