Skip to content

Commit f49bcdf

Browse files
authored
Merge pull request #58 from boostcampwm-2022/55-feature-mission-subway-line
[PR] 지하철 line 그리기
2 parents fd3f0da + 83513c7 commit f49bcdf

File tree

59 files changed

+732
-233
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+732
-233
lines changed

data/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ android {
2727
buildConfigField "String", "T_MAP_APP_KEY", properties['t_map_app_key']
2828
buildConfigField "String", "SUBWAY_KEY", properties['subway_key']
2929
buildConfigField "String", "BUS_KEY", properties['bus_key']
30+
buildConfigField "String", "SW_OPEN_API_SEOUL_URL", properties['sw_open_api_seoul_url']
3031
}
3132

3233
buildTypes {

data/src/main/java/com/stop/data/di/ApiModule.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ internal object ApiModule {
4545

4646
@Provides
4747
@Singleton
48-
fun providePlaceApiService(@Named("Tmap") retrofit: Retrofit): NearPlaceApiService {
49-
return retrofit.create(NearPlaceApiService::class.java)
48+
fun provideSwOpenApiSeoulService(@Named("SwOpenApiSeoul") retrofit: Retrofit): SwOpenApiSeoulService {
49+
return retrofit.create(SwOpenApiSeoulService::class.java)
5050
}
5151
}

data/src/main/java/com/stop/data/di/NetworkModule.kt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ internal object NetworkModule {
2525

2626
private const val T_MAP_APP_KEY_NAME = "appKey"
2727
private const val OPEN_API_SEOUL_KEY_NAME = "KEY"
28+
private const val SW_OPEN_API_SEOUL_KEY_NAME = "KEY"
2829
private const val APIS_KEY_NAME = "ServiceKey"
2930
private const val WS_KEY_NAME = "ServiceKey"
3031

@@ -130,6 +131,21 @@ internal object NetworkModule {
130131
.build()
131132
}
132133

134+
@Provides
135+
@Named("SwOpenApiSeoul")
136+
fun provideSwOpenApiSeoulRetrofitInstance(
137+
okHttpClient: OkHttpClient,
138+
moshi: Moshi,
139+
resultCallAdapter: ResultCallAdapter.Factory,
140+
): Retrofit {
141+
return Retrofit.Builder()
142+
.baseUrl(BuildConfig.SW_OPEN_API_SEOUL_URL)
143+
.client(okHttpClient)
144+
.addCallAdapterFactory(resultCallAdapter)
145+
.addConverterFactory(MoshiConverterFactory.create(moshi))
146+
.build()
147+
}
148+
133149
class CustomInterceptor : Interceptor {
134150
override fun intercept(chain: Interceptor.Chain): Response {
135151
val url = chain.request().url.toUri().toString()
@@ -139,6 +155,10 @@ internal object NetworkModule {
139155
OPEN_API_SEOUL_KEY_NAME,
140156
BuildConfig.BUS_KEY
141157
)
158+
url.contains(BuildConfig.SW_OPEN_API_SEOUL_URL) -> Pair(
159+
SW_OPEN_API_SEOUL_KEY_NAME,
160+
BuildConfig.SUBWAY_KEY
161+
)
142162
url.contains(BuildConfig.T_MAP_URL) -> Pair(
143163
T_MAP_APP_KEY_NAME,
144164
BuildConfig.T_MAP_APP_KEY

data/src/main/java/com/stop/data/model/nearplace/Place.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.stop.data.model.nearplace
22

33
import com.stop.domain.model.nearplace.Place
4+
import com.stop.domain.model.nowlocation.NowStationLocationUseCaseItem
45

56
data class Place(
67
val name: String,
@@ -17,4 +18,10 @@ data class Place(
1718
centerLat = centerLat,
1819
centerLon = centerLon
1920
)
21+
22+
fun toNowStationLocationUseCaseModel() = NowStationLocationUseCaseItem(
23+
name = name,
24+
latitude = centerLat.toString(),
25+
longitude = centerLon.toString()
26+
)
2027
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.stop.data.model.nowlocation
2+
3+
import com.stop.domain.model.nowlocation.SubwayTrainRealTimePositionUseCaseItem
4+
5+
data class SubwayTrainRealTimePositionRepositoryItem(
6+
val subwayId: String,
7+
val subwayName: String,
8+
val stationId: String,
9+
val stationName: String,
10+
val trainNumber: String,
11+
val trainStatus: String
12+
) {
13+
fun toUseCaseModel() = SubwayTrainRealTimePositionUseCaseItem(
14+
subwayId = subwayId,
15+
subwayName = subwayName,
16+
stationId = stationId,
17+
stationName = stationName,
18+
trainNumber = trainNumber,
19+
trainStatus = trainStatus
20+
)
21+
}

data/src/main/java/com/stop/data/remote/model/nowlocation/BusBody.kt renamed to data/src/main/java/com/stop/data/remote/model/nowlocation/bus/BusBody.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.stop.data.remote.model.nowlocation
1+
package com.stop.data.remote.model.nowlocation.bus
22

33
import com.squareup.moshi.Json
44

data/src/main/java/com/stop/data/remote/model/nowlocation/BusInfo.kt renamed to data/src/main/java/com/stop/data/remote/model/nowlocation/bus/BusInfo.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.stop.data.remote.model.nowlocation
1+
package com.stop.data.remote.model.nowlocation.bus
22

33
import com.squareup.moshi.Json
44
import com.stop.data.model.nowlocation.BusInfoRepositoryItem
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
package com.stop.data.remote.model.nowlocation
1+
package com.stop.data.remote.model.nowlocation.bus
22

33
import com.squareup.moshi.Json
44
import com.squareup.moshi.JsonClass
55

66
@JsonClass(generateAdapter = true)
7-
data class GetBusNowLocationResponse(
7+
data class BusNowLocationResponse(
88
@Json(name = "msgBody")
99
val busBody: BusBody,
1010
)
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.stop.data.remote.model.nowlocation.subway
2+
3+
import com.squareup.moshi.Json
4+
import com.squareup.moshi.JsonClass
5+
import com.stop.data.model.nowlocation.SubwayTrainRealTimePositionRepositoryItem
6+
7+
@JsonClass(generateAdapter = true)
8+
data class SubwayTrainNowLocationResponse(
9+
@Json(name = "realtimePositionList")
10+
val realtimePositions: List<TrainLocationInfo>
11+
) {
12+
fun toRepositoryModel(trainNumber: String): SubwayTrainRealTimePositionRepositoryItem {
13+
return realtimePositions.first { it.trainNumber == trainNumber }.run {
14+
SubwayTrainRealTimePositionRepositoryItem(
15+
subwayId = subwayId,
16+
subwayName = stationName,
17+
stationId = stationId,
18+
stationName = stationName + STATION,
19+
trainNumber = this.trainNumber,
20+
trainStatus = trainStatus
21+
)
22+
}
23+
}
24+
25+
companion object {
26+
private const val STATION = ""
27+
}
28+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.stop.data.remote.model.nowlocation.subway
2+
3+
import com.squareup.moshi.Json
4+
import com.squareup.moshi.JsonClass
5+
6+
@JsonClass(generateAdapter = true)
7+
data class TrainLocationInfo(
8+
val subwayId: String,
9+
@Json(name = "subwayNm")
10+
val subwayName: String,
11+
@Json(name = "statnId")
12+
val stationId: String,
13+
@Json(name = "statnNm")
14+
val stationName: String,
15+
@Json(name = "trainNo")
16+
val trainNumber: String,
17+
@Json(name = "trainSttus")
18+
val trainStatus: String // 0:진입 1:도착, 0,1외 나머지는:출발
19+
)

0 commit comments

Comments
 (0)