슬랙 API를 호출하는데 아래와 같이 파라미터의 갯수에 따라 execute함수가 별도로 존재한다.
처음에 이렇게 설계를 한 이유는
슬랙의 경우에는 response의 isOK 필드를 통해서 success, fail을 분리하고 있었고, 그래서 매 요청마다 validateResponse 작업이 필요했다.
그렇다면 매 요청하다 validateResponse를 넣는게 비효율적이라고 생각해서 파라미터의 갯수에 따라서 추상화를 진행했다.
private <T extends SlackApiResponse, K, U, R> T execute(
final SlackTriQuery<T, K, U, R> slackFunction,
final String methodName,
final K param1,
final U param2,
final R param3) {
T result = slackFunction.execute(param1, param2, param3);
validateResponse(methodName, result);
return result;
}
private <T extends SlackApiResponse, K> T execute(
final SlackQuery<T, K> slackFunction, final String methodName, final K request) {
T result = slackFunction.execute(request);
validateResponse(methodName, result);
return result;
}
private String requestToken(String token) {
return String.format("%s %s", BEARER, token);
}
private <T extends SlackApiResponse> void validateResponse(String methodName, T response) {
if (!response.isOk()) {
throw new SlackApiException(methodName, response);
}
}
이어서 작성하겠음 ^^ 궁금하면 계속 보셈 ㅋ