@@ -3,7 +3,9 @@ package com.stop.data.di
3
3
import com.squareup.moshi.Moshi
4
4
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
5
5
import com.stop.data.BuildConfig
6
- import com.stop.data.remote.adapter.route.ResultCallAdapter
6
+ import com.stop.data.remote.ResultCallAdapter
7
+ import com.tickaroo.tikxml.TikXml
8
+ import com.tickaroo.tikxml.retrofit.TikXmlConverterFactory
7
9
import dagger.Module
8
10
import dagger.Provides
9
11
import dagger.hilt.InstallIn
@@ -16,9 +18,7 @@ import okhttp3.Response
16
18
import okhttp3.ResponseBody.Companion.toResponseBody
17
19
import okhttp3.logging.HttpLoggingInterceptor
18
20
import retrofit2.Retrofit
19
- import retrofit2.converter.jaxb.JaxbConverterFactory
20
21
import retrofit2.converter.moshi.MoshiConverterFactory
21
- import java.io.IOException
22
22
import javax.inject.Named
23
23
import javax.inject.Singleton
24
24
@@ -27,23 +27,19 @@ import javax.inject.Singleton
27
27
internal object NetworkModule {
28
28
29
29
private const val T_MAP_APP_KEY_NAME = " appKey"
30
- private const val T_MAP_APP_KEY_VALUE = BuildConfig .TMAP_APP_KEY
31
- private const val T_MAP_URL = " https://apis.openapi.sk.com/"
32
-
33
- private const val OPEN_API_SEOUL_URL = " http://openapi.seoul.go.kr:8088/"
34
30
private const val OPEN_API_SEOUL_KEY_NAME = " KEY"
35
- private const val BUS_KEY = BuildConfig .BUS_KEY
36
-
37
- private const val APIS_URL = " http://apis.data.go.kr/6410000/"
38
31
private const val APIS_KEY_NAME = " ServiceKey"
39
-
40
- private const val WS_BUS_URL = " http://ws.bus.go.kr/api/rest/"
41
32
private const val WS_KEY_NAME = " ServiceKey"
42
33
43
34
private const val T_MAP_ROUTE_URL = " transit/routes"
35
+
36
+ /* *
37
+ * resources에 fake 데이터가 담긴 파일을 넣어줘야 Fake TMap이 정상적으로 동작합니다.
38
+ */
44
39
private const val FAKE_JSON_URI = " response.json"
45
40
46
41
@Provides
42
+ @Singleton
47
43
fun provideOkHttpClient (
48
44
customInterceptor : CustomInterceptor ,
49
45
loggingInterceptor : HttpLoggingInterceptor ,
@@ -54,24 +50,19 @@ internal object NetworkModule {
54
50
.build()
55
51
}
56
52
53
+
57
54
@Provides
58
55
@Singleton
59
56
fun provideMoshi (): Moshi {
60
- return Moshi .Builder ()
57
+ return Moshi .Builder ()
61
58
.addLast(KotlinJsonAdapterFactory ())
62
59
.build()
63
60
}
64
61
65
62
@Provides
66
63
@Singleton
67
- fun provideJaxbConverterFactory (): JaxbConverterFactory {
68
- return JaxbConverterFactory .create()
69
- }
70
-
71
- @Provides
72
- @Singleton
73
- fun provideTmapInterceptor (): TmapInterceptor {
74
- return TmapInterceptor ()
64
+ fun provideTikXmlConverterFactory (): TikXmlConverterFactory {
65
+ return TikXmlConverterFactory .create(TikXml .Builder ().exceptionOnUnreadXml(false ).build())
75
66
}
76
67
77
68
@Provides
@@ -89,21 +80,6 @@ internal object NetworkModule {
89
80
return ResultCallAdapter .Factory ()
90
81
}
91
82
92
- @Named(" place" )
93
- @Provides
94
- fun provideRetrofitInstance (
95
- okHttpClient : OkHttpClient ,
96
- moshi : Moshi ,
97
- resultCallAdapter : ResultCallAdapter .Factory ,
98
- ): Retrofit {
99
- return Retrofit .Builder ()
100
- .baseUrl(T_MAP_URL )
101
- .client(okHttpClient)
102
- .addCallAdapterFactory(resultCallAdapter)
103
- .addConverterFactory(MoshiConverterFactory .create(moshi))
104
- .build()
105
- }
106
-
107
83
@Provides
108
84
@Named(" Tmap" )
109
85
fun provideTmapRetrofitInstance (
@@ -112,7 +88,7 @@ internal object NetworkModule {
112
88
resultCallAdapter : ResultCallAdapter .Factory ,
113
89
): Retrofit {
114
90
return Retrofit .Builder ()
115
- .baseUrl(T_MAP_URL )
91
+ .baseUrl(BuildConfig . T_MAP_URL )
116
92
.client(okHttpClient)
117
93
.addCallAdapterFactory(resultCallAdapter)
118
94
.addConverterFactory(MoshiConverterFactory .create(moshi))
@@ -127,7 +103,7 @@ internal object NetworkModule {
127
103
resultCallAdapter : ResultCallAdapter .Factory ,
128
104
): Retrofit {
129
105
return Retrofit .Builder ()
130
- .baseUrl(OPEN_API_SEOUL_URL )
106
+ .baseUrl(BuildConfig . OPEN_API_SEOUL_URL )
131
107
.client(okHttpClient)
132
108
.addCallAdapterFactory(resultCallAdapter)
133
109
.addConverterFactory(MoshiConverterFactory .create(moshi))
@@ -142,39 +118,28 @@ internal object NetworkModule {
142
118
resultCallAdapter : ResultCallAdapter .Factory ,
143
119
): Retrofit {
144
120
return Retrofit .Builder ()
145
- .baseUrl(WS_BUS_URL )
121
+ .baseUrl(BuildConfig . WS_BUS_URL )
146
122
.client(okHttpClient)
147
123
.addCallAdapterFactory(resultCallAdapter)
148
124
.addConverterFactory(MoshiConverterFactory .create(moshi))
149
125
.build()
150
126
}
151
127
152
-
153
128
@Provides
154
129
@Named(" ApisData" )
155
130
fun provideApisDataRetrofitInstance (
156
131
okHttpClient : OkHttpClient ,
132
+ tikXmlConverterFactory : TikXmlConverterFactory ,
157
133
resultCallAdapter : ResultCallAdapter .Factory ,
158
134
): Retrofit {
159
135
return Retrofit .Builder ()
160
- .baseUrl(APIS_URL )
136
+ .baseUrl(BuildConfig . APIS_URL )
161
137
.client(okHttpClient)
162
138
.addCallAdapterFactory(resultCallAdapter)
139
+ .addConverterFactory(tikXmlConverterFactory)
163
140
.build()
164
141
}
165
142
166
- class TmapInterceptor : Interceptor {
167
- @Throws(IOException ::class )
168
- override fun intercept (chain : Interceptor .Chain ): Response {
169
- return with (chain) {
170
- val newRequest = request().newBuilder()
171
- .addHeader(T_MAP_APP_KEY_NAME , T_MAP_APP_KEY_VALUE )
172
- .build()
173
- proceed(newRequest)
174
- }
175
- }
176
- }
177
-
178
143
class CustomInterceptor : Interceptor {
179
144
override fun intercept (chain : Interceptor .Chain ): Response {
180
145
val url = chain.request().url.toUri().toString()
@@ -194,10 +159,10 @@ internal object NetworkModule {
194
159
}
195
160
196
161
val (name: String , key: String ) = when {
197
- url.contains(OPEN_API_SEOUL_URL ) -> Pair (OPEN_API_SEOUL_KEY_NAME , BUS_KEY )
198
- url.contains(T_MAP_URL ) -> Pair (T_MAP_APP_KEY_NAME , T_MAP_APP_KEY_VALUE )
199
- url.contains(APIS_URL ) -> Pair (APIS_KEY_NAME , BUS_KEY )
200
- url.contains(WS_BUS_URL ) -> Pair (WS_KEY_NAME , BUS_KEY )
162
+ url.contains(BuildConfig . OPEN_API_SEOUL_URL ) -> Pair (OPEN_API_SEOUL_KEY_NAME , BuildConfig . BUS_KEY )
163
+ url.contains(BuildConfig . T_MAP_URL ) -> Pair (T_MAP_APP_KEY_NAME , BuildConfig . T_MAP_APP_KEY )
164
+ url.contains(BuildConfig . APIS_URL ) -> Pair (APIS_KEY_NAME , BuildConfig . BUS_KEY )
165
+ url.contains(BuildConfig . WS_BUS_URL ) -> Pair (WS_KEY_NAME , BuildConfig . BUS_KEY )
201
166
else -> {
202
167
return chain.proceed(chain.request())
203
168
}
0 commit comments