Skip to content

Commit d8a1eaf

Browse files
authored
Merge pull request #461 from seratch/under-the-hood-improvements
Improve the "Under the Hood" parts in docs - thanks to feedback at #458
2 parents c35cd73 + 3203c40 commit d8a1eaf

8 files changed

Lines changed: 40 additions & 14 deletions

File tree

docs/guides/events-api.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ If you hope to understand what is actually happening with the above code, readin
145145
import java.util.Map;
146146
import com.google.gson.Gson;
147147
import com.slack.api.Slack;
148+
import com.slack.api.app_backend.events.*;
148149
import com.slack.api.app_backend.events.payload.MessagePayload;
149150
import com.slack.api.util.json.GsonFactory;
150151

@@ -159,7 +160,8 @@ PseudoHttpResponse handle(PseudoHttpRequest request) {
159160
// 2. Parse the request body and check if the `type` in `event` is the one you'd like to handle
160161
// The request body in JSON format
161162
String payloadString = request.getBodyAsString();
162-
String eventType = PseudoEventTypeExtractor.extract(payloadString);
163+
EventTypeExtractor eventTypeExtractor = new EventsDispatcherImpl();
164+
String eventType = eventTypeExtractor.extractEventType(payloadString);
163165
if (eventType != null && eventType.equals("message")) {
164166
Gson gson = GsonFactory.createSnakeCase();
165167
MessagePayload payload = gson.fromJson(payloadString, MessagePayload.class);

docs/guides/interactive-components.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,8 @@ import com.google.gson.Gson;
164164
import com.slack.api.Slack;
165165
import com.slack.api.app_backend.interactive_components.payload.BlockActionPayload;
166166
import com.slack.api.app_backend.interactive_components.payload.BlockSuggestionPayload;
167+
import com.slack.api.app_backend.util.JsonPayloadExtractor;
168+
import com.slack.api.app_backend.util.JsonPayloadTypeDetector;
167169
import com.slack.api.util.json.GsonFactory;
168170

169171
PseudoHttpResponse handle(PseudoHttpRequest request) {
@@ -178,9 +180,11 @@ PseudoHttpResponse handle(PseudoHttpRequest request) {
178180
// 2. Parse the request body and check if the `action_id` in a block is the one you'd like to handle
179181

180182
// payload={URL-encoded JSON} in the request body
181-
String payloadString = PseudoPayloadExtractor.extract(request.getBodyAsString());
183+
JsonPayloadExtractor payloadExtractor = new JsonPayloadExtractor();
184+
String payloadString = payloadExtractor.extractIfExists(request.getBodyAsString());
182185
// The value looks like: { "type": "block_actions", "team": { "id": "T1234567", ...
183-
String payloadType = PseudoActionTypeExtractor.extract(payloadString);
186+
JsonPayloadTypeDetector typeDetector = new JsonPayloadTypeDetector();
187+
String payloadType = typeDetector.detectType(payloadString);
184188

185189
Gson gson = GsonFactory.createSnakeCase();
186190
if (payloadType != null && payloadType.equals("block_actions")) {

docs/guides/ja/events-api.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ app.message(":wave:", (payload, ctx) -> {
146146
import java.util.Map;
147147
import com.google.gson.Gson;
148148
import com.slack.api.Slack;
149+
import com.slack.api.app_backend.events.*;
149150
import com.slack.api.app_backend.events.payload.MessagePayload;
150151
import com.slack.api.util.json.GsonFactory;
151152

@@ -160,7 +161,8 @@ PseudoHttpResponse handle(PseudoHttpRequest request) {
160161
// 2. リクエストボディをパースして `event` の中の `type` が処理対象か確認
161162
// リクエストボディは全体が JSON 形式になっています
162163
String payloadString = request.getBodyAsString();
163-
String eventType = PseudoEventTypeExtractor.extract(payloadString);
164+
EventTypeExtractor eventTypeExtractor = new EventsDispatcherImpl();
165+
String eventType = eventTypeExtractor.extractEventType(payloadString);
164166
if (eventType != null && eventType.equals("message")) {
165167
Gson gson = GsonFactory.createSnakeCase();
166168
MessagePayload payload = gson.fromJson(payloadString, MessagePayload.class);

docs/guides/ja/interactive-components.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,8 @@ import com.google.gson.Gson;
164164
import com.slack.api.Slack;
165165
import com.slack.api.app_backend.interactive_components.payload.BlockActionPayload;
166166
import com.slack.api.app_backend.interactive_components.payload.BlockSuggestionPayload;
167+
import com.slack.api.app_backend.util.JsonPayloadExtractor;
168+
import com.slack.api.app_backend.util.JsonPayloadTypeDetector;
167169
import com.slack.api.util.json.GsonFactory;
168170

169171
PseudoHttpResponse handle(PseudoHttpRequest request) {
@@ -178,9 +180,11 @@ PseudoHttpResponse handle(PseudoHttpRequest request) {
178180
// 2. リクエストボディをパースして `action_id` が処理対象か確認
179181

180182
// リクエストボディは payload={URL エンコードされた JSON 文字列} の形式
181-
String payloadString = PseudoPayloadExtractor.extract(request.getBodyAsString());
183+
JsonPayloadExtractor payloadExtractor = new JsonPayloadExtractor();
184+
String payloadString = payloadExtractor.extractIfExists(request.getBodyAsString());
182185
// このような値になります: { "type": "block_actions", "team": { "id": "T1234567", ...
183-
String payloadType = PseudoActionTypeExtractor.extract(payloadString);
186+
JsonPayloadTypeDetector typeDetector = new JsonPayloadTypeDetector();
187+
String payloadType = typeDetector.detectType(payloadString);
184188

185189
Gson gson = GsonFactory.createSnakeCase();
186190
if (payloadType != null && payloadType.equals("block_actions")) {

docs/guides/ja/modals.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -421,6 +421,8 @@ import com.slack.api.app_backend.interactive_components.payload.BlockActionPaylo
421421
import com.slack.api.app_backend.interactive_components.payload.BlockSuggestionPayload;
422422
import com.slack.api.app_backend.views.payload.ViewSubmissionPayload;
423423
import com.slack.api.app_backend.views.payload.ViewClosedPayload;
424+
import com.slack.api.app_backend.util.JsonPayloadExtractor;
425+
import com.slack.api.app_backend.util.JsonPayloadTypeDetector;
424426
import com.slack.api.util.json.GsonFactory;
425427

426428
PseudoHttpResponse handle(PseudoHttpRequest request) {
@@ -435,9 +437,11 @@ PseudoHttpResponse handle(PseudoHttpRequest request) {
435437
// 2. リクエストボディをパースして callback_id, action_id が処理対象か確認
436438

437439
// リクエストボディは payload={URL エンコードされた JSON 文字列} の形式
438-
String payloadString = PseudoPayloadExtractor.extract(request.getBodyAsString());
440+
JsonPayloadExtractor payloadExtractor = new JsonPayloadExtractor();
441+
String payloadString = payloadExtractor.extractIfExists(request.getBodyAsString());
439442
// このような値になります: { "type": "block_actions", "team": { "id": "T1234567", ...
440-
String payloadType != null && = PseudoActionTypeExtractor.extract(payloadString);
443+
JsonPayloadTypeDetector typeDetector = new JsonPayloadTypeDetector();
444+
String payloadType = typeDetector.detectType(payloadString);
441445

442446
Gson gson = GsonFactory.createSnakeCase();
443447
if (payloadType != null && payloadType.equals("view_submission")) {

docs/guides/ja/shortcuts.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,9 +145,11 @@ PseudoHttpResponse handle(PseudoHttpRequest request) {
145145
// 2. リクエストボディをパースして `callback_id` が処理対象か確認
146146

147147
// リクエストボディは payload={URL エンコードされた JSON 文字列} の形式
148-
String payloadString = PseudoPayloadExtractor.extract(request.getBodyAsString());
148+
JsonPayloadExtractor payloadExtractor = new JsonPayloadExtractor();
149+
String payloadString = payloadExtractor.extractIfExists(request.getBodyAsString());
149150
// このような値になります: { "type": "shortcut", "team": { "id": "T1234567", ...
150-
String payloadType != null && = PseudoActionTypeExtractor.extract(payloadString);
151+
JsonPayloadTypeDetector typeDetector = new JsonPayloadTypeDetector();
152+
String payloadType = typeDetector.detectType(payloadString);
151153

152154
Gson gson = GsonFactory.createSnakeCase();
153155
if (payloadType.equals("shortcut")) {

docs/guides/modals.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -415,6 +415,8 @@ import com.slack.api.app_backend.interactive_components.payload.BlockActionPaylo
415415
import com.slack.api.app_backend.interactive_components.payload.BlockSuggestionPayload;
416416
import com.slack.api.app_backend.views.payload.ViewSubmissionPayload;
417417
import com.slack.api.app_backend.views.payload.ViewClosedPayload;
418+
import com.slack.api.app_backend.util.JsonPayloadExtractor;
419+
import com.slack.api.app_backend.util.JsonPayloadTypeDetector;
418420
import com.slack.api.util.json.GsonFactory;
419421
420422
PseudoHttpResponse handle(PseudoHttpRequest request) {
@@ -429,9 +431,11 @@ PseudoHttpResponse handle(PseudoHttpRequest request) {
429431
// 2. Parse the request body and check the type, callback_id, action_id
430432
431433
// payload={URL-encoded JSON} in the request body
432-
String payloadString = PseudoPayloadExtractor.extract(request.getBodyAsString());
434+
JsonPayloadExtractor payloadExtractor = new JsonPayloadExtractor();
435+
String payloadString = payloadExtractor.extractIfExists(request.getBodyAsString());
433436
// The value looks like: { "type": "block_actions", "team": { "id": "T1234567", ...
434-
String payloadType != null && = PseudoActionTypeExtractor.extract(payloadString);
437+
JsonPayloadTypeDetector typeDetector = new JsonPayloadTypeDetector();
438+
String payloadType = typeDetector.detectType(payloadString);
435439
436440
Gson gson = GsonFactory.createSnakeCase();
437441
if (payloadType != null && payloadType.equals("view_submission")) {

docs/guides/shortcuts.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,8 @@ import java.util.Map;
131131
import com.google.gson.Gson;
132132
import com.slack.api.Slack;
133133
import com.slack.api.app_backend.interactive_components.payload.MessageShortcutPayload;
134+
import com.slack.api.app_backend.util.JsonPayloadExtractor;
135+
import com.slack.api.app_backend.util.JsonPayloadTypeDetector;
134136
import com.slack.api.util.json.GsonFactory;
135137

136138
PseudoHttpResponse handle(PseudoHttpRequest request) {
@@ -145,9 +147,11 @@ PseudoHttpResponse handle(PseudoHttpRequest request) {
145147
// 2. Parse the request body and check if the `callback_id` is the one you'd like to handle
146148

147149
// payload={URL-encoded JSON} in the request body
148-
String payloadString = PseudoPayloadExtractor.extract(request.getBodyAsString());
150+
JsonPayloadExtractor payloadExtractor = new JsonPayloadExtractor();
151+
String payloadString = payloadExtractor.extractIfExists(request.getBodyAsString());
149152
// The value looks like: { "type": "shortcut", "team": { "id": "T1234567", ...
150-
String payloadType = PseudoActionTypeExtractor.extract(payloadString);
153+
JsonPayloadTypeDetector typeDetector = new JsonPayloadTypeDetector();
154+
String payloadType = typeDetector.detectType(payloadString);
151155

152156
Gson gson = GsonFactory.createSnakeCase();
153157
if (payloadType.equals("shortcut")) {

0 commit comments

Comments
 (0)