package com.ramos.munoz.tesis;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.params.ConnManagerParams;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.json.JSONException;
import org.json.JSONObject;

import android.util.Log;

public class ConexionServidor {

    public static final String URL_SERVIDOR = "http://websize.cl/android/";

    // URLS Relacionadas al usuario
    public static final String URL_AUTENTICAR_USUARIO = URL_SERVIDOR + "android/usuario/autenticar";
    public static final String URL_REGISTRO_USUARIO = URL_SERVIDOR + "android/usuario/registrar";
    public static final String URL_VER_HISTORIAL = URL_SERVIDOR + "android/usuario/historial";
    public static final String URL_DETALLE_HISTORIAL = URL_SERVIDOR + "android/cliente/detalle-servicios";
    public static final String URL_COMPROBAR_USUARIO = URL_SERVIDOR + "android/usuario/apodo";
    
    public static final String URL_CARGAR_VEHICULOS = URL_SERVIDOR + "android/usuario/vehiculos";
    public static final String URL_MODIFICAR_DATOS = URL_SERVIDOR + "android/usuario/actualizar";
    public static final String URL_COMPROBAR_NOTIFICACION = URL_SERVIDOR + "android/usuario/notificacion";

    // URLS Relacionadas a los estacionamientos
    public static final String URL_BUSCAR_ESTACIONAMIENTO = URL_SERVIDOR + "android/estacionamiento/obtener";
    public static final String URL_BUSCAR_ESTACIONAMIENTOS_CERCANOS = URL_SERVIDOR + "android/estacionamiento/cercanos";
    public static final String URL_BUSCAR_PRECIOS = URL_SERVIDOR + "android/estacionamiento/precios";
    public static final String URL_BUSCAR_SERVICIOS_ADICIONALES = URL_SERVIDOR + "android/estacionamiento/serviciosadicionales";
    public static final String URL_BUSCAR_COMENTARIOS = URL_SERVIDOR + "android/estacionamiento/comentarios";
    public static final String URL_CALIFICAR_ESTACIONAMIENTO = URL_SERVIDOR + "android/estacionamiento/calificar";
    public static final String URL_BUSCAR_ESTACIONAMIENTO_POR_FILTRO = URL_SERVIDOR + "android/estacionamiento/buscar";

    // URLS Relacionadas a los vehiculos
    public static final String URL_CARGAR_CARROCERIAS = URL_SERVIDOR + "android/vehiculo/carrocerias";
    public static final String URL_REGISTRAR_VEHICULO = URL_SERVIDOR + "android/vehiculo/registrar";
    public static final String URL_ELIMINAR_VEHICULO = URL_SERVIDOR + "android/vehiculo/eliminar";
    public static final String URL_BUSCAR_VEHICULO_POR_PATENTE = URL_SERVIDOR + "android/vehiculo/obtener";

    public static final int TIMEOUT = 50 * 1000;
    private HttpClient clienteHttp;

    public JSONObject ejecutarHttpPost(ArrayList<NameValuePair> parametrosPost, String url) throws IOException, JSONException {
	BufferedReader lector = null;
	HttpClient cliente = getHttpClient();
	HttpPost postHttp = new HttpPost(url);
	Log.d("CONEXION CON SERVIDOR", "Conectado a: " + url + "\n" + "PARAMETROS: " + parametrosPost.toString());
	UrlEncodedFormEntity parametrosEncriptados = new UrlEncodedFormEntity(parametrosPost);
	postHttp.setEntity(parametrosEncriptados);

	HttpResponse respuestaHttp = cliente.execute(postHttp);
	lector = new BufferedReader(new InputStreamReader(respuestaHttp.getEntity().getContent()));
	StringBuilder respuesta = new StringBuilder();
	String separador = System.getProperty("line.separator");
	String fila;

	while ((fila = lector.readLine()) != null) {
	    respuesta.append(fila + separador);
	}
	lector.close();
	JSONObject jsonObj = new JSONObject(respuesta.toString());

	return jsonObj;
    }

    private HttpClient getHttpClient() {
	
	if (clienteHttp == null) {
	    clienteHttp = new DefaultHttpClient();
	    final HttpParams parametros = clienteHttp.getParams();
	    HttpConnectionParams.setSoTimeout(parametros, TIMEOUT);
	    HttpConnectionParams.setConnectionTimeout(parametros, TIMEOUT);
	    ConnManagerParams.setTimeout(parametros, TIMEOUT);
	}
	return clienteHttp;
    }

}
