Skip to content

Commit fa724f5

Browse files
committed
Refactor: Organize network related classes
1 parent 27c9efe commit fa724f5

File tree

11 files changed

+43
-38
lines changed

11 files changed

+43
-38
lines changed
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
package com.developersbreach.kotlindictionarymultiplatform.core.network.api
1+
package com.developersbreach.kotlindictionarymultiplatform.core.network.detailsGenerator.api
22

33
import com.developersbreach.kotlindictionarymultiplatform.Log
4-
import com.developersbreach.kotlindictionarymultiplatform.core.network.parser.GeminiJsonParser
5-
import com.developersbreach.kotlindictionarymultiplatform.core.network.request.GeminiPromptBuilder
4+
import com.developersbreach.kotlindictionarymultiplatform.core.network.detailsGenerator.parser.GeminiJsonParser
5+
import com.developersbreach.kotlindictionarymultiplatform.core.network.detailsGenerator.request.GeminiPromptBuilder
66
import com.developersbreach.kotlindictionarymultiplatform.data.detail.model.KotlinTopicDetails
77
import io.ktor.client.HttpClient
88
import io.ktor.client.request.post
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.developersbreach.kotlindictionarymultiplatform.core.network.parser
1+
package com.developersbreach.kotlindictionarymultiplatform.core.network.detailsGenerator.parser
22

33
import kotlinx.serialization.json.Json
44
import kotlinx.serialization.json.jsonObject
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.developersbreach.kotlindictionarymultiplatform.core.network.request
1+
package com.developersbreach.kotlindictionarymultiplatform.core.network.detailsGenerator.request
22

33
import kotlinx.serialization.json.JsonObject
44
import kotlinx.serialization.json.buildJsonObject
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.developersbreach.kotlindictionarymultiplatform.core.network.topicSource
2+
3+
object FirestoreConstants {
4+
private const val ROOT_URL = "https://firestore.googleapis.com/v1/projects/kotlin-dictionary/databases/(default)/documents"
5+
const val TOPICS_URL = "$ROOT_URL/topics"
6+
}

composeApp/src/commonMain/kotlin/com/developersbreach/kotlindictionarymultiplatform/data/detail/repository/DetailRepository.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.developersbreach.kotlindictionarymultiplatform.data.detail.repository
22

33
import arrow.core.Either
4-
import com.developersbreach.kotlindictionarymultiplatform.core.network.api.GeminiApiService
4+
import com.developersbreach.kotlindictionarymultiplatform.core.network.detailsGenerator.api.GeminiApiService
55
import com.developersbreach.kotlindictionarymultiplatform.data.detail.model.KotlinTopicDetails
66
import com.developersbreach.kotlindictionarymultiplatform.getOpenApiKey
77

composeApp/src/commonMain/kotlin/com/developersbreach/kotlindictionarymultiplatform/data/topic/model/FirestoreResponse.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,10 @@ data class RawField(
1717
data class Response(
1818
@SerialName("documents") val topics: List<RawTopic>,
1919
)
20+
21+
fun RawTopic.toTopic(): Topic {
22+
return Topic(
23+
name = fields["name"]?.value.orEmpty(),
24+
description = fields["description"]?.value.orEmpty(),
25+
)
26+
}

composeApp/src/commonMain/kotlin/com/developersbreach/kotlindictionarymultiplatform/data/topic/repository/TopicRepository.kt

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,36 @@ package com.developersbreach.kotlindictionarymultiplatform.data.topic.repository
33
import arrow.core.Either
44
import com.developersbreach.kotlindictionarymultiplatform.data.topic.model.Response
55
import com.developersbreach.kotlindictionarymultiplatform.data.topic.model.Topic
6-
import com.developersbreach.kotlindictionarymultiplatform.data.topic.utils.FirestoreConstants
7-
import com.developersbreach.kotlindictionarymultiplatform.data.topic.utils.toTopic
6+
import com.developersbreach.kotlindictionarymultiplatform.data.topic.model.toTopic
7+
import com.developersbreach.kotlindictionarymultiplatform.core.network.topicSource.FirestoreConstants
88
import io.ktor.client.HttpClient
99
import io.ktor.client.call.body
1010
import io.ktor.client.request.get
1111
import io.ktor.client.plugins.contentnegotiation.ContentNegotiation
1212
import io.ktor.serialization.kotlinx.json.json
1313
import kotlinx.serialization.json.Json
1414

15-
object TopicRepository {
15+
//object TopicRepository {
16+
//
17+
// private val client = HttpClient {
18+
// install(ContentNegotiation) {
19+
// json(Json { ignoreUnknownKeys = true })
20+
// }
21+
// }
22+
//
23+
// suspend fun getTopics(): Either<Throwable, List<Topic>> {
24+
// return Either.catch {
25+
// val response: Response = client.get(FirestoreConstants.TOPICS_URL).body()
26+
// response.topics.map { it.toTopic() }
27+
// }
28+
// }
29+
//}
1630

17-
private val client = HttpClient {
18-
install(ContentNegotiation) {
19-
json(Json { ignoreUnknownKeys = true })
20-
}
21-
}
22-
23-
suspend fun getTopics(): Either<Throwable, List<Topic>> {
24-
return Either.catch {
25-
val response: Response = client.get(FirestoreConstants.TOPICS_URL).body()
31+
class TopicRepository(
32+
private val httpClient: HttpClient
33+
){
34+
suspend fun getTopics(): Either<Throwable, List<Topic>> = Either.catch {
35+
val response: Response = httpClient.get(FirestoreConstants.TOPICS_URL).body()
2636
response.topics.map { it.toTopic() }
27-
}
2837
}
2938
}

composeApp/src/commonMain/kotlin/com/developersbreach/kotlindictionarymultiplatform/data/topic/utils/FirestoreConstants.kt

Lines changed: 0 additions & 6 deletions
This file was deleted.

composeApp/src/commonMain/kotlin/com/developersbreach/kotlindictionarymultiplatform/data/topic/utils/Mappers.kt

Lines changed: 0 additions & 11 deletions
This file was deleted.

composeApp/src/commonMain/kotlin/com/developersbreach/kotlindictionarymultiplatform/di/ApiModule.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.developersbreach.kotlindictionarymultiplatform.di
22

3-
import com.developersbreach.kotlindictionarymultiplatform.core.network.api.GeminiApiService
3+
import com.developersbreach.kotlindictionarymultiplatform.core.network.detailsGenerator.api.GeminiApiService
44
import org.koin.dsl.module
55

66
internal val apiModule = module {

0 commit comments

Comments
 (0)