Skip to content

Commit 59d9459

Browse files
authored
Merge pull request #427 from seratch/issue-426
Fix #426 url_verification request fails with bolt-micronaut
2 parents 137ab4d + 6386b1d commit 59d9459

File tree

6 files changed

+14
-41
lines changed

6 files changed

+14
-41
lines changed

bolt-micronaut/src/main/java/com/slack/api/bolt/micronaut/SlackAppController.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@
99
import io.micronaut.http.annotation.Controller;
1010
import io.micronaut.http.annotation.Post;
1111

12-
import java.util.LinkedHashMap;
13-
1412
/**
1513
* The default Web controller that works in Micronaut apps.
1614
* This component requires singleton {@link App} instance managed by the Micronaut DI container.
@@ -30,7 +28,7 @@ public SlackAppController(App slackApp, SlackAppMicronautAdapter adapter) {
3028
}
3129

3230
@Post(value = "/events", consumes = {MediaType.APPLICATION_FORM_URLENCODED, MediaType.APPLICATION_JSON})
33-
public HttpResponse<String> dispatch(HttpRequest<String> request, @Body LinkedHashMap<String, String> body) throws Exception {
31+
public HttpResponse<String> dispatch(HttpRequest<String> request, @Body String body) throws Exception {
3432
Request<?> slackRequest = adapter.toSlackRequest(request, body);
3533
return adapter.toMicronautResponse(slackApp.run(slackRequest));
3634
}

bolt-micronaut/src/main/java/com/slack/api/bolt/micronaut/SlackAppMicronautAdapter.java

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,10 @@
1313
import lombok.extern.slf4j.Slf4j;
1414

1515
import javax.inject.Singleton;
16-
import java.io.UnsupportedEncodingException;
1716
import java.net.InetSocketAddress;
18-
import java.net.URLEncoder;
1917
import java.util.Collections;
20-
import java.util.LinkedHashMap;
2118
import java.util.List;
2219
import java.util.Map;
23-
import java.util.stream.Collectors;
2420

2521
/**
2622
* The default adaptor that translates Micronaut specific interfaces into Bolt's ones.
@@ -36,16 +32,7 @@ public SlackAppMicronautAdapter(AppConfig appConfig) {
3632
this.requestParser = new SlackRequestParser(appConfig);
3733
}
3834

39-
public Request<?> toSlackRequest(HttpRequest<?> req, LinkedHashMap<String, String> body) {
40-
String requestBody = body.entrySet().stream().map(e -> {
41-
try {
42-
String k = URLEncoder.encode(e.getKey(), "UTF-8");
43-
String v = URLEncoder.encode(e.getValue(), "UTF-8");
44-
return k + "=" + v;
45-
} catch (UnsupportedEncodingException ex) {
46-
return e.getKey() + "=" + e.getValue();
47-
}
48-
}).collect(Collectors.joining("&"));
35+
public Request<?> toSlackRequest(HttpRequest<?> req, String requestBody) {
4936
RequestHeaders headers = new RequestHeaders(
5037
req.getHeaders() != null ? req.getHeaders().asMap() : Collections.emptyMap());
5138

bolt-micronaut/src/test/java/example/app/AppFactory.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package example.app;
22

3-
import com.slack.api.bolt.App;
4-
import com.slack.api.bolt.AppConfig;
53
import com.google.gson.Gson;
64
import com.google.gson.JsonElement;
75
import com.google.gson.JsonObject;
6+
import com.slack.api.bolt.App;
7+
import com.slack.api.bolt.AppConfig;
88
import io.micronaut.context.annotation.Factory;
99

1010
import javax.inject.Singleton;

bolt-micronaut/src/test/java/test_locally/AdapterTest.java

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,16 @@
77
import io.micronaut.core.convert.DefaultConversionService;
88
import io.micronaut.http.HttpRequest;
99
import io.micronaut.http.HttpResponse;
10-
import io.micronaut.http.MediaType;
1110
import io.micronaut.http.simple.SimpleHttpHeaders;
1211
import io.micronaut.http.simple.SimpleHttpParameters;
1312
import org.junit.Test;
1413

15-
import java.net.InetAddress;
1614
import java.net.InetSocketAddress;
1715
import java.net.UnknownHostException;
18-
import java.util.*;
16+
import java.util.Arrays;
17+
import java.util.HashMap;
18+
import java.util.List;
19+
import java.util.Map;
1920

2021
import static org.junit.Assert.assertEquals;
2122
import static org.junit.Assert.assertNotNull;
@@ -39,11 +40,7 @@ public void toSlackRequest() {
3940
SimpleHttpParameters parameters = new SimpleHttpParameters(params, new DefaultConversionService());
4041
when(req.getParameters()).thenReturn(parameters);
4142

42-
LinkedHashMap<String, String> body = new LinkedHashMap<>();
43-
body.put("token", "random");
44-
body.put("ssl_check", "1");
45-
46-
Request<?> slackRequest = adapter.toSlackRequest(req, body);
43+
Request<?> slackRequest = adapter.toSlackRequest(req, "token=random&ssl_check=1");
4744

4845
assertNotNull(slackRequest);
4946
assertEquals("token=random&ssl_check=1", slackRequest.getRequestBodyAsString());
@@ -61,11 +58,7 @@ public void toSlackRequest_with_remote_address() throws UnknownHostException {
6158
InetSocketAddress isa = new InetSocketAddress("localhost", 443);
6259
when(req.getRemoteAddress()).thenReturn(isa);
6360

64-
LinkedHashMap<String, String> body = new LinkedHashMap<>();
65-
body.put("token", "random");
66-
body.put("ssl_check", "1");
67-
68-
Request<?> slackRequest = adapter.toSlackRequest(req, body);
61+
Request<?> slackRequest = adapter.toSlackRequest(req, "token=random&ssl_check=1");
6962

7063
assertNotNull(slackRequest);
7164
assertEquals("127.0.0.1", slackRequest.getClientIpAddress());

bolt-micronaut/src/test/java/test_locally/ControllerTest.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
import org.junit.Test;
1313

1414
import java.util.HashMap;
15-
import java.util.LinkedHashMap;
1615

1716
import static org.junit.Assert.assertEquals;
1817
import static org.junit.Assert.assertNotNull;
@@ -33,11 +32,7 @@ public void test() throws Exception {
3332
SimpleHttpParameters parameters = new SimpleHttpParameters(new HashMap<>(), new DefaultConversionService());
3433
when(req.getParameters()).thenReturn(parameters);
3534

36-
LinkedHashMap<String, String> body = new LinkedHashMap<>();
37-
body.put("token", "random");
38-
body.put("ssl_check", "1");
39-
40-
HttpResponse<String> response = controller.dispatch(req, body);
35+
HttpResponse<String> response = controller.dispatch(req, "token=random&ssl_check=1");
4136
assertEquals(200, response.getStatus().getCode());
4237
}
4338

bolt-micronaut/src/test/java/test_locally/app/CommandsTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
package test_locally.app;
22

3-
import com.slack.api.Slack;
43
import com.slack.api.RequestConfigurator;
4+
import com.slack.api.Slack;
5+
import com.slack.api.app_backend.SlackSignature;
6+
import com.slack.api.bolt.AppConfig;
57
import com.slack.api.methods.MethodsClient;
68
import com.slack.api.methods.SlackApiException;
79
import com.slack.api.methods.response.auth.AuthTestResponse;
8-
import com.slack.api.app_backend.SlackSignature;
9-
import com.slack.api.bolt.AppConfig;
1010
import io.micronaut.context.annotation.Primary;
1111
import io.micronaut.http.HttpRequest;
1212
import io.micronaut.http.HttpResponse;

0 commit comments

Comments
 (0)