Android Open Source - vk-android-sdk V K Error






From Project

Back to project page vk-android-sdk.

License

The source code is released under:

MIT License

If you think the Android project vk-android-sdk listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

//
//  Copyright (c) 2014 VK.com
///*from w  ww  .  ja v a 2  s . com*/
//  Permission is hereby granted, free of charge, to any person obtaining a copy of
//  this software and associated documentation files (the "Software"), to deal in
//  the Software without restriction, including without limitation the rights to
//  use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
//  the Software, and to permit persons to whom the Software is furnished to do so,
//  subject to the following conditions:
//
//  The above copyright notice and this permission notice shall be included in all
//  copies or substantial portions of the Software.
//
//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
//  FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
//  COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
//  IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
//  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//

package com.vk.sdk.api;

import android.net.Uri;

import com.vk.sdk.VKObject;
import com.vk.sdk.util.VKJsonHelper;

import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.Map;

/**
 * Class for presenting VK SDK and VK API errors
 */
public class VKError extends VKObject {
  public static final int VK_API_ERROR = -101;
    /**
     * @deprecated Use VK_CANCELED instead
     */
    public static final int VK_API_CANCELED = -102;
    public static final int VK_CANCELED = -102;

    /**
     * @deprecated Use VK_REQUEST_NOT_PREPARED instead
     */
    public static final int VK_API_REQUEST_NOT_PREPARED = -103;
    public static final int VK_REQUEST_NOT_PREPARED = -103;

    /**
     * @deprecated Use VK_JSON_FAILED instead
     */
    public static final int VK_API_JSON_FAILED = -104;
    public static final int VK_JSON_FAILED = -104;

    /**
     * @deprecated Use VK_REQUEST_HTTP_FAILED instead
     */
    public static final int VK_API_REQUEST_HTTP_FAILED = -105;
    public static final int VK_REQUEST_HTTP_FAILED = -105;

    /**
     * Contains system HTTP error
     */
    public Exception httpError;
    /**
     * Describes API error
     */
    public VKError apiError;
    /**
     * Request which caused error
     */
    public VKRequest request;
    /**
     * May contains such errors:<br/>
     * <b>HTTP status code</b> if HTTP error occured;<br/>
     * <b>VK_API_ERROR</b> if API error occured;<br/>
     * <b>VK_API_CANCELED</b> if request was canceled;<br/>
     * <b>VK_API_REQUEST_NOT_PREPARED</b> if error occured while preparing request;
     */
    public int errorCode;
    /**
     * API error message
     */
    public String errorMessage;
    /**
     * Reason for authorization fail
     */
    public String errorReason;
    /**
     * API parameters passed to request
     */
    public ArrayList<Map<String, String>> requestParams;
    /**
     * Captcha identifier for captcha-check
     */
    public String captchaSid;
    /**
     * Image for captcha-check
     */
    public String captchaImg;
    /**
     * Redirection address if validation check required
     */
    public String redirectUri;

    /**
     * Generate new error with code
     *
     * @param errorCode positive if it's an HTTP error. Negative if it's API or SDK error
     */
    public VKError(int errorCode) {
        this.errorCode = errorCode;
    }

    /**
     * Generate API error from JSON
     *
     * @param json Json description of VK API error
     */
    @SuppressWarnings("unchecked")
  public VKError(JSONObject json) throws JSONException {
        VKError internalError = new VKError(json.getInt(VKApiConst.ERROR_CODE));
        internalError.errorMessage = json.getString(VKApiConst.ERROR_MSG);
        internalError.requestParams = (ArrayList<Map<String, String>>) VKJsonHelper.toList(
                json.getJSONArray(VKApiConst.REQUEST_PARAMS));
        if (internalError.errorCode == 14) {
            internalError.captchaImg = json.getString(VKApiConst.CAPTCHA_IMG);
            internalError.captchaSid = json.getString(VKApiConst.CAPTCHA_SID);
        }
        if (internalError.errorCode == 17) {
            internalError.redirectUri = json.getString(VKApiConst.REDIRECT_URI);
        }

        this.errorCode = VK_API_ERROR;
        this.apiError = internalError;
    }

    private static final String FAIL = "fail";
    private static final String ERROR_REASON = "error_reason";
    private static final String ERROR_DESCRIPTION = "error_description";

    /**
     * Generate API error from HTTP-query
     *
     * @param queryParams key-value parameters
     */
    public VKError(Map<String, String> queryParams) {
        this.errorCode = VK_API_ERROR;
        this.errorReason = queryParams.get(ERROR_REASON);
        this.errorMessage = Uri.decode(queryParams.get(ERROR_DESCRIPTION));
        if (queryParams.containsKey(FAIL)) {
            this.errorReason = "Action failed";
        }
        if (queryParams.containsKey("cancel")) {
            this.errorCode   = VK_CANCELED;
            this.errorReason = "User canceled request";
        }
    }

    /**
     * Repeats failed captcha request with user entered answer to captcha
     *
     * @param userEnteredCode answer for captcha
     */
    public void answerCaptcha(String userEnteredCode) {
        VKParameters params = new VKParameters();
        params.put(VKApiConst.CAPTCHA_SID, captchaSid);
        params.put(VKApiConst.CAPTCHA_KEY, userEnteredCode);
        request.addExtraParameters(params);
        request.repeat();
    }
    public static VKError getRegisteredError(long requestId) {
        return (VKError) getRegisteredObject(requestId);
    }

    private void appendFields(StringBuilder builder) {
        if (errorReason != null)
            builder.append(String.format("; %s", errorReason));
        if (errorMessage != null)
            builder.append(String.format("; %s", errorMessage));
    }

  @Override public String toString()
  {
    StringBuilder errorString = new StringBuilder("VKError (");
    switch (this.errorCode) {
      case VK_API_ERROR:
        errorString.append("API error");
                if (apiError != null) {
                    errorString.append(apiError.toString());
                }
        break;
      case VK_CANCELED:
        errorString.append("Canceled");
        break;
      case VK_REQUEST_NOT_PREPARED:
        errorString.append("Request wasn't prepared");
        break;
      case VK_JSON_FAILED:
        errorString.append("JSON failed");

        break;
      case VK_REQUEST_HTTP_FAILED:
        errorString.append("HTTP failed");
        break;

      default:
        errorString.append(String.format("code: %d; ", errorCode));
        break;
    }
        appendFields(errorString);
    errorString.append(")");
    return errorString.toString();
  }
}




Java Source Code List

com.vk.sdk.VKAccessToken.java
com.vk.sdk.VKObject.java
com.vk.sdk.VKOpenAuthActivity.java
com.vk.sdk.VKScope.java
com.vk.sdk.VKSdkListener.java
com.vk.sdk.VKSdkVersion.java
com.vk.sdk.VKSdk.java
com.vk.sdk.VKUIHelper.java
com.vk.sdk.api.VKApiConst.java
com.vk.sdk.api.VKApi.java
com.vk.sdk.api.VKBatchRequest.java
com.vk.sdk.api.VKDefaultParser.java
com.vk.sdk.api.VKError.java
com.vk.sdk.api.VKParameters.java
com.vk.sdk.api.VKParser.java
com.vk.sdk.api.VKRequest.java
com.vk.sdk.api.VKResponse.java
com.vk.sdk.api.httpClient.VKAbstractOperation.java
com.vk.sdk.api.httpClient.VKHttpClient.java
com.vk.sdk.api.httpClient.VKHttpOperation.java
com.vk.sdk.api.httpClient.VKImageOperation.java
com.vk.sdk.api.httpClient.VKJsonOperation.java
com.vk.sdk.api.httpClient.VKModelOperation.java
com.vk.sdk.api.httpClient.VKMultipartEntity.java
com.vk.sdk.api.methods.VKApiBase.java
com.vk.sdk.api.methods.VKApiCaptcha.java
com.vk.sdk.api.methods.VKApiFriends.java
com.vk.sdk.api.methods.VKApiGroups.java
com.vk.sdk.api.methods.VKApiPhotos.java
com.vk.sdk.api.methods.VKApiUsers.java
com.vk.sdk.api.methods.VKApiWall.java
com.vk.sdk.api.model.Identifiable.java
com.vk.sdk.api.model.ParseUtils.java
com.vk.sdk.api.model.VKApiApplicationContent.java
com.vk.sdk.api.model.VKApiAudio.java
com.vk.sdk.api.model.VKApiChat.java
com.vk.sdk.api.model.VKApiCity.java
com.vk.sdk.api.model.VKApiComment.java
com.vk.sdk.api.model.VKApiCommunityArray.java
com.vk.sdk.api.model.VKApiCommunityFull.java
com.vk.sdk.api.model.VKApiCommunity.java
com.vk.sdk.api.model.VKApiCountry.java
com.vk.sdk.api.model.VKApiDocument.java
com.vk.sdk.api.model.VKApiLink.java
com.vk.sdk.api.model.VKApiMessage.java
com.vk.sdk.api.model.VKApiModel.java
com.vk.sdk.api.model.VKApiNote.java
com.vk.sdk.api.model.VKApiOwner.java
com.vk.sdk.api.model.VKApiPhotoAlbum.java
com.vk.sdk.api.model.VKApiPhotoSize.java
com.vk.sdk.api.model.VKApiPhoto.java
com.vk.sdk.api.model.VKApiPlace.java
com.vk.sdk.api.model.VKApiPoll.java
com.vk.sdk.api.model.VKApiPost.java
com.vk.sdk.api.model.VKApiPostedPhoto.java
com.vk.sdk.api.model.VKApiSchool.java
com.vk.sdk.api.model.VKApiUniversity.java
com.vk.sdk.api.model.VKApiUserFull.java
com.vk.sdk.api.model.VKApiUser.java
com.vk.sdk.api.model.VKApiVideo.java
com.vk.sdk.api.model.VKApiWikiPage.java
com.vk.sdk.api.model.VKAttachments.java
com.vk.sdk.api.model.VKCommentArray.java
com.vk.sdk.api.model.VKList.java
com.vk.sdk.api.model.VKPhotoArray.java
com.vk.sdk.api.model.VKPhotoSizes.java
com.vk.sdk.api.model.VKPostArray.java
com.vk.sdk.api.model.VKPrivacy.java
com.vk.sdk.api.model.VKScopes.java
com.vk.sdk.api.model.VKUsersArray.java
com.vk.sdk.api.model.VKWallPostResult.java
com.vk.sdk.api.model.package-info.java
com.vk.sdk.api.photo.VKImageParameters.java
com.vk.sdk.api.photo.VKUploadAlbumPhotoRequest.java
com.vk.sdk.api.photo.VKUploadImage.java
com.vk.sdk.api.photo.VKUploadPhotoBase.java
com.vk.sdk.api.photo.VKUploadWallPhotoRequest.java
com.vk.sdk.dialogs.VKCaptchaDialog.java
com.vk.sdk.dialogs.VKShareDialog.java
com.vk.sdk.util.VKJsonHelper.java
com.vk.sdk.util.VKStringJoiner.java
com.vk.sdk.util.VKUtil.java
com.vk.vktestapp.ApiCallActivity.java
com.vk.vktestapp.LoginActivity.java
com.vk.vktestapp.TestActivity.java