feature/fetch_userinfo #85

Merged
Fujimatsu merged 35 commits from feature/fetch_userinfo into main 2024-06-24 01:36:45 +00:00
3 changed files with 55 additions and 19 deletions
Showing only changes of commit 45534f4ce3 - Show all commits

View File

@ -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) {

View File

@ -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);
} }

View File

@ -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());