////*****************************************************************************
//// This file is part of CheckIn4Me. Copyright � 2010 David Ivins
////
//// CheckIn4Me is free software: you can redistribute it and/or modify
//// it under the terms of the GNU General Public License as published by
//// the Free Software Foundation, either version 3 of the License, or
//// (at your option) any later version.
////
//// CheckIn4Me is distributed in the hope that it will be useful,
//// but WITHOUT ANY WARRANTY; without even the implied warranty of
//// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//// GNU General Public License for more details.
////
//// You should have received a copy of the GNU General Public License
//// along with CheckIn4Me. If not, see <http://www.gnu.org/licenses/>.
////*****************************************************************************
//package com.davidivins.checkin4me.yelp;
//
//import java.io.BufferedReader;
//import java.io.IOException;
//import java.io.InputStreamReader;
//
//import javax.net.ssl.SSLException;
//
//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.conn.ssl.AbstractVerifier;
//import org.apache.http.conn.ssl.SSLSocketFactory;
//import org.apache.http.conn.ssl.X509HostnameVerifier;
//import org.apache.http.impl.client.DefaultHttpClient;
//
//import com.davidivins.checkin4me.oauth.OAuthResponse;
//import com.davidivins.checkin4me.util.Request;
//import com.davidivins.checkin4me.util.Response;
//
//import android.util.Log;
//
///**
// * YelpOAuthRequest
// *
// * @author david ivins
// */
//public class YelpOAuthRequest extends Request
//{
// private static final String TAG = YelpOAuthRequest.class.getSimpleName();
// private static final String RESPONSE_ENCODING = "UTF-8";
//
// /**
// * YelpOAuthRequest
// *
// * @param method
// * @param host
// * @param endpoint
// */
// public YelpOAuthRequest(String method, String host, String endpoint)
// {
// super(method, host, endpoint);
// }
//
// /**
// * execute
// *
// * @return Response from executing the request
// */
// @Override
// public Response execute()
// {
// BufferedReader page = null;
// OAuthResponse response = new OAuthResponse();
//
// Log.i(TAG, "executing Yelp OAuth request...");
//
// // make request
// String url_string = generateURL();
// Log.i(TAG, "request url = " + url_string);
//
// // make http request
// try
// {
// // make background http request for temporary token
// HttpClient httpclient = getTolerantClient();//new DefaultHttpClient();
// HttpResponse http_response;
//
// if (method.equals("GET"))
// {
// HttpGet httpget = new HttpGet(url_string);
// http_response = httpclient.execute(httpget);
// }
// else
// {
// HttpPost httppost = new HttpPost(url_string);
// http_response = httpclient.execute(httppost);
// }
//
// // get content of request
// page = new BufferedReader(new InputStreamReader(
// http_response.getEntity().getContent(), RESPONSE_ENCODING));
//
// // read response into a string
// String line;
// while ((line = page.readLine()) != null)
// {
// Log.i(TAG, "line = " + line);
// response.appendResponseString(line);
// }
//
// response.setSuccessStatus(true);
// }
// catch (IOException e)
// {
// response.set(false, e.getMessage());
// Log.e(TAG, "EXCEPTION: " + e.getMessage());
// }
//
// Log.i(TAG, "response.getSuccessStatus = " + response.getSuccessStatus());
// Log.i(TAG, "response.getResponseString = " + response.getResponseString());
// return response;
// }
//
// /**
// * generateURL
// *
// * @return URL for the request
// */
// private String generateURL()
// {
// return host + endpoint + "?" + getURIQueryParametersAsString();
// }
//
// /**
// * getTolerantClient
// *
// * Stolen from stackoverflow.com
// * http://stackoverflow.com/questions/3135679/android-httpclient-hostname-in-certificate-didnt-match-example-com-exa
// *
// * @return DefaultttpClient
// */
// public DefaultHttpClient getTolerantClient()
// {
// DefaultHttpClient client = new DefaultHttpClient();
//
// SSLSocketFactory sslSocketFactory = (SSLSocketFactory)client
// .getConnectionManager().getSchemeRegistry().getScheme("https")
// .getSocketFactory();
//
// final X509HostnameVerifier delegate = sslSocketFactory.getHostnameVerifier();
//
// if(!(delegate instanceof TolerantVerifier))
// sslSocketFactory.setHostnameVerifier(new TolerantVerifier(delegate));
//
// return client;
// }
//
// /**
// * TolerantVerifier
// *
// * Stolen from stackoverflow.com
// * http://stackoverflow.com/questions/3135679/android-httpclient-hostname-in-certificate-didnt-match-example-com-exa
// *
// * @author noah@stackoverflow
// */
// class TolerantVerifier extends AbstractVerifier
// {
// private final X509HostnameVerifier delegate;
//
// /**
// * TolerantVerfier
// *
// * @param delegate
// */
// public TolerantVerifier(final X509HostnameVerifier delegate)
// {
// this.delegate = delegate;
// }
//
// /**
// * verify
// *
// * @param host
// * @param cns
// * @param subjectAlts
// */
// public final void verify(String host, String[] cns, String[] subjectAlts) //throws SSLException
// {
// boolean ok = false;
//
// try
// {
// delegate.verify(host, cns, subjectAlts);
// }
// catch (SSLException e)
// {
// for (String cn : cns)
// {
// if (cn.startsWith("*."))
// {
// try
// {
// delegate.verify(host, new String[] { cn.substring(2) }, subjectAlts);
// ok = true;
// }
// catch (Exception e1)
// {
// Log.e(TAG, "We are here and I'm not sure why...");
// }
// }
// }
//
// if(!ok)
// Log.i(TAG, "Failed verification"); //throw e;
// }
// }
// }
//}