Android Open Source - pocket4android Pocket Client






From Project

Back to project page pocket4android.

License

The source code is released under:

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, includin...

If you think the Android project pocket4android 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) 2012-2014 Yu AOKI/*from  w w  w .  j  ava2s  . c  om*/
 *
 * This software may be modified and distributed under the terms
 * of the MIT license.  See the LICENSE file for details.
 */

package com.aokyu.dev.pocket;

import com.aokyu.dev.pocket.PocketServer.RequestType;
import com.aokyu.dev.pocket.error.ErrorHandler;
import com.aokyu.dev.pocket.error.ErrorResponse;
import com.aokyu.dev.pocket.error.InvalidRequestException;
import com.aokyu.dev.pocket.error.PocketException;
import com.aokyu.dev.pocket.http.ContentType;
import com.aokyu.dev.pocket.http.HttpClient;
import com.aokyu.dev.pocket.http.HttpHeader;
import com.aokyu.dev.pocket.http.HttpHeaders;
import com.aokyu.dev.pocket.http.HttpMethod;
import com.aokyu.dev.pocket.http.HttpParameters;
import com.aokyu.dev.pocket.http.HttpRequest;
import com.aokyu.dev.pocket.http.HttpResponse;
import com.aokyu.dev.pocket.util.PocketUtils;

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

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
import java.util.Map;

public class PocketClient {

    private HttpClient mClient;
    private ConsumerKey mConsumerKey;

    private ErrorHandler mErrorHandler;

    public PocketClient(ConsumerKey consumerKey) {
        mClient = new HttpClient();
        mConsumerKey = consumerKey;
        mErrorHandler = new ErrorHandler();
    }

    public void authorize(AuthorizationCallback callback)
            throws IOException, InvalidRequestException, PocketException {
        RequestToken requestToken = retrieveRequestToken();
        callback.onRequested(mConsumerKey, requestToken);
        Activity activity = callback.onRequestContinued();
        if (activity != null) {
            continueAuthorization(activity, requestToken);
        } else {
            throw new InvalidRequestException();
        }
    }

    public AccessToken authenticate(RequestToken requestToken)
            throws IOException, InvalidRequestException, PocketException {
        String endpoint = PocketServer.getEndpoint(RequestType.OAUTH_AUTHORIZE);
        URL requestUrl = new URL(endpoint);
        HttpHeaders headers = new HttpHeaders();
        headers.put(HttpHeader.CONTENT_TYPE, ContentType.JSON_WITH_UTF8.get());
        headers.put(HttpHeader.X_ACCEPT, ContentType.JSON.get());
        headers.put(HttpHeader.HOST, requestUrl.getHost());

        HttpParameters parameters = new HttpParameters();
        parameters.put(AuthRequestParameter.CONSUMER_KEY, mConsumerKey.get());
        parameters.put(AuthRequestParameter.CODE, requestToken.get());

        HttpRequest request = new HttpRequest(HttpMethod.POST, requestUrl, headers, parameters);

        HttpResponse response = null;
        AccessToken accessToken = null;
        try {
            response = mClient.execute(request);
            if (response.getStatusCode() == HttpURLConnection.HTTP_OK) {
                JSONObject jsonObj = response.getResponseAsJSONObject();
                accessToken = new AccessToken(jsonObj);
            } else {
                ErrorResponse error = new ErrorResponse(response);
                mErrorHandler.handleResponse(error);
            }
        } catch (JSONException e) {
            throw new PocketException(e.getMessage());
        } finally {
            if (response != null) {
                response.disconnect();
            }
        }

        return accessToken;
    }

    private RequestToken retrieveRequestToken()
            throws IOException, InvalidRequestException, PocketException {
        String endpoint = PocketServer.getEndpoint(RequestType.OAUTH_REQUEST);
        URL requestUrl = new URL(endpoint);
        HttpHeaders headers = new HttpHeaders();
        headers.put(HttpHeader.CONTENT_TYPE, ContentType.JSON_WITH_UTF8.get());
        headers.put(HttpHeader.X_ACCEPT, ContentType.JSON.get());
        headers.put(HttpHeader.HOST, requestUrl.getHost());

        HttpParameters parameters = new HttpParameters();
        parameters.put(AuthRequestParameter.CONSUMER_KEY, mConsumerKey.get());
        parameters.put(AuthRequestParameter.REDIRECT_URI, PocketUtils.getRedirectUri(mConsumerKey));

        HttpRequest request = new HttpRequest(HttpMethod.POST, requestUrl, headers, parameters);

        HttpResponse response = null;
        RequestToken requestToken = null;
        try {
            response = mClient.execute(request);
            if (response.getStatusCode() == HttpURLConnection.HTTP_OK) {
                JSONObject jsonObj = response.getResponseAsJSONObject();
                requestToken = new RequestToken(jsonObj);
            } else {
                ErrorResponse error = new ErrorResponse(response);
                mErrorHandler.handleResponse(error);
            }
        } catch (JSONException e) {
            throw new PocketException(e.getMessage());
        } finally {
            if (response != null) {
                response.disconnect();
            }
        }

        return requestToken;
    }

