· 7 years ago · Aug 29, 2018, 10:12 AM
1public class RestAdapter extends Application {
2 private static final String TAG = "RestAdapter";
3 private Retrofit retrofit;
4 private EndPoint endPoint;
5 private CustomAuthanticator customAuthanticator;
6 public static final String SESSION_PREFS = "session_prefs";
7 private String accessToken;
8
9 private String[] urls = {
10 "users/auth/facebook/callback",
11 "users/auth/twitter_access_token/callback",
12 "api/v1/members/register",
13 "api/v1/app/settings",
14 "oauth/token",
15 "users/password",
16 "api/v1/term"
17 };
18
19 public RestAdapter(Context context){
20 customAuthanticator = new CustomAuthanticator(context);
21 accessToken = context.getSharedPreferences(SESSION_PREFS, Context.MODE_PRIVATE).getString("access_token", "");
22
23 HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
24 logging.setLevel(HttpLoggingInterceptor.Level.BODY);
25 OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
26 httpClient.addInterceptor(logging);
27 httpClient.addInterceptor(new Interceptor() {
28 @Override
29 public Response intercept(Chain chain) throws IOException {
30 Request original = chain.request();
31 HttpUrl originalHttpUrl = original.url();
32
33 HttpUrl url = originalHttpUrl.newBuilder().build();
34
35 String stringEndpoint = originalHttpUrl.toString();
36// stringEndpoint = stringEndpoint.substring(0, stringEndpoint.lastIndexOf("?"));
37
38 boolean isUrlNonAccessToken = false;
39
40 for (int i=0; i<urls.length; i++){
41 if(stringEndpoint.contains(urls[i])){
42 isUrlNonAccessToken = true;
43 }
44 }
45
46 if(!isUrlNonAccessToken){
47 url = originalHttpUrl.newBuilder()
48 .addQueryParameter("access_token", accessToken)
49 .build();
50 } else {
51 }
52//
53// if(!Arrays.asList(getUrlNonAccessToken()).contains(stringEndpoint)){
54// Log.d(TAG, "Adding access_token ...");
55// Log.d(TAG, "stringEndpoint : " + stringEndpoint);
56// url = originalHttpUrl.newBuilder()
57// .addQueryParameter("access_token", accessToken)
58// .build();
59// } else {
60// Log.d(TAG, "Not adding access_token ...");
61// Log.d(TAG, "originalHttpUrl : " + originalHttpUrl);
62// }
63
64// if (!originalHttpUrl.toString().contains("access_token")){
65// url = originalHttpUrl.newBuilder()
66// .addQueryParameter("access_token", accessToken)
67// .build();
68// } else {
69// //do nothing
70// }
71
72 // Request customization: add request headers
73 Request.Builder requestBuilder = original.newBuilder()
74 .url(url);
75
76 Request request = requestBuilder.build();
77 return chain.proceed(request);
78 }
79 });
80 httpClient.authenticator(customAuthanticator);
81
82
83 retrofit = new Retrofit.Builder()
84 .baseUrl(Credentials.getBaseUrlApi())
85 .client(httpClient.build())
86 .addConverterFactory(GsonConverterFactory.create())
87 .build();
88
89 endPoint = retrofit.create(EndPoint.class);
90 }
91 public EndPoint getEndPoint(){
92 return endPoint;
93 }
94
95}