Skip to content
This repository was archived by the owner on Feb 9, 2021. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package ch.viascom.hipchat.api.exception;

import ch.viascom.hipchat.api.exception.models.ForbiddenError;
import ch.viascom.hipchat.api.response.generic.ErrorResponse;
import ch.viascom.hipchat.api.util.JsonUtil;
import lombok.Getter;
import lombok.Setter;

/**
* Created by patrickboesch on 18.04.16.
*/
public class AccessAPIException extends APIException {
@Getter
@Setter
private ForbiddenError forbiddenError;

public AccessAPIException(ErrorResponse errorResponse) {
super(errorResponse);
forbiddenError = JsonUtil.forbiddenErrorMapper(errorResponse.getResponseBody());
}

public AccessAPIException(ErrorResponse errorResponse, String message) {
super(errorResponse, message);
forbiddenError = JsonUtil.forbiddenErrorMapper(errorResponse.getResponseBody());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package ch.viascom.hipchat.api.exception;

import ch.viascom.hipchat.api.response.generic.ErrorResponse;

/**
* Created by patrickboesch on 18.04.16.
*/
public class AuthorizationAPIException extends APIException {
public AuthorizationAPIException(ErrorResponse errorResponse) {
super(errorResponse);
}

public AuthorizationAPIException(ErrorResponse errorResponse, String message) {
super(errorResponse, message);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package ch.viascom.hipchat.api.exception.models;

import lombok.Data;

/**
* Created by patrickboesch on 18.04.16.
*/
@Data
public class ForbiddenError {
private String message;
private int code;
private String type;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package ch.viascom.hipchat.api.exception.models;

import lombok.Data;

/**
* Created by patrickboesch on 18.04.16.
*/
@Data
public class ForbiddenErrorWrapper {
private ForbiddenError error;
}
14 changes: 12 additions & 2 deletions src/main/java/ch/viascom/hipchat/api/request/generic/Request.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package ch.viascom.hipchat.api.request.generic;

import ch.viascom.hipchat.api.exception.APIException;
import ch.viascom.hipchat.api.exception.AuthorizationAPIException;
import ch.viascom.hipchat.api.exception.AccessAPIException;
import ch.viascom.hipchat.api.response.generic.ErrorResponse;
import ch.viascom.hipchat.api.response.generic.Response;
import ch.viascom.hipchat.api.response.generic.ResponseHeader;
Expand Down Expand Up @@ -96,11 +98,19 @@ public T execute() throws APIException {
errorResponse.setRequestBody(getJsonBody());
errorResponse.setResponseBody(content);
errorResponse.setResponseHeader(responseHeader);
throw new APIException(errorResponse, "Response-Statuscode: " + String.valueOf(status));
switch (status) {
case 401:
throw new AuthorizationAPIException(errorResponse, "Response-Statuscode: " + String.valueOf(status));
case 403:
throw new AccessAPIException(errorResponse, "Response-Statuscode: " + String.valueOf(status));
default:
throw new APIException(errorResponse, "Response-Statuscode: " + String.valueOf(status));
}

}
} catch (Exception e) {
if (e instanceof APIException) {
//Pass through APIException
//Pass through APIExceptions
throw (APIException) e;
} else {
log.error("API-Error - " + e.getMessage());
Expand Down
8 changes: 8 additions & 0 deletions src/main/java/ch/viascom/hipchat/api/util/JsonUtil.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package ch.viascom.hipchat.api.util;

import ch.viascom.hipchat.api.exception.models.ForbiddenError;
import ch.viascom.hipchat.api.exception.models.ForbiddenErrorWrapper;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

Expand All @@ -23,4 +25,10 @@ public static String getJsonBody(Object o, String pathIdName) {

return json;
}

public static ForbiddenError forbiddenErrorMapper(String errorBody) {
Gson gson = new Gson();
ForbiddenErrorWrapper wrapper = gson.fromJson(errorBody, ForbiddenErrorWrapper.class);
return wrapper.getError();
}
}