@@ -20,78 +20,90 @@ interface Env {
2020 DISCORD_WEBHOOK_ID : string ;
2121 DISCORD_WEBHOOK_TOKEN : string ;
2222 SENTRY_DATA_SOURCE_NAME : string ;
23+ CF_VERSION_METADATA : WorkerVersionMetadata ;
2324}
2425
25- export default withSentry ( ( env ) => ( { dsn : env . SENTRY_DATA_SOURCE_NAME , sendDefaultPii : true } ) , {
26- async fetch ( request , env ) {
27- if ( request . method !== "POST" ) {
28- return new Response ( null , { status : 405 } ) ;
29- }
26+ export default withSentry (
27+ ( env ) => ( {
28+ dsn : env . SENTRY_DATA_SOURCE_NAME ,
29+ release : env . CF_VERSION_METADATA . id ,
30+ sendDefaultPii : true ,
31+ } ) ,
32+ {
33+ async fetch ( request , env ) {
34+ if ( request . method !== "POST" ) {
35+ return new Response ( null , { status : 405 } ) ;
36+ }
3037
31- const eventType = request . headers . get ( "x-github-event" ) as WebhookEventName ;
38+ const eventType = request . headers . get ( "x-github-event" ) as WebhookEventName ;
3239
33- if ( eventType === "ping" ) {
34- await new API ( new REST ( ) ) . webhooks . execute (
35- env . DISCORD_WEBHOOK_ID ,
36- env . DISCORD_WEBHOOK_TOKEN ,
37- { allowed_mentions : { parse : [ ] } , content : "Ping!" } ,
38- ) ;
40+ if ( eventType === "ping" ) {
41+ await new API ( new REST ( ) ) . webhooks . execute (
42+ env . DISCORD_WEBHOOK_ID ,
43+ env . DISCORD_WEBHOOK_TOKEN ,
44+ { allowed_mentions : { parse : [ ] } , content : "Ping!" } ,
45+ ) ;
3946
40- return new Response ( null , { status : 204 } ) ;
41- }
47+ return new Response ( null , { status : 204 } ) ;
48+ }
4249
43- const signature = request . headers . get ( "x-hub-signature-256" ) ;
44- const text = await request . text ( ) ;
45- const webhooks = new Webhooks ( { secret : env . GITHUB_WEBHOOK_SECRET } ) ;
50+ const signature = request . headers . get ( "x-hub-signature-256" ) ;
51+ const text = await request . text ( ) ;
52+ const webhooks = new Webhooks ( { secret : env . GITHUB_WEBHOOK_SECRET } ) ;
4653
47- try {
48- await webhooks . verify ( text , signature ! ) ;
49- } catch ( error ) {
50- console . error ( error ) ;
51- return new Response ( null , { status : 401 } ) ;
52- }
54+ try {
55+ await webhooks . verify ( text , signature ! ) ;
56+ } catch ( error ) {
57+ console . error ( error ) ;
58+ return new Response ( null , { status : 401 } ) ;
59+ }
5360
54- const payload = JSON . parse ( text ) as WebhookEvent ;
61+ const payload = JSON . parse ( text ) as WebhookEvent ;
5562
56- if ( "repository" in payload && payload . repository . private ) {
57- return new Response ( null , { status : 204 } ) ;
58- }
63+ if ( "repository" in payload && payload . repository . private ) {
64+ return new Response ( null , { status : 204 } ) ;
65+ }
5966
60- let components : APIMessageTopLevelComponent [ ] | undefined ;
67+ let components : APIMessageTopLevelComponent [ ] | undefined ;
6168
62- if ( eventType === "create" ) {
63- components = createComponents ( payload as CreateEvent ) ;
64- } else if ( eventType === "push" ) {
65- const pushEvent = payload as PushEvent ;
69+ if ( eventType === "create" ) {
70+ components = createComponents ( payload as CreateEvent ) ;
71+ } else if ( eventType === "push" ) {
72+ const pushEvent = payload as PushEvent ;
6673
67- // Deleting a branch or tag triggers a push event with no commits.
68- // Allow force-pushes.
69- if ( pushEvent . commits . length === 0 && ! pushEvent . forced ) {
70- return new Response ( null , { status : 204 } ) ;
71- }
74+ // Deleting a branch or tag triggers a push event with no commits.
75+ // Allow force-pushes.
76+ if ( pushEvent . commits . length === 0 && ! pushEvent . forced ) {
77+ return new Response ( null , { status : 204 } ) ;
78+ }
7279
73- components = pushCreatedComponents ( pushEvent ) ;
74- } else if ( eventType === "delete" ) {
75- components = deleteComponents ( payload as DeleteEvent ) ;
76- } else if ( eventType === "star" ) {
77- const starEvent = payload as StarEvent ;
80+ components = pushCreatedComponents ( pushEvent ) ;
81+ } else if ( eventType === "delete" ) {
82+ components = deleteComponents ( payload as DeleteEvent ) ;
83+ } else if ( eventType === "star" ) {
84+ const starEvent = payload as StarEvent ;
7885
79- if ( starEvent . action === "deleted" ) {
80- return new Response ( null , { status : 204 } ) ;
86+ if ( starEvent . action === "deleted" ) {
87+ return new Response ( null , { status : 204 } ) ;
88+ }
89+
90+ components = starCreatedComponents ( starEvent ) ;
91+ } else {
92+ throw new Error ( `Unhandled event type: ${ eventType } .` ) ;
8193 }
8294
83- components = starCreatedComponents ( starEvent ) ;
84- } else {
85- throw new Error ( `Unhandled event type: ${ eventType } .` ) ;
86- }
87-
88- await new API ( new REST ( ) ) . webhooks . execute ( env . DISCORD_WEBHOOK_ID , env . DISCORD_WEBHOOK_TOKEN , {
89- allowed_mentions : { parse : [ ] } ,
90- components ,
91- flags : MessageFlags . IsComponentsV2 ,
92- with_components : true ,
93- } ) ;
94-
95- return new Response ( null , { status : 204 } ) ;
96- } ,
97- } satisfies ExportedHandler < Env > ) ;
95+ await new API ( new REST ( ) ) . webhooks . execute (
96+ env . DISCORD_WEBHOOK_ID ,
97+ env . DISCORD_WEBHOOK_TOKEN ,
98+ {
99+ allowed_mentions : { parse : [ ] } ,
100+ components ,
101+ flags : MessageFlags . IsComponentsV2 ,
102+ with_components : true ,
103+ } ,
104+ ) ;
105+
106+ return new Response ( null , { status : 204 } ) ;
107+ } ,
108+ } satisfies ExportedHandler < Env > ,
109+ ) ;
0 commit comments