    private void continueAuthorization(Activity callback, RequestToken requestToken) {
        String url = PocketServer.getRedirectUrl(mConsumerKey, requestToken);
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY|Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP);
        callback.startActivity(intent);
    }

    public AddResponse add(AccessToken accessToken, String url)
            throws IOException, InvalidRequestException, PocketException {
        return add(accessToken, url, null, null, -1);
    }

    public AddResponse add(AccessToken accessToken, String url, String title,
            String[] tags, long tweetId)
                    throws IOException, InvalidRequestException, PocketException {
        AddRequest.Builder builder = new AddRequest.Builder(url);

        if (title != null) {
            builder.setTitle(title);
        }

        if (tags != null) {
            builder.setTags(tags);
        }

        if (tweetId != -1) {
            builder.setTweetId(tweetId);
        }

        AddRequest addRequest = builder.build();
        return add(accessToken, addRequest);
    }

    public AddResponse add(AccessToken accessToken, AddRequest addRequest)
            throws IOException, InvalidRequestException, PocketException {
        String endpoint = PocketServer.getEndpoint(RequestType.ADD);
        URL requestUrl = new URL(endpoint);
        HttpHeaders headers = new HttpHeaders();
        headers.put(HttpHeader.CONTENT_TYPE, ContentType.JSON_WITH_UTF8.get());
        headers.put(HttpHeader.X_ACCEPT, ContentType.JSON.get());
        headers.put(HttpHeader.HOST, requestUrl.getHost());

        addRequest.put(AddRequest.Parameter.ACCESS_TOKEN, accessToken.get());
        addRequest.put(AddRequest.Parameter.CONSUMER_KEY, mConsumerKey.get());

        HttpParameters parameters = addRequest.getHttpParameters();

        HttpRequest request = new HttpRequest(HttpMethod.POST, requestUrl, headers, parameters);

        HttpResponse response = null;
        JSONObject jsonObj = null;
        Map<String, List<String>> responseHeaders = null;
        try {
            response = mClient.execute(request);
            if (response.getStatusCode() == HttpURLConnection.HTTP_OK) {
                jsonObj = response.getResponseAsJSONObject();
                responseHeaders = response.getHeaderFields();
            } else {
                ErrorResponse error = new ErrorResponse(response);
                mErrorHandler.handleResponse(error);
            }
        } catch (JSONException e) {
            throw new PocketException(e.getMessage());
        } finally {
            if (response != null) {
                response.disconnect();
            }
        }

        AddResponse addResponse = null;
        if (jsonObj != null) {
            try {
                addResponse = new AddResponse(jsonObj, responseHeaders);
            } catch (JSONException e) {
                throw new PocketException(e.getMessage());
            }
        }

        return addResponse;
    }

    public RetrieveResponse retrieve(AccessToken accessToken, RetrieveRequest retrieveRequest)
            throws IOException, InvalidRequestException, PocketException {
        String endpoint = PocketServer.getEndpoint(RequestType.RETRIEVE);
        URL requestUrl = new URL(endpoint);
        HttpHeaders headers = new HttpHeaders();
        headers.put(HttpHeader.CONTENT_TYPE, ContentType.JSON_WITH_UTF8.get());
        headers.put(HttpHeader.X_ACCEPT, ContentType.JSON.get());
        headers.put(HttpHeader.HOST, requestUrl.getHost());

        retrieveRequest.put(AddRequest.Parameter.ACCESS_TOKEN, accessToken.get());
        retrieveRequest.put(AddRequest.Parameter.CONSUMER_KEY, mConsumerKey.get());

        HttpParameters parameters = retrieveRequest.getHttpParameters();

        HttpRequest request = new HttpRequest(HttpMethod.POST, requestUrl, headers, parameters);

        HttpResponse response = null;
        JSONObject jsonObj = null;
        Map<String, List<String>> responseHeaders = null;
        try {
            response = mClient.execute(request);
            if (response.getStatusCode() == HttpURLConnection.HTTP_OK) {
                jsonObj = response.getResponseAsJSONObject();
                responseHeaders = response.getHeaderFields();
            } else {
                ErrorResponse error = new ErrorResponse(response);
                mErrorHandler.handleResponse(error);
            }
        } catch (JSONException e) {
            throw new PocketException(e.getMessage());
        } finally {
            if (response != null) {
                response.disconnect();
            }
        }

        RetrieveResponse retrieveResponse = null;
        if (jsonObj != null) {
            try {
                retrieveResponse = new RetrieveResponse(jsonObj, responseHeaders);
            } catch (JSONException e) {
                throw new PocketException(e.getMessage());
            }
        }

        return retrieveResponse;
    }

    public ModifyResponse modify(AccessToken accessToken, ModifyRequest modifyRequest)
            throws IOException, InvalidRequestException, PocketException {
        String endpoint = PocketServer.getEndpoint(RequestType.MODIFY);
        URL requestUrl = new URL(endpoint);
        HttpHeaders headers = new HttpHeaders();
        headers.put(HttpHeader.CONTENT_TYPE, ContentType.JSON_WITH_UTF8.get());
        headers.put(HttpHeader.X_ACCEPT, ContentType.JSON.get());
        headers.put(HttpHeader.HOST, requestUrl.getHost());

        modifyRequest.put(AddRequest.Parameter.ACCESS_TOKEN, accessToken.get());
        modifyRequest.put(AddRequest.Parameter.CONSUMER_KEY, mConsumerKey.get());

        HttpParameters parameters = modifyRequest.getHttpParameters();

        HttpRequest request = new HttpRequest(HttpMethod.POST, requestUrl, headers, parameters);

        HttpResponse response = null;
        JSONObject jsonObj = null;
        Map<String, List<String>> responseHeaders = null;
        try {
            response = mClient.execute(request);
            if (response.getStatusCode() == HttpURLConnection.HTTP_OK) {
                jsonObj = response.getResponseAsJSONObject();
                responseHeaders = response.getHeaderFields();
            } else {
                ErrorResponse error = new ErrorResponse(response);
                mErrorHandler.handleResponse(error);
            }
        } catch (JSONException e) {
            throw new PocketException(e.getMessage());
        } finally {
            if (response != null) {
                response.disconnect();
            }
        }

        ModifyResponse modifyResponse = null;
        if (jsonObj != null) {
            try {
                modifyResponse = new ModifyResponse(jsonObj, responseHeaders);
            } catch (JSONException e) {
                throw new PocketException(e.getMessage());
            }
        }

        return modifyResponse;
    }
}




