com.rastating.droidbeard.net.HttpClientManager.java Source code

Java tutorial

Introduction

Here is the source code for com.rastating.droidbeard.net.HttpClientManager.java

Source

/*
 DroidBeard - a free, open-source Android app for managing SickBeard
 Copyright (C) 2014-2015 Robert Carr
    
 This program 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.
    
 This program 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 this program.  If not, see http://www.gnu.org/licenses/.
*/

package com.rastating.droidbeard.net;

import com.rastating.droidbeard.Application;
import com.rastating.droidbeard.Preferences;

import org.apache.http.auth.AuthScope;
import org.apache.http.auth.Credentials;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.HttpClient;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.impl.client.AbstractHttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
import org.apache.http.params.HttpParams;

public class HttpClientManager {
    private HttpClient mClient;

    public final static HttpClientManager INSTANCE = new HttpClientManager();

    private HttpClientManager() {
        invalidateClient();
    }

    public HttpClient getClient() {
        return mClient;
    }

    private void setupHttpCredentials() {
        try {
            Preferences preferences = new Preferences(Application.getContext());
            Credentials credentials = new UsernamePasswordCredentials(preferences.getHttpUsername(),
                    preferences.getHttpPassword());
            ((AbstractHttpClient) mClient).getCredentialsProvider()
                    .setCredentials(new AuthScope(preferences.getAddress(), preferences.getPort()), credentials);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private DefaultHttpClient createThreadSafeClient() {
        DefaultHttpClient client = new DefaultHttpClient();
        ClientConnectionManager manager = client.getConnectionManager();
        HttpParams params = client.getParams();
        ThreadSafeClientConnManager threadSafeManager = new ThreadSafeClientConnManager(params,
                manager.getSchemeRegistry());
        return new DefaultHttpClient(threadSafeManager, params);
    }

    public void invalidateClient() {
        Preferences preferences = new Preferences(com.rastating.droidbeard.Application.getContext());
        boolean trustAllCertificates = preferences.getTrustAllCertificatesFlag();
        mClient = createThreadSafeClient();
        SchemeRegistry schemeRegistry = mClient.getConnectionManager().getSchemeRegistry();
        schemeRegistry.register(new Scheme("https", new TlsSocketFactory(trustAllCertificates), 443));

        setupHttpCredentials();
    }
}