Skip to content

Commit 7fb01b1

Browse files
Merge pull request #7 from R4SH33D/master
Added more methods and constructors to the RetrofitClient class
2 parents f17f239 + 52bff3b commit 7fb01b1

1 file changed

Lines changed: 66 additions & 19 deletions

File tree

Lines changed: 66 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.cottacush.android.libraries.utils;
22

33
import java.io.IOException;
4+
import java.util.HashMap;
45
import java.util.concurrent.TimeUnit;
56

67
import okhttp3.HttpUrl;
@@ -14,44 +15,90 @@
1415
/**
1516
* @author Adegoke Obasa <goke@cottacush.com>
1617
*/
17-
1818
public class RetrofitClient {
19+
private Retrofit.Builder builder;
20+
21+
22+
public RetrofitClient() {
23+
builder = new Retrofit.Builder()
24+
.addConverterFactory(GsonConverterFactory.create());
25+
}
26+
1927

2028
public Retrofit build(String baseUrl) {
21-
//TODO Parametrize the base URL
22-
return new Retrofit.Builder()
29+
return builder
2330
.baseUrl(baseUrl)
24-
.client(getHttpClient())
25-
.addConverterFactory(GsonConverterFactory.create())
31+
.client(getHttpClient().build())
2632
.build();
2733
}
2834

29-
private OkHttpClient getHttpClient() {
30-
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
31-
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
3235

36+
public Retrofit build(String baseUrl, HttpLoggingInterceptor.Level level) {
37+
return builder
38+
.baseUrl(baseUrl)
39+
.client(getHttpClient(level).build())
40+
.build();
41+
}
42+
43+
public Retrofit build(String baseUrl, HashMap<String, String> queryParams) {
44+
return builder
45+
.baseUrl(baseUrl)
46+
.client(getHttpClient(queryParams).build())
47+
.build();
48+
}
49+
50+
public Retrofit build(String baseUrl, OkHttpClient.Builder clientBuilder) {
51+
return builder
52+
.baseUrl(baseUrl)
53+
.client(clientBuilder.build())
54+
.build();
55+
}
56+
57+
public OkHttpClient.Builder getHttpClient() {
3358
return new OkHttpClient.Builder()
59+
.connectTimeout(1, TimeUnit.MINUTES)
60+
.readTimeout(2, TimeUnit.MINUTES)
61+
.writeTimeout(2, TimeUnit.MINUTES);
62+
}
63+
64+
public OkHttpClient.Builder getHttpClient(HttpLoggingInterceptor.Level level) {
65+
return getHttpClient()
66+
.addInterceptor(getLoggingInterceptor(level));
67+
}
68+
69+
70+
public HttpLoggingInterceptor getLoggingInterceptor(HttpLoggingInterceptor.Level level) {
71+
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
72+
interceptor.setLevel(level);
73+
return interceptor;
74+
}
75+
76+
public Retrofit.Builder getBasicRetrofitBuilder() {
77+
return builder;
78+
}
79+
80+
public OkHttpClient.Builder getBasicHttpClientBuilder() {
81+
return new OkHttpClient().newBuilder();
82+
}
83+
84+
public OkHttpClient.Builder getHttpClient(final HashMap<String, String> params) {
85+
return getHttpClient()
3486
.addInterceptor(new Interceptor() {
3587
@Override
3688
public okhttp3.Response intercept(Chain chain) throws IOException {
3789
Request original = chain.request();
3890
HttpUrl originalHttpUrl = original.url();
39-
40-
HttpUrl url = originalHttpUrl.newBuilder()
41-
.addQueryParameter("access_token", "")
42-
.build();
43-
91+
HttpUrl.Builder urlBuilder = originalHttpUrl.newBuilder();
92+
for (String key : params.keySet()) {
93+
urlBuilder.addQueryParameter(key, params.get(key));
94+
}
95+
HttpUrl url = urlBuilder.build();
4496
// Request customization: add request headers
4597
Request.Builder requestBuilder = original.newBuilder()
4698
.url(url);
47-
4899
Request request = requestBuilder.build();
49100
return chain.proceed(request);
50101
}
51-
})
52-
.connectTimeout(1, TimeUnit.MINUTES)
53-
.readTimeout(2, TimeUnit.MINUTES)
54-
.writeTimeout(2, TimeUnit.MINUTES)
55-
.build();
102+
});
56103
}
57104
}

0 commit comments

Comments
 (0)