/**
* PHR_AndroidNative
*
* Copyright (C) 1999-2014 Photon Infotech Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.photon.phresco.nativeapp.eshop.net;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.cert.X509Certificate;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.net.NetworkInfo;
import android.net.ConnectivityManager;
import android.text.StaticLayout;
import android.util.Log;
import com.photon.phresco.nativeapp.R;
import com.photon.phresco.nativeapp.eshop.activity.MainActivity;
import com.photon.phresco.nativeapp.eshop.activity.PhrescoActivity;
import com.photon.phresco.nativeapp.eshop.logger.PhrescoLogger;
public class NetworkManager {
private static final String TAG = "NetworkManager ********";
private static final String HTTP = "http";
private static final String HTTPS = "https";
public static boolean checkURLStatus(final String url) {
int n = 4;
int m =5;
boolean statusFlag = false;
String s = url;
String httpUrl= s.substring(0,n);
String httpsUrl= s.substring(0,m);
if(HTTP.equalsIgnoreCase(httpUrl)&& !HTTPS.equalsIgnoreCase(httpsUrl))
{
statusFlag = checkHttpURLStatus(url);
}else{
statusFlag = checkHttpsURLStatus(url);
}
return statusFlag;
}
public static boolean checkHttpURLStatus(final String url) {
boolean httpStatusFlag = false;
HttpClient httpclient = new DefaultHttpClient();
// Prepare a request object
HttpGet httpget = new HttpGet(url);
// Execute the request
HttpResponse response;
try {
response = httpclient.execute(httpget);
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode == HttpURLConnection.HTTP_OK) {
httpStatusFlag = true;
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return httpStatusFlag;
}
public static boolean checkHttpsURLStatus(final String url) {
boolean https_StatusFlag = false;
System.out.println("Entered in checkHttpsURLStatus >>>>>>>>>>>>>>>");
URL httpsurl;
try {
// Create a context that doesn't check certificates.
SSLContext ssl_ctx = SSLContext.getInstance("TLS");
TrustManager[ ] trust_mgr = get_trust_mgr();
ssl_ctx.init(null, // key manager
trust_mgr, // trust manager
new SecureRandom()); // random number generator
HttpsURLConnection.setDefaultSSLSocketFactory(ssl_ctx.getSocketFactory());
System.out.println("Url ========="+url);
httpsurl = new URL(url);
HttpsURLConnection con = (HttpsURLConnection)httpsurl.openConnection();
con.setHostnameVerifier(DO_NOT_VERIFY);
int statusCode = con.getResponseCode();
System.out.println("statusCode ========="+statusCode);
if (statusCode==HttpURLConnection.HTTP_OK) {
https_StatusFlag = true;
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}catch (KeyManagementException e) {
e.printStackTrace();
}
return https_StatusFlag;
}
final static HostnameVerifier DO_NOT_VERIFY = new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
};
private static TrustManager[ ] get_trust_mgr() {
TrustManager[ ] certs = new TrustManager[ ] {
new X509TrustManager() {
public X509Certificate[ ] getAcceptedIssuers() { return null; }
public void checkClientTrusted(X509Certificate[ ] certs, String t) { }
public void checkServerTrusted(X509Certificate[ ] certs, String t) { }
}
};
return certs;
}
public static boolean checkNetworkConnectivity(final Activity activity) {
ConnectivityManager cm = (ConnectivityManager) activity
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnectedOrConnecting()) {
return true;
} else if (netInfo != null
&& (netInfo.getState() == NetworkInfo.State.DISCONNECTED
|| netInfo.getState() == NetworkInfo.State.DISCONNECTING
|| netInfo.getState() == NetworkInfo.State.SUSPENDED || netInfo
.getState() == NetworkInfo.State.UNKNOWN)) {
return false;
} else {
return false;
}
}
public static void showNetworkConectivityAlert(final MainActivity activity) {
activity.showErrorDialog(activity.getString(R.string.network_error));
}
public static void showServiceAlert(final MainActivity activity) {
activity.showErrorDialog(activity.getString(R.string.service_error));
}
}