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;
import android.util.Log;
import java.io.IOException;
import java.util.concurrent.CompletableFuture;
import javax.inject.Inject;
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.model.parent.ParentInfoResponse;
import one.nem.kidshift.model.ParentModel;
import retrofit2.Call;
import retrofit2.Response;
public class ParentDataImpl implements ParentData {
private KidShiftApiService kidshiftApiService;
private UserSettings userSettings;
@Inject
public ParentDataImpl(KidShiftApiService kidshiftApiService) {
public ParentDataImpl(KidShiftApiService kidshiftApiService, UserSettings userSettings) {
this.kidshiftApiService = kidshiftApiService;
this.userSettings = userSettings;
}
@Override
public CompletableFuture<ParentModel> getParent() {
return CompletableFuture.supplyAsync(() -> {
ParentInfoResponse parentInfoResponse;
Response<ParentInfoResponse> parentInfoResponse;
Call<ParentInfoResponse> response = kidshiftApiService.getParentInfo();
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();
assert parentInfoResponse != null;
parent.setInternalId(parentInfoResponse.getId());
parent.setEmail(parentInfoResponse.getEmail());
parent.setDisplayName(parentInfoResponse.getDisplayName());
parent.setInternalId(responseBody.getId());
parent.setEmail(responseBody.getEmail());
parent.setDisplayName(responseBody.getDisplayName());
// TODO: 他のプロパティも処理する
return parent;
} catch (IOException e) {

View File

@ -30,7 +30,7 @@ public class KidShiftApiServiceModule {
@Provides
@Singleton
public AuthorizationInterceptor provideAuthorizationInterceptor() {
return new AuthorizationInterceptor(userSettings, logger);
return new AuthorizationInterceptor(userSettings);
}
// Gson
@ -43,20 +43,21 @@ public class KidShiftApiServiceModule {
@Provides
@Singleton
public OkHttpClient provideOkHttpClient() {
public OkHttpClient provideOkHttpClient(UserSettings userSettings) {
return new OkHttpClient.Builder()
.addInterceptor(provideAuthorizationInterceptor())
// .addInterceptor(provideAuthorizationInterceptor())
.addInterceptor(new AuthorizationInterceptor(userSettings))
.build();
}
@Provides
@Singleton
public KidShiftApiService provideKidShiftApiService() {
public KidShiftApiService provideKidShiftApiService(OkHttpClient okHttpClient) {
return new Retrofit.Builder()
// .baseUrl(userSettings.getApiSetting().getApiBaseUrl())
.baseUrl("https://kidshift-beta.nem.one/")
.addConverterFactory(GsonConverterFactory.create(provideGson()))
.client(provideOkHttpClient())
.client(okHttpClient)
.build()
.create(KidShiftApiService.class);
}

View File

@ -1,5 +1,7 @@
package one.nem.kidshift.data.retrofit.interceptor;
import android.util.Log;
import androidx.annotation.NonNull;
import java.io.IOException;
@ -18,29 +20,52 @@ public class AuthorizationInterceptor implements Interceptor {
public static final String HEADER_PLACEHOLDER = HEADER_NAME + ": " + HEADER_VALUE;
private final UserSettings userSettings;
private final KSLogger logger;
@Inject
public AuthorizationInterceptor(UserSettings userSettings, KSLogger logger) {
public AuthorizationInterceptor(UserSettings userSettings) {
this.userSettings = userSettings;
this.logger = logger;
logger.setTag("AuthorizationInterceptor");
}
@NonNull
@Override
public Response intercept(@NonNull Chain chain) throws IOException {
Log.d("AuthorizationInterceptor", "intercept");
try {
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());
}
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());
}
logger.debug("Authorization header found. Adding value.");
return chain.proceed(chain.request().newBuilder()
.header(HEADER_NAME, userSettings.getAppCommonSetting().getAccessToken())
.build());