2020import java .util .stream .Collectors ;
2121import javax .crypto .Mac ;
2222import javax .crypto .spec .SecretKeySpec ;
23- import org .discordbots .webhooks .IntegrationCreatePayload ;
24- import org .discordbots .webhooks .IntegrationDeletePayload ;
25- import org .discordbots .webhooks .Payload ;
26- import org .discordbots .webhooks .TestPayload ;
27- import org .discordbots .webhooks .VoteCreatePayload ;
28-
29- public class EclipseJettyWebhooks extends HttpServlet {
30- private final byte [] authorization ;
23+ import org .discordbots .webhooks .payload . IntegrationCreatePayload ;
24+ import org .discordbots .webhooks .payload . IntegrationDeletePayload ;
25+ import org .discordbots .webhooks .payload . Payload ;
26+ import org .discordbots .webhooks .payload . TestPayload ;
27+ import org .discordbots .webhooks .payload . VoteCreatePayload ;
28+
29+ public class DiscordBotListWebhooks extends HttpServlet implements DiscordBotListWebhooksListener {
30+ private byte [] secret ;
3131 private final Gson gson ;
32- private final EclipseJettyWebhooks .Listener listener ;
3332
34- public EclipseJettyWebhooks (
35- final String authorization , final EclipseJettyWebhooks .Listener listener ) {
36- this .authorization = authorization .getBytes (StandardCharsets .UTF_8 );
33+ public DiscordBotListWebhooks (final String secret ) {
34+ this .secret = secret .getBytes (StandardCharsets .UTF_8 );
3735 this .gson =
3836 new GsonBuilder ()
3937 .registerTypeAdapter (OffsetDateTime .class , new OffsetDateTimeConverter ())
4038 .create ();
41- this .listener = listener ;
39+ }
40+
41+ public String getSecret () {
42+ return new String (secret , StandardCharsets .UTF_8 );
43+ }
44+
45+ public void setSecret (final String newSecret ) {
46+ secret = newSecret .getBytes (StandardCharsets .UTF_8 );
4247 }
4348
4449 @ Override
50+ @ SuppressWarnings ("UseSpecificCatch" )
4551 protected void doPost (HttpServletRequest request , HttpServletResponse response )
4652 throws IOException , ServletException {
4753 try {
@@ -64,7 +70,7 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
6470
6571 assert signature != null && timestamp != null ;
6672
67- final SecretKeySpec key = new SecretKeySpec (authorization , "HmacSHA256" );
73+ final SecretKeySpec key = new SecretKeySpec (secret , "HmacSHA256" );
6874 final Mac hmac = Mac .getInstance ("HmacSHA256" );
6975
7076 hmac .init (key );
@@ -87,18 +93,16 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
8793 try {
8894 switch (payload .getType ()) {
8995 case "integration.create" ->
90- listener . onIntegrationCreate (
96+ onIntegrationCreate (
9197 response , payload .getData (gson , IntegrationCreatePayload .class ), trace );
9298 case "integration.delete" ->
93- listener . onIntegrationDelete (
99+ onIntegrationDelete (
94100 response , payload .getData (gson , IntegrationDeletePayload .class ), trace );
95- case "webhook.test" ->
96- listener .onTest (response , payload .getData (gson , TestPayload .class ), trace );
101+ case "webhook.test" -> onTest (response , payload .getData (gson , TestPayload .class ), trace );
97102 case "vote.create" ->
98- listener .onVoteCreate (
99- response , payload .getData (gson , VoteCreatePayload .class ), trace );
103+ onVoteCreate (response , payload .getData (gson , VoteCreatePayload .class ), trace );
100104 }
101- } catch (Throwable ignored ) {
105+ } catch (final Throwable ignored ) {
102106 response .setStatus (HttpServletResponse .SC_INTERNAL_SERVER_ERROR );
103107 response .getWriter ().write ("Internal Server Error" );
104108 }
@@ -117,25 +121,4 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
117121 }
118122 }
119123 }
120-
121- public interface Listener {
122- default void onIntegrationCreate (
123- HttpServletResponse response , IntegrationCreatePayload payload , String trace ) {
124- response .setStatus (HttpServletResponse .SC_NO_CONTENT );
125- }
126-
127- default void onIntegrationDelete (
128- HttpServletResponse response , IntegrationDeletePayload payload , String trace ) {
129- response .setStatus (HttpServletResponse .SC_NO_CONTENT );
130- }
131-
132- default void onTest (HttpServletResponse response , TestPayload payload , String trace ) {
133- response .setStatus (HttpServletResponse .SC_NO_CONTENT );
134- }
135-
136- default void onVoteCreate (
137- HttpServletResponse response , VoteCreatePayload payload , String trace ) {
138- response .setStatus (HttpServletResponse .SC_NO_CONTENT );
139- }
140- }
141124}
0 commit comments