/** * Copyright 2014 Daum Kakao Corp. * * Redistribution and modification in source or binary forms are not permitted without specific prior written permission.  * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.kakao; import java.util.HashMap; import java.util.Map; // com.kakao.capri.api.exception.ApiErrorCodes와 sync /** * API 요청에 대한 에러 코드 */ public enum ErrorCode { /** * 클라이언트 단에서 http 요청 전,후로 에러 발생한 경우. 대게 인터넷 연결이 끊어진 경우 발생한다. code = -777 */ CLIENT_ERROR_CODE(-777), /** * SDK가 인지 못하고 있는 에러코드 */ UNDEFINED_ERROR_CODE(-888), /** * 서버 내부에서 에러가 발생한 경우. code = -1 */ INTERNAL_ERROR_CODE(-1), /** * 올바르지 않은 파라미터가 전송된 경우. code = -2 */ INVALID_PARAM_CODE(-2), /** * [현재스펙에서는 아직 발생하지 않는다] * 카카오계정으로 로그인하지 않고 다른 타입의 계정으로 로그인한 사용자가 카카오서비스(카카오스토리,카카오톡) API를 호출한 경우 또는 * 해당 API를 개발자 싸이트에서 disable 해놓은 경우. code = -3 */ NOT_SUPPORTED_API_CODE(-3), /** * 계정 제재 또는 contents 제재로 인해 해당 API 호출이 되지 않는 경우. code = -4 */ BLOCKED_ACTION_CODE(-4), /** * API 요청시 권한이 없는 경우. code = -5 */ ACCESS_DENIED_CODE(-5), /** * 허용된 요청 회수가 초과한 경우로 자세한 내용은 쿼터 정책을 참고. code = -10 */ EXCEED_LIMIT_CODE(-10), /** * [로그인기반 API] * 해당 앱에 가입되지 않은 사용자가 호출한 경우 발생한다. code = -101 */ NOT_REGISTERED_USER_CODE(-101), /** * [사용자 관리 signup API] * 이미 해당 앱에 가입한 유저가 다시 가입 API를 요청한 경우 발생한다. code = -102 */ ALREADY_REGISTERED_USER_CODE(-102), /** * [카카오톡 API] * 존재하지 않는 카카오계정으로 요청한 경우 발생한다. code = -103 */ NOT_EXIST_KAKAO_ACCOUNT_CODE(-103), /** * [사용자 관리 me, signup, updateProfile API] * 앱에 추가하지 않은 사용자 프로퍼티 키의 값을 불러오거나 저장하려고 한 경우 발생한다. * 개발자의 앱 관리 페이지에 등록된 user property key의 이름이 잘못되지 않았는지 확인 필요하다. code = -201 */ NOT_REGISTERED_PROPERTY_KEY_CODE(-201), /** * 등록되지 않은 앱키 또는 앱키로 구성된 access token으로 요청한 경우 발생한다. code = -301 */ NOT_EXIST_APP_CODE(-301), /** * 앱 카테고리가 등록되지 않은 앱으로 요청한 경우 발생한다. code = -302 */ NOT_EXIST_APP_CATEGORY_CODE(-302), /** * [로그인기반 API] * 유효하지 않은 앱키 또는 access token으로 요청한 경우 발생한다. code = -401 */ INVALID_TOKEN_CODE(-401), /** * 해당 API에 대한 퍼미션이 없는 앱이 요청한 경우 발생한다. code = -402 */ INVALID_SCOPE_CODE(-402), /** * [카카오톡 API] * 카카오톡 미가입 사용자가 요청한 경우 발생한다. code = -501 */ NOT_EXIST_KAKAOTALK_USER_CODE(-501), /** * [카카오스토리 API] * 카카오스토리 미가입 사용자가 요청한 경우 발생한다. code = -601 */ NOT_EXIST_KAKAOSTORY_USER_CODE(-601), /** * [카카오스토리 upload, postPhoto API] * 카카오스토리 이미지 업로드시 max 제한 크기(5M. 단, gif 경우 3M)를 넘을 경우 발생한다. code = -602 */ EXCEED_MAX_UPLOAD_SIZE(-602), /** * [카카오스토리 upload, linkinfo API] * 카카오스토리 이미지 업로드/스크랩 정보 요청시 timeout 넘을 경우 발생한다. code = -603 */ EXECUTION_TIMED_OUT(-603), /** * [카카오스토리 postLink API] * 스크랩하려는 URL이 scrap 불가능한 경우 발생한다. (404 not found 등) code = -604 */ INVALID_STORY_SCRAP_URL(-604), /** * [카카오스토리 getMyStory API] * 카카오스토리 이미지 업로드시 5M 제한 크기를 넘을 경우한다. code = -605 */ INVALID_STORY_ACTIVITY_ID(-605), /** * [카카오스토리 upload, postPhoto API] * 업로드 image 갯수가 max값(5개. 단, gif 경우 1개)을 넘을 경우 발생한다.code = -606 */ EXCEED_MAX_UPLOAD_NUMBER(-606), /** * 등록되지 않는 개발자의 앱키 또는 앱키로 구성된 access token으로 요청한 경우 발생한다. code = -701 */ NOT_EXIST_DEVELOPER_CODE(-701), /** * 등록된 푸시토큰이 없는 기기로 푸시 메시지를 보낸 경우 발생한다. code = -901 */ NOT_EXIST_PUSH_TOKEN(-901), /** * 카카오서비스가 점검중인 경우로 올바른 요청을 할 수 없는 경우 발생한다. code = -9798 */ KAKAO_MAINTENANCE_CODE(-9798); private final int errorCode; private static final Map<Integer, ErrorCode> reverseMap = new HashMap<Integer, ErrorCode>(24); static { for (ErrorCode errorCode : ErrorCode.values()) { reverseMap.put(errorCode.getErrorCode(), errorCode); } } ErrorCode(final int errorCode) { this.errorCode = errorCode; } /** * 숫자로 구성된 에러코드 * @return 숫자로 구성된 에러코드 */ public int getErrorCode() { return errorCode; } /** * 숫자 에러코드를 enum으로 변경하여 반환한다. * @param i 변경할 숫자 에러코드 * @return 숫자에 해당하는 enum 에러코드 */ public static ErrorCode valueOf(final Integer i) { if(i == null) return null; ErrorCode errorCode = reverseMap.get(i); if(errorCode != null) return errorCode; else return UNDEFINED_ERROR_CODE; } }