hoahong.facebook.messenger.fbclient.MMConnector.java Source code

Java tutorial

Introduction

Here is the source code for hoahong.facebook.messenger.fbclient.MMConnector.java

Source

/*
 * Copyright (c) 2014 Pendulab Inc.
 * 111 N Chestnut St, Suite 200, Winston Salem, NC, 27101, U.S.A.
 * All rights reserved.
 *
 * This software is the confidential and proprietary information of
 * Pendulab Inc. ("Confidential Information"). You shall not disclose such
 * Confidential Information and shall use it only in accordance with the terms
 * of the license agreement you entered into with Pendulab.
*/
package hoahong.facebook.messenger.fbclient;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;

import com.google.gson.Gson;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.util.Log;

public class MMConnector {
    public static final String SESSION_HEADER_NAME = "Set-Cookie";
    public static final String DATE_HEADER_NAME = "Date";
    public static final int TIME_OUT_CONNECTION = 3000;
    public static final int TIME_OUT_SOCKET = 5000;

    public MMConnector() {
    }

    public AvatarFbReponseData sendRequest(String id, int size) {
        AvatarFbReponseData responseData = null;
        try {
            Gson gson = new Gson();

            String link = "https://graph.facebook.com/" + id + "/picture?type=normal&redirect=0&width=" + size
                    + "&height=" + size;
            // prepare request
            HttpParams httpParameters = new BasicHttpParams();
            HttpConnectionParams.setConnectionTimeout(httpParameters, TIME_OUT_CONNECTION);
            HttpConnectionParams.setConnectionTimeout(httpParameters, TIME_OUT_SOCKET);
            HttpClient httpClient = new DefaultHttpClient(httpParameters);
            HttpGet postRequest = new HttpGet(link);
            //postRequest.setHeader("Content-Type", "application/json");
            //set session

            // execute request and send response message to MMClientContext
            HttpResponse httpResponse = httpClient.execute(postRequest);
            //System.out.println("response: " + httpResponse);

            /**** handle response for each command ***/
            //extract json Object
            BufferedReader reader = new BufferedReader(
                    new InputStreamReader(httpResponse.getEntity().getContent(), "UTF-8"));
            // read entire content
            StringBuilder buffer = new StringBuilder();
            String ln;
            while ((ln = reader.readLine()) != null) {
                buffer.append(ln);
            }
            if (buffer.length() == 0) {
                // empty? do something... 
                throw new Exception("Empty response");
            } else {
                responseData = gson.fromJson(buffer.toString(), AvatarFbReponseData.class);
            }

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // are you sure you have to do this?
            //           httpClient.getConnectionManager().shutdown();
        }
        return responseData;
    }

    public String getValueFromHeader(String headerName, HttpResponse response) {
        return response.getHeaders(headerName)[0].getValue();
    }

    public static boolean isOnline(Context activity) {
        ConnectivityManager cm = (ConnectivityManager) activity.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo netInfo = cm.getActiveNetworkInfo();
        if (netInfo != null && netInfo.isConnectedOrConnecting()) {
            return true;
        }
        return false;
    }

    //main method to test
    public static void main(String[] args) {

        //      new MMConnector().sendRequest("", "", new LoginRequestData("539148240cf2b925cdce89a5", "84c3028b-beb0-3b7d-ac47-5f246d9632a9", "1.0.1"));
    }
}