Java Source Code List

com.aokyu.dev.pocket.AccessToken.java
com.aokyu.dev.pocket.AddRequest.java
com.aokyu.dev.pocket.AddResponse.java
com.aokyu.dev.pocket.AuthCallbackActivity.java
com.aokyu.dev.pocket.AuthRequestParameter.java
com.aokyu.dev.pocket.AuthResponseParameter.java
com.aokyu.dev.pocket.AuthorizationCallback.java
com.aokyu.dev.pocket.ClientLimit.java
com.aokyu.dev.pocket.ConsumerKey.java
com.aokyu.dev.pocket.ModifyRequest.java
com.aokyu.dev.pocket.ModifyResponse.java
com.aokyu.dev.pocket.PocketClient.java
com.aokyu.dev.pocket.PocketServer.java
com.aokyu.dev.pocket.RateLimit.java
com.aokyu.dev.pocket.RequestToken.java
com.aokyu.dev.pocket.Request.java
com.aokyu.dev.pocket.Response.java
com.aokyu.dev.pocket.RetrieveRequestParameter.java
com.aokyu.dev.pocket.RetrieveRequest.java
com.aokyu.dev.pocket.RetrieveResponse.java
com.aokyu.dev.pocket.UserLimit.java
com.aokyu.dev.pocket.content.Image.java
com.aokyu.dev.pocket.content.MediaItem.java
com.aokyu.dev.pocket.content.Page.java
com.aokyu.dev.pocket.content.PocketItem.java
com.aokyu.dev.pocket.content.Video.java
com.aokyu.dev.pocket.error.ErrorCode.java
com.aokyu.dev.pocket.error.ErrorHandler.java
com.aokyu.dev.pocket.error.ErrorResponse.java
com.aokyu.dev.pocket.error.InvalidRequestException.java
com.aokyu.dev.pocket.error.PocketException.java
com.aokyu.dev.pocket.http.ContentType.java
com.aokyu.dev.pocket.http.HttpClient.java
com.aokyu.dev.pocket.http.HttpHeader.java
com.aokyu.dev.pocket.http.HttpHeaders.java
com.aokyu.dev.pocket.http.HttpMethod.java
com.aokyu.dev.pocket.http.HttpParameters.java
com.aokyu.dev.pocket.http.HttpRequest.java
com.aokyu.dev.pocket.http.HttpResponse.java
com.aokyu.dev.pocket.http.MessageBody.java
com.aokyu.dev.pocket.util.HttpUtils.java
com.aokyu.dev.pocket.util.JSONUtils.java
com.aokyu.dev.pocket.util.PocketUtils.java
com.hyperionics.PocketTest.AndyUtil.java
com.hyperionics.PocketTestBrowser.AndyUtil.java
com.hyperionics.PocketTestBrowser.Lt.java
com.hyperionics.PocketTestBrowser.PocketActivity.java
com.hyperionics.PocketTest.Lt.java
com.hyperionics.PocketTest.PocketActivity.java
com.hyperionics.PocketTest.SimpleBrowser.java