package com.blablahlabs.excelsior.net;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLConnection;
import org.apache.commons.io.IOUtils;
import org.json.JSONException;
import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.preference.PreferenceManager;
import android.util.Log;
import com.blablahlabs.excelsior.beans.ExcelsiorBean;
import com.blablahlabs.excelsior.beans.ExcelsiorFotoGaleriaBean;
import com.blablahlabs.excelsior.beans.ExcelsiorGson;
import com.blablahlabs.excelsior.beans.NotaBean;
import com.blablahlabs.excelsior.recursos.Recursos;
import com.google.gson.Gson;
public class Net {
private Context context;
private SharedPreferences preferences;
private Bitmap bmp;
private InputStream input;
public Net(Context context){
this.context = context;
this.preferences = PreferenceManager.getDefaultSharedPreferences(context);
}
public ExcelsiorBean getDataBean() throws IllegalStateException, IOException, URISyntaxException, JSONException{
String ansHttpGet = null;
Gson gson = new Gson();
ExcelsiorBean excelsiorBean = null;
if (isOnline() )
ansHttpGet = inputStreamToString (doHttpGet(Recursos.URL_GENERAL) );
else{
ansHttpGet = loadData();
}
if (ansHttpGet != null){
excelsiorBean = new ExcelsiorBean(gson.fromJson(ansHttpGet, ExcelsiorGson.class));
saveData(ansHttpGet);
}
return excelsiorBean;
}
public NotaBean getNotaBean(int idNota)throws IllegalStateException, IOException, URISyntaxException, JSONException{
String ansHttpGet = null;
Gson gson = new Gson();
NotaBean notaBean = null;
if (isOnline() )
ansHttpGet = inputStreamToString (doHttpGet(Recursos.URL_NOTA_DETALLE_INTRO + idNota + Recursos.URL_NOTA_DETALLE_OUTTRO) ) ;
if (ansHttpGet != null){
notaBean = gson.fromJson(ansHttpGet, NotaBean.class);
}
return notaBean;
}
public ExcelsiorFotoGaleriaBean getFotoGaleriaBean(int idFotoGaleria) throws IllegalStateException, IOException, URISyntaxException, JSONException{
String ansHttpGet = null;
Gson gson = new Gson();
ExcelsiorFotoGaleriaBean bean = null;
if (isOnline() )
ansHttpGet = inputStreamToString(doHttpGet(Recursos.URL_GALERIA_FOTOS + idFotoGaleria + Recursos.URL_NOTA_DETALLE_OUTTRO));
if (ansHttpGet != null){
bean = gson.fromJson(ansHttpGet, ExcelsiorFotoGaleriaBean.class);
}
return bean;
}
public Bitmap getImagenDetalle (int idNota)throws IllegalStateException, IOException, URISyntaxException{
Bitmap image = null;
String url;
InputStream input;
if (isOnline() ){
url = Recursos.URL_IMAGEN_NOTA_INTRO + idNota + Recursos.URL_IMAGEN_NOTA_OUTTRO;
input = doHttpGet(url);
image = inputStreamToBitMap (input ) ;
}
return image;
}
public Bitmap getImagenListaPrincipal (int idNota)throws IllegalStateException, IOException, URISyntaxException{
Bitmap image = null;
if (idNota != 0){
if (isOnline() )
image = inputStreamToBitMap (doHttpGet(Recursos.URL_IMAGEN_NOTA_LISTA_INTRO + idNota + Recursos.URL_IMAGEN_NOTA_OUTTRO) ) ;
}
return image;
}
public Bitmap getImagenVideoLista (int idArchivo)throws IllegalStateException, IOException, URISyntaxException{
Bitmap image = null;
if(idArchivo != 0){
if (isOnline() )
image = inputStreamToBitMap (doHttpGet(Recursos.URL_FOTO + idArchivo + Recursos.URL_IMAGEN_NOTA_OUTTRO) ) ;
}
return image;
}
public Bitmap getImagenGaleriaLista (int idArchivo)throws IllegalStateException, IOException, URISyntaxException{
Bitmap image = null;
if(idArchivo != 0){
if (isOnline() )
image = inputStreamToBitMap (doHttpGet(Recursos.URL_FOTO + idArchivo + Recursos.URL_IMAGEN_NOTA_OUTTRO) ) ;
}
return image;
}
public Bitmap getImagen(String url)throws IllegalStateException, IOException, URISyntaxException{
Bitmap image = null;
if(url != null){
if (isOnline() )
image = inputStreamToBitMap (doHttpGet(url)) ;
}
return image;
}
private InputStream doHttpGet(String urlString) throws IOException{
InputStream inputStream = null;
int response = -1;
URL url = new URL(urlString);
URLConnection conn = url.openConnection();
if (!(conn instanceof HttpURLConnection))
throw new IOException("Not an HTTP connection");
try{
HttpURLConnection httpConn = (HttpURLConnection) conn;
httpConn.setInstanceFollowRedirects(true);
httpConn.setRequestMethod("GET");
httpConn.setUseCaches(true);
Object content = httpConn.getContent();
if( content instanceof Bitmap ){
Bitmap bitmap = (Bitmap)content;
}
response = httpConn.getResponseCode();
if (response == HttpURLConnection.HTTP_OK) {
inputStream = httpConn.getInputStream();
}
}
catch (Exception ex)
{
throw new IOException("Error connecting" + ex);
}
return inputStream;
}
public String inputStreamToString (InputStream in) throws IOException {
StringBuilder out = new StringBuilder();
byte[] b = new byte[4096];
for (int n; (n = in.read(b)) != -1;) {
out.append(new String(b, 0, n));
}
return out.toString();
}
public Bitmap inputStreamToBitMap (InputStream in) throws IOException {
Bitmap bitmap = null;
bitmap=BitmapFactory.decodeStream( in );
return bitmap;
}
private boolean isOnline() {
ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
boolean ans = false;
final NetworkInfo network_info = cm.getActiveNetworkInfo();
if ( network_info != null && network_info.isConnected() ) {
Log.e("Testing Internet Connection", "We have internet");
ans = true;
}
else {
Log.e("Testing Internet Connection", "We dont have internet");
ans = false;
}
return ans;
}
private void saveData (String stringJson){
SharedPreferences.Editor editor = preferences.edit();
editor.putString("stringJson",stringJson);
editor.commit();
}
private String loadData(){
return preferences.getString("stringJson", null);
}
}