// Path: src/main/java/be/lukin/poeditor/exceptions/ApiException.java
// public class ApiException extends RuntimeException {
//     private String status;
//     private String code;
//     
//     public ApiException() {
//     }
// 
//     public ApiException(String status, String code, String message){
//         super(message);
//         this.status = status;
//         this.code = code;
//         
//     }
//     
//     public ApiException(String message) {
//         super(message);
//     }
// 
//     public ApiException(String message, Throwable cause) {
//         super(message, cause);
//     }
// 
//     public ApiException(Throwable cause) {
//         super(cause);
//     }
// 
//     public ApiException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
//         super(message, cause, enableSuppression, writableStackTrace);
//     }
// 
//     public void setStatus(String status) {
//         this.status = status;
//     }
// 
//     public void setCode(String code) {
//         this.code = code;
//     }
// 
//     @Override
//     public String toString() {
//         return "ApiException{" +
//                 "status='" + status + '\'' +
//                 ", code='" + code + '\'' +
//                 ", message='" + super.getMessage() + '\'' +
//                 '}';
//     }
// }
// 
// Path: src/main/java/be/lukin/poeditor/exceptions/InvalidTokenException.java
// public class InvalidTokenException extends ApiException {
// }
// 
// Path: src/main/java/be/lukin/poeditor/exceptions/PermissionDeniedException.java
// public class PermissionDeniedException extends ApiException {
// }
// 
// Path: src/main/java/be/lukin/poeditor/models/Response.java
// public class Response {
//     /**
//      * https://poeditor.com/api_reference/#create_project 
//      */
//     public static class Item{
//         public int id;
// 
//         @Override
//         public String toString() {
//             return "Item{" +
//                     "id=" + id +
//                     '}';
//         }
//     }
//     
//     public String status;
//     public String code;
//     public String message;
//     public Item item;
// 
//     @Override
//     public String toString() {
//         return "Response{" +
//                 "status='" + status + '\'' +
//                 ", code='" + code + '\'' +
//                 ", message='" + message + '\'' +
//                 ", item=" + item +
//                 '}';
//     }
// }


import be.lukin.poeditor.exceptions.ApiException;
import be.lukin.poeditor.exceptions.InvalidTokenException;
import be.lukin.poeditor.exceptions.PermissionDeniedException;
import be.lukin.poeditor.models.Response;
import java.util.Map;
import static java.lang.String.format;
package be.lukin.poeditor;



public abstract class ApiUtils {
    
    public static void checkResponse(Response response){
        checkResponse(response, null);
    }
    
// Path: src/main/java/be/lukin/poeditor/exceptions/ApiException.java
// public class ApiException extends RuntimeException {
//     private String status;
//     private String code;
//     
//     public ApiException() {
//     }
// 
//     public ApiException(String status, String code, String message){
//         super(message);
//         this.status = status;
//         this.code = code;
//         
//     }
//     
//     public ApiException(String message) {
//         super(message);
//     }
// 
//     public ApiException(String message, Throwable cause) {
//         super(message, cause);
//     }
// 
//     public ApiException(Throwable cause) {
//         super(cause);
//     }
// 
//     public ApiException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
//         super(message, cause, enableSuppression, writableStackTrace);
//     }
// 
//     public void setStatus(String status) {
//         this.status = status;
//     }
// 
//     public void setCode(String code) {
//         this.code = code;
//     }
// 
//     @Override
//     public String toString() {
//         return "ApiException{" +
//                 "status='" + status + '\'' +
//                 ", code='" + code + '\'' +
//                 ", message='" + super.getMessage() + '\'' +
//                 '}';
//     }
// }
// 
// Path: src/main/java/be/lukin/poeditor/exceptions/InvalidTokenException.java
// public class InvalidTokenException extends ApiException {
// }
// 
// Path: src/main/java/be/lukin/poeditor/exceptions/PermissionDeniedException.java
// public class PermissionDeniedException extends ApiException {
// }
// 
// Path: src/main/java/be/lukin/poeditor/models/Response.java
// public class Response {
//     /**
//      * https://poeditor.com/api_reference/#create_project 
//      */
//     public static class Item{
//         public int id;
// 
//         @Override
//         public String toString() {
//             return "Item{" +
//                     "id=" + id +
//                     '}';
//         }
//     }
//     
//     public String status;
//     public String code;
//     public String message;
//     public Item item;
// 
//     @Override
//     public String toString() {
//         return "Response{" +
//                 "status='" + status + '\'' +
//                 ", code='" + code + '\'' +
//                 ", message='" + message + '\'' +
//                 ", item=" + item +
//                 '}';
//     }
// }


// Path: src/main/java/be/lukin/poeditor/ApiUtils.java
import be.lukin.poeditor.exceptions.ApiException;
import be.lukin.poeditor.exceptions.InvalidTokenException;
import be.lukin.poeditor.exceptions.PermissionDeniedException;
import be.lukin.poeditor.models.Response;
import java.util.Map;
import static java.lang.String.format;

package be.lukin.poeditor;



public abstract class ApiUtils {
    
    public static void checkResponse(Response response){
        checkResponse(response, null);
    }
    
    public static void checkResponse(Response response, Map<String, String> context){