All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.vk.api.sdk.queries.oauth.OAuthQueryBuilder Maven / Gradle / Ivy

package com.vk.api.sdk.queries.oauth;

import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.JsonSyntaxException;
import com.google.gson.stream.JsonReader;
import com.vk.api.sdk.client.AbstractQueryBuilder;
import com.vk.api.sdk.client.VkApiClient;
import com.vk.api.sdk.exceptions.ApiException;
import com.vk.api.sdk.exceptions.ClientException;
import com.vk.api.sdk.exceptions.OAuthException;
import com.vk.api.sdk.objects.oauth.Error;
import org.slf4j.LoggerFactory;
import org.slf4j.Logger;

import java.io.StringReader;
import java.lang.reflect.Type;

/**
 * Created by tsivarev on 14.08.16.
 */
public abstract class OAuthQueryBuilder extends AbstractQueryBuilder {

    private static final Logger LOG = LoggerFactory.getLogger(OAuthQueryBuilder.class);

    public OAuthQueryBuilder(VkApiClient client, String endpoint, String method, Type type) {
        super(client, endpoint, method, type);
    }

    @Override
    public R execute() throws ApiException, ClientException {
        String textResponse = executeAsString();
        JsonReader jsonReader = new JsonReader(new StringReader(textResponse));
        JsonObject json = (JsonObject) new JsonParser().parse(jsonReader);

        if (json.has("error")) {
            Error error;
            try {
                error = getGson().fromJson(json, Error.class);
            } catch (JsonSyntaxException e) {
                LOG.error("Invalid JSON: " + textResponse, e);
                throw new ClientException("Can't parse json response");
            }

            OAuthException exception = new OAuthException(error.getError(), error.getErrorDescription(), error.getRedirectUri());
            LOG.error("API error", exception);
            throw exception;
        }

        try {
            return getGson().fromJson(json, getResponseClass());
        } catch (JsonSyntaxException e) {
            LOG.error("Invalid JSON: " + textResponse, e);
            throw new ClientException("Can't parse json response");
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy