Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.mpc.ebanking.services.rest.service.impl;
- import java.io.IOException;
- import java.net.InetSocketAddress;
- import java.net.Proxy;
- import java.util.concurrent.TimeUnit;
- import org.apache.commons.codec.binary.Base64;
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
- import com.mpc.ebanking.services.rest.service.interceptor.BasicAuthInterceptor;
- import okhttp3.Authenticator;
- import okhttp3.ConnectionPool;
- import okhttp3.HttpUrl;
- import okhttp3.OkHttpClient;
- import okhttp3.OkHttpClient.Builder;
- import okhttp3.logging.HttpLoggingInterceptor;
- import okhttp3.logging.HttpLoggingInterceptor.Level;
- import okhttp3.Request;
- import okhttp3.Response;
- import okhttp3.Route;
- import retrofit2.Retrofit;
- import retrofit2.converter.jackson.JacksonConverterFactory;
- import sun.net.www.protocol.http.logging.HttpLogFormatter;
- public class RetrofitBuilder {
- protected static final Log log = LogFactory.getLog(RetrofitBuilder.class);
- private String proxyHost;
- private int proxyPort;
- private boolean useProxy, useUsernamePassword;
- private String proxyUsername, proxyPassword;
- private Retrofit retrofit;
- private String baseUrl;
- private String baseUsername;
- private String basePassword;
- public RetrofitBuilder(String proxyHost, int proxyPort, boolean useProxy, boolean useUsernamePassword,
- String proxyUsername, String proxyPassword, String baseUrl,String baseUsername, String basePassword) {
- super();
- this.proxyHost = proxyHost;
- this.proxyPort = proxyPort;
- this.useProxy = useProxy;
- this.useUsernamePassword = useUsernamePassword;
- this.proxyUsername = proxyUsername;
- this.proxyPassword = proxyPassword;
- this.baseUrl = baseUrl;
- this.baseUsername = baseUsername;
- this.basePassword = basePassword;
- }
- public Retrofit getRetrofit() {
- return retrofit;
- }
- public void setRetrofit(Retrofit retrofit) {
- this.retrofit = retrofit;
- }
- public OkHttpClient getClient(){
- Builder builder = new OkHttpClient.Builder().connectionPool(new ConnectionPool(100, 60, TimeUnit.SECONDS))
- .connectTimeout(60, TimeUnit.SECONDS).readTimeout(60, TimeUnit.SECONDS)
- .writeTimeout(60, TimeUnit.SECONDS);
- HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
- logging.setLevel(Level.BASIC);
- builder.addInterceptor(new BasicAuthInterceptor(baseUsername, basePassword));
- builder.addInterceptor(logging);
- if (useProxy){
- builder.proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort)));
- if (useUsernamePassword) builder.proxyAuthenticator(authenticator());
- }
- return builder.build();
- }
- private Authenticator authenticator(){
- Authenticator authenticator = new Authenticator() {
- @Override
- public Request authenticate(Route arg0, Response arg1) throws IOException {
- String password = proxyUsername + ":" + proxyPassword;
- byte[] encodedPassword = Base64.encodeBase64(password.getBytes());
- return arg1.request().newBuilder()
- .header("Proxy-Authorization", new String(encodedPassword))
- .build();
- }
- };
- return authenticator;
- }
- private void init(){
- this.retrofit = new Retrofit.Builder()
- .baseUrl(HttpUrl.parse(baseUrl))
- .addConverterFactory(JacksonConverterFactory.create())
- .client(this.getClient())
- .build();
- }
- public static RetrofitBuilder build(String proxyHost, int proxyPort,
- boolean useProxy, boolean useUsernamePassword,
- String proxyUsername, String proxyPassword, String baseUrl,
- String baseUsername, String basePassword) {
- RetrofitBuilder retrofitBuilder = new RetrofitBuilder(proxyHost,
- proxyPort, useProxy, useUsernamePassword, proxyUsername,
- proxyPassword, baseUrl, baseUsername, basePassword);
- retrofitBuilder.init();
- return retrofitBuilder;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement