diff --git a/app/src/main/java/keijumt/devandroid/api/PostalCodeApi.kt b/app/src/main/java/keijumt/devandroid/api/PostalCodeApi.kt new file mode 100644 index 0000000..1a2a141 --- /dev/null +++ b/app/src/main/java/keijumt/devandroid/api/PostalCodeApi.kt @@ -0,0 +1,12 @@ +package keijumt.devandroid.api + +import io.reactivex.Single +import keijumt.devandroid.api.response.PostalCode +import retrofit2.http.GET +import retrofit2.http.Query + +interface PostalCodeApi { + + @GET("search") + fun getPostalCode(@Query("zipcode") zipcode: Int): Single +} \ No newline at end of file diff --git a/app/src/main/java/keijumt/devandroid/api/response/PostalCode.kt b/app/src/main/java/keijumt/devandroid/api/response/PostalCode.kt new file mode 100644 index 0000000..285b12f --- /dev/null +++ b/app/src/main/java/keijumt/devandroid/api/response/PostalCode.kt @@ -0,0 +1,7 @@ +package keijumt.devandroid.api.response + +data class PostalCode( + val status: Int, + val message: String, + val results: List? +) \ No newline at end of file diff --git a/app/src/main/java/keijumt/devandroid/api/response/PostalCodeResult.kt b/app/src/main/java/keijumt/devandroid/api/response/PostalCodeResult.kt new file mode 100644 index 0000000..9ffc2e2 --- /dev/null +++ b/app/src/main/java/keijumt/devandroid/api/response/PostalCodeResult.kt @@ -0,0 +1,12 @@ +package keijumt.devandroid.api.response + +class PostalCodeResult( + val address1: String, + val address2: String, + val address3: String, + val kana1: String, + val kana2: String, + val kana3: String, + val prefcode: String, + val zipcode: Int +) \ No newline at end of file diff --git a/app/src/main/java/keijumt/devandroid/di/AppComponent.kt b/app/src/main/java/keijumt/devandroid/di/AppComponent.kt index 7a16d2a..5812640 100644 --- a/app/src/main/java/keijumt/devandroid/di/AppComponent.kt +++ b/app/src/main/java/keijumt/devandroid/di/AppComponent.kt @@ -8,12 +8,14 @@ import keijumt.devandroid.App import keijumt.devandroid.di.module.ActivityModule import keijumt.devandroid.di.module.AppModule +import keijumt.devandroid.di.module.NetworkModule import javax.inject.Singleton @Singleton @Component(modules = arrayOf( AndroidSupportInjectionModule::class, AppModule::class, + NetworkModule::class, ActivityModule::class )) diff --git a/app/src/main/java/keijumt/devandroid/di/CustomQualifer.kt b/app/src/main/java/keijumt/devandroid/di/CustomQualifer.kt new file mode 100644 index 0000000..25cf726 --- /dev/null +++ b/app/src/main/java/keijumt/devandroid/di/CustomQualifer.kt @@ -0,0 +1,6 @@ +package keijumt.devandroid.di + +import javax.inject.Qualifier + +@Qualifier +annotation class RetrofitPostalCode diff --git a/app/src/main/java/keijumt/devandroid/di/module/AppModule.kt b/app/src/main/java/keijumt/devandroid/di/module/AppModule.kt index 9ef89c2..354a6b5 100644 --- a/app/src/main/java/keijumt/devandroid/di/module/AppModule.kt +++ b/app/src/main/java/keijumt/devandroid/di/module/AppModule.kt @@ -4,6 +4,9 @@ import android.content.Context import dagger.Module import dagger.Provides +import keijumt.devandroid.api.PostalCodeApi +import keijumt.devandroid.repository.PostalCodeDataRepository +import keijumt.devandroid.repository.PostalCodeRepository import javax.inject.Singleton /** @@ -13,11 +16,15 @@ ViewModelModule::class )) class AppModule { - + @Singleton @Provides fun provideContext(application: Application): Context { return application.applicationContext } + @Singleton + @Provides + fun providePostalCodeRepository(postalCodeApi: PostalCodeApi): PostalCodeRepository = + PostalCodeDataRepository(postalCodeApi) } \ No newline at end of file diff --git a/app/src/main/java/keijumt/devandroid/di/module/NetworkModule.kt b/app/src/main/java/keijumt/devandroid/di/module/NetworkModule.kt new file mode 100644 index 0000000..6754f36 --- /dev/null +++ b/app/src/main/java/keijumt/devandroid/di/module/NetworkModule.kt @@ -0,0 +1,37 @@ +package keijumt.devandroid.di.module + +import dagger.Module +import dagger.Provides +import keijumt.devandroid.api.PostalCodeApi +import keijumt.devandroid.di.RetrofitPostalCode +import okhttp3.OkHttpClient +import retrofit2.Retrofit +import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory +import retrofit2.converter.gson.GsonConverterFactory +import javax.inject.Singleton + +@Module +class NetworkModule { + + @Singleton + @Provides + fun provideOkHttpClient(): OkHttpClient = OkHttpClient.Builder().build() + + @RetrofitPostalCode + @Singleton + @Provides + fun provideRetrofit(okHttpClient: OkHttpClient): Retrofit { + return Retrofit.Builder() + .client(okHttpClient) + .baseUrl("http://zipcloud.ibsnet.co.jp/api/") + .addConverterFactory(GsonConverterFactory.create()) + .addCallAdapterFactory(RxJava2CallAdapterFactory.createAsync()) + .build() + } + + @Singleton + @Provides + fun providePostalCodeApi(@RetrofitPostalCode retrofit: Retrofit): PostalCodeApi { + return retrofit.create(PostalCodeApi::class.java) + } +} \ No newline at end of file diff --git a/app/src/main/java/keijumt/devandroid/repository/PostalCodeDataRepository.kt b/app/src/main/java/keijumt/devandroid/repository/PostalCodeDataRepository.kt new file mode 100644 index 0000000..065e903 --- /dev/null +++ b/app/src/main/java/keijumt/devandroid/repository/PostalCodeDataRepository.kt @@ -0,0 +1,8 @@ +package keijumt.devandroid.repository + +import keijumt.devandroid.api.PostalCodeApi + +class PostalCodeDataRepository(val postalCodeApi: PostalCodeApi) : PostalCodeRepository { + + override fun search(postalCode: Int) = postalCodeApi.getPostalCode(postalCode) +} \ No newline at end of file diff --git a/app/src/main/java/keijumt/devandroid/repository/PostalCodeRepository.kt b/app/src/main/java/keijumt/devandroid/repository/PostalCodeRepository.kt new file mode 100644 index 0000000..41d6cff --- /dev/null +++ b/app/src/main/java/keijumt/devandroid/repository/PostalCodeRepository.kt @@ -0,0 +1,8 @@ +package keijumt.devandroid.repository + +import io.reactivex.Single +import keijumt.devandroid.api.response.PostalCode + +interface PostalCodeRepository { + fun search(postalCode: Int): Single +} \ No newline at end of file