Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
canifa_note
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Vũ Hoàng Anh
canifa_note
Commits
f12d7ae8
Commit
f12d7ae8
authored
May 27, 2025
by
Steven
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
chore: add asynchronous webhook dispatch
parent
7c05a9b9
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
18 additions
and
3 deletions
+18
-3
webhook.go
plugin/webhook/webhook.go
+15
-0
memo_service.go
server/router/api/v1/memo_service.go
+3
-3
No files found.
plugin/webhook/webhook.go
View file @
f12d7ae8
...
...
@@ -4,6 +4,7 @@ import (
"bytes"
"encoding/json"
"io"
"log/slog"
"net/http"
"time"
...
...
@@ -63,3 +64,17 @@ func Post(requestPayload *v1pb.WebhookRequestPayload) error {
return
nil
}
// PostAsync posts the message to webhook endpoint asynchronously.
// It spawns a new goroutine to handle the request and does not wait for the response.
func
PostAsync
(
requestPayload
*
v1pb
.
WebhookRequestPayload
)
{
go
func
()
{
if
err
:=
Post
(
requestPayload
);
err
!=
nil
{
// Since we're in a goroutine, we can only log the error
slog
.
Warn
(
"Failed to dispatch webhook asynchronously"
,
slog
.
String
(
"url"
,
requestPayload
.
Url
),
slog
.
String
(
"activityType"
,
requestPayload
.
ActivityType
),
slog
.
Any
(
"err"
,
err
))
}
}()
}
server/router/api/v1/memo_service.go
View file @
f12d7ae8
...
...
@@ -689,9 +689,9 @@ func (s *APIV1Service) dispatchMemoRelatedWebhook(ctx context.Context, memo *v1p
}
payload
.
ActivityType
=
activityType
payload
.
Url
=
hook
.
URL
if
err
:=
webhook
.
Post
(
payload
);
err
!=
nil
{
return
errors
.
Wrap
(
err
,
"failed to post webhook"
)
}
// Use asynchronous webhook dispatch
webhook
.
PostAsync
(
payload
)
}
return
nil
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment