feature/fetch_userinfo #85
|
@ -1,37 +1,47 @@
|
||||||
package one.nem.kidshift.data.impl;
|
package one.nem.kidshift.data.impl;
|
||||||
|
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
import one.nem.kidshift.data.ParentData;
|
import one.nem.kidshift.data.ParentData;
|
||||||
|
import one.nem.kidshift.data.UserSettings;
|
||||||
import one.nem.kidshift.data.retrofit.KidShiftApiService;
|
import one.nem.kidshift.data.retrofit.KidShiftApiService;
|
||||||
import one.nem.kidshift.data.retrofit.model.parent.ParentInfoResponse;
|
import one.nem.kidshift.data.retrofit.model.parent.ParentInfoResponse;
|
||||||
import one.nem.kidshift.model.ParentModel;
|
import one.nem.kidshift.model.ParentModel;
|
||||||
import retrofit2.Call;
|
import retrofit2.Call;
|
||||||
|
import retrofit2.Response;
|
||||||
|
|
||||||
public class ParentDataImpl implements ParentData {
|
public class ParentDataImpl implements ParentData {
|
||||||
|
|
||||||
private KidShiftApiService kidshiftApiService;
|
private KidShiftApiService kidshiftApiService;
|
||||||
|
|
||||||
|
private UserSettings userSettings;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public ParentDataImpl(KidShiftApiService kidshiftApiService) {
|
public ParentDataImpl(KidShiftApiService kidshiftApiService, UserSettings userSettings) {
|
||||||
this.kidshiftApiService = kidshiftApiService;
|
this.kidshiftApiService = kidshiftApiService;
|
||||||
|
this.userSettings = userSettings;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CompletableFuture<ParentModel> getParent() {
|
public CompletableFuture<ParentModel> getParent() {
|
||||||
return CompletableFuture.supplyAsync(() -> {
|
return CompletableFuture.supplyAsync(() -> {
|
||||||
ParentInfoResponse parentInfoResponse;
|
Response<ParentInfoResponse> parentInfoResponse;
|
||||||
Call<ParentInfoResponse> response = kidshiftApiService.getParentInfo();
|
Call<ParentInfoResponse> response = kidshiftApiService.getParentInfo();
|
||||||
try {
|
try {
|
||||||
parentInfoResponse = response.execute().body();
|
Log.d("ParentDataImpl", "getParent");
|
||||||
|
Log.d("token", userSettings.getAppCommonSetting().getAccessToken());
|
||||||
|
parentInfoResponse = response.execute();
|
||||||
|
ParentInfoResponse responseBody = parentInfoResponse.body();
|
||||||
ParentModel parent = new ParentModel();
|
ParentModel parent = new ParentModel();
|
||||||
assert parentInfoResponse != null;
|
assert parentInfoResponse != null;
|
||||||
parent.setInternalId(parentInfoResponse.getId());
|
parent.setInternalId(responseBody.getId());
|
||||||
parent.setEmail(parentInfoResponse.getEmail());
|
parent.setEmail(responseBody.getEmail());
|
||||||
parent.setDisplayName(parentInfoResponse.getDisplayName());
|
parent.setDisplayName(responseBody.getDisplayName());
|
||||||
// TODO: 他のプロパティも処理する
|
// TODO: 他のプロパティも処理する
|
||||||
return parent;
|
return parent;
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
|
|
@ -30,7 +30,7 @@ public class KidShiftApiServiceModule {
|
||||||
@Provides
|
@Provides
|
||||||
@Singleton
|
@Singleton
|
||||||
public AuthorizationInterceptor provideAuthorizationInterceptor() {
|
public AuthorizationInterceptor provideAuthorizationInterceptor() {
|
||||||
return new AuthorizationInterceptor(userSettings, logger);
|
return new AuthorizationInterceptor(userSettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Gson
|
// Gson
|
||||||
|
@ -43,20 +43,21 @@ public class KidShiftApiServiceModule {
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
@Singleton
|
@Singleton
|
||||||
public OkHttpClient provideOkHttpClient() {
|
public OkHttpClient provideOkHttpClient(UserSettings userSettings) {
|
||||||
return new OkHttpClient.Builder()
|
return new OkHttpClient.Builder()
|
||||||
.addInterceptor(provideAuthorizationInterceptor())
|
// .addInterceptor(provideAuthorizationInterceptor())
|
||||||
|
.addInterceptor(new AuthorizationInterceptor(userSettings))
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
@Singleton
|
@Singleton
|
||||||
public KidShiftApiService provideKidShiftApiService() {
|
public KidShiftApiService provideKidShiftApiService(OkHttpClient okHttpClient) {
|
||||||
return new Retrofit.Builder()
|
return new Retrofit.Builder()
|
||||||
// .baseUrl(userSettings.getApiSetting().getApiBaseUrl())
|
// .baseUrl(userSettings.getApiSetting().getApiBaseUrl())
|
||||||
.baseUrl("https://kidshift-beta.nem.one/")
|
.baseUrl("https://kidshift-beta.nem.one/")
|
||||||
.addConverterFactory(GsonConverterFactory.create(provideGson()))
|
.addConverterFactory(GsonConverterFactory.create(provideGson()))
|
||||||
.client(provideOkHttpClient())
|
.client(okHttpClient)
|
||||||
.build()
|
.build()
|
||||||
.create(KidShiftApiService.class);
|
.create(KidShiftApiService.class);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
package one.nem.kidshift.data.retrofit.interceptor;
|
package one.nem.kidshift.data.retrofit.interceptor;
|
||||||
|
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
@ -18,29 +20,52 @@ public class AuthorizationInterceptor implements Interceptor {
|
||||||
public static final String HEADER_PLACEHOLDER = HEADER_NAME + ": " + HEADER_VALUE;
|
public static final String HEADER_PLACEHOLDER = HEADER_NAME + ": " + HEADER_VALUE;
|
||||||
|
|
||||||
private final UserSettings userSettings;
|
private final UserSettings userSettings;
|
||||||
private final KSLogger logger;
|
|
||||||
|
|
||||||
@Inject
|
public AuthorizationInterceptor(UserSettings userSettings) {
|
||||||
public AuthorizationInterceptor(UserSettings userSettings, KSLogger logger) {
|
|
||||||
this.userSettings = userSettings;
|
this.userSettings = userSettings;
|
||||||
this.logger = logger;
|
|
||||||
logger.setTag("AuthorizationInterceptor");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
public Response intercept(@NonNull Chain chain) throws IOException {
|
public Response intercept(@NonNull Chain chain) throws IOException {
|
||||||
|
Log.d("AuthorizationInterceptor", "intercept");
|
||||||
try {
|
try {
|
||||||
if (chain.request().header(HEADER_NAME) == null) {
|
if (chain.request().header(HEADER_NAME) == null) {
|
||||||
logger.debug("No Authorization header found. Skipping.");
|
Log.d("AuthorizationInterceptor", "Authorization header is null");
|
||||||
return chain.proceed(chain.request());
|
return chain.proceed(chain.request());
|
||||||
}
|
}
|
||||||
if (!HEADER_VALUE.equals(chain.request().header(HEADER_NAME))) {
|
if (!HEADER_VALUE.equals(chain.request().header(HEADER_NAME))) {
|
||||||
logger.debug("Authorization header found, but value is not expected. Skipping.");
|
Log.d("AuthorizationInterceptor", "Authorization header is not valid");
|
||||||
|
return chain.proceed(chain.request());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Log.d("AuthorizationInterceptor", "Authorization header is valid");
|
||||||
|
// Log.d("AuthorizationInterceptor", "Authorization header: " + chain.request().header(HEADER_NAME));
|
||||||
|
|
||||||
|
|
||||||
|
Log.d("AuthorizationInterceptor", "Fetching token from UserSettings");
|
||||||
|
|
||||||
|
if (userSettings == null) {
|
||||||
|
Log.e("AuthorizationInterceptor", "userSettings is null");
|
||||||
|
return chain.proceed(chain.request());
|
||||||
|
} else {
|
||||||
|
Log.d("AuthorizationInterceptor", "userSettings is not null");
|
||||||
|
}
|
||||||
|
|
||||||
|
UserSettings.AppCommonSetting appCommonSetting = userSettings.getAppCommonSetting();
|
||||||
|
if (appCommonSetting == null) {
|
||||||
|
Log.e("AuthorizationInterceptor", "AppCommonSetting is null");
|
||||||
|
return chain.proceed(chain.request());
|
||||||
|
} else {
|
||||||
|
Log.d("AuthorizationInterceptor", "AppCommonSetting is not null");
|
||||||
|
}
|
||||||
|
|
||||||
|
String token = appCommonSetting.getAccessToken();
|
||||||
|
if (token == null) {
|
||||||
|
Log.e("AuthorizationInterceptor", "Token is null");
|
||||||
return chain.proceed(chain.request());
|
return chain.proceed(chain.request());
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.debug("Authorization header found. Adding value.");
|
|
||||||
return chain.proceed(chain.request().newBuilder()
|
return chain.proceed(chain.request().newBuilder()
|
||||||
.header(HEADER_NAME, userSettings.getAppCommonSetting().getAccessToken())
|
.header(HEADER_NAME, userSettings.getAppCommonSetting().getAccessToken())
|
||||||
.build());
|
.build());
|
||||||
|
|
Loading…
Reference in New Issue
Block a user