-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
6e829c5
commit 80e0701
Showing
20 changed files
with
245 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
@file:Suppress("UnusedPrivateMember") | ||
|
||
import ru.astrainteractive.gradleplugin.util.ProjectProperties.projectInfo | ||
|
||
plugins { | ||
id("com.android.library") | ||
kotlin("multiplatform") | ||
id("ru.astrainteractive.gradleplugin.java.core") | ||
id("ru.astrainteractive.gradleplugin.android.core") | ||
id("dev.icerock.mobile.multiplatform-resources") | ||
alias(libs.plugins.kotlin.serialization) | ||
} | ||
|
||
kotlin { | ||
android() | ||
ios() | ||
iosSimulatorArm64() | ||
sourceSets { | ||
val commonMain by getting { | ||
dependencies { | ||
// klibs | ||
implementation(libs.klibs.mikro.core) | ||
api(libs.klibs.mikro.platform) | ||
implementation(libs.klibs.kstorage) | ||
implementation(libs.klibs.kdi) | ||
// Ktor | ||
implementation(libs.ktor.client.core) | ||
implementation(libs.ktor.client.contentNegitiation) | ||
implementation(libs.ktor.client.serialization) | ||
implementation(libs.ktor.client.json) | ||
implementation(libs.ktor.serialization.json) | ||
// Serialization | ||
implementation(libs.kotlin.serialization.json) | ||
// Coroutines | ||
implementation(libs.kotlin.coroutines.core) | ||
} | ||
} | ||
} | ||
} | ||
|
||
android { | ||
namespace = "${projectInfo.group}.api.empireapi" | ||
} |
24 changes: 24 additions & 0 deletions
24
...api/src/commonMain/kotlin/com/makeevrserg/empireprojekt/mobile/api/empireapi/RatingApi.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
package com.makeevrserg.empireprojekt.mobile.api.empireapi | ||
|
||
import ru.astrainteractive.empireapi.models.rating.RatingListRequest | ||
import ru.astrainteractive.empireapi.models.rating.RatingModel | ||
import ru.astrainteractive.empireapi.models.rating.RatingUserModel | ||
import ru.astrainteractive.empireapi.models.rating.UserRatingsRequest | ||
import ru.astrainteractive.empireapi.models.response.GenericPagedModel | ||
|
||
interface RatingApi { | ||
/** | ||
* Fetch all users | ||
*/ | ||
suspend fun users(body: RatingListRequest): GenericPagedModel<RatingUserModel> | ||
|
||
/** | ||
* Fetch selected user | ||
*/ | ||
suspend fun user(id: Long): RatingUserModel | ||
|
||
/** | ||
* Fetch ratings of selected user | ||
*/ | ||
suspend fun ratings(body: UserRatingsRequest): GenericPagedModel<RatingModel> | ||
} |
17 changes: 17 additions & 0 deletions
17
...ommonMain/kotlin/com/makeevrserg/empireprojekt/mobile/api/empireapi/di/EmpireApiModule.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
package com.makeevrserg.empireprojekt.mobile.api.empireapi.di | ||
|
||
import com.makeevrserg.empireprojekt.mobile.api.empireapi.RatingApi | ||
import com.makeevrserg.empireprojekt.mobile.api.empireapi.impl.RatingApiImpl | ||
import io.ktor.client.HttpClient | ||
import ru.astrainteractive.klibs.kdi.Provider | ||
import ru.astrainteractive.klibs.kdi.getValue | ||
|
||
interface EmpireApiModule { | ||
val ratingApi: RatingApi | ||
|
||
class Default(httpClient: HttpClient) : EmpireApiModule { | ||
override val ratingApi: RatingApi by Provider { | ||
RatingApiImpl(httpClient = httpClient) | ||
} | ||
} | ||
} |
42 changes: 42 additions & 0 deletions
42
...ommonMain/kotlin/com/makeevrserg/empireprojekt/mobile/api/empireapi/impl/RatingApiImpl.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
package com.makeevrserg.empireprojekt.mobile.api.empireapi.impl | ||
|
||
import com.makeevrserg.empireprojekt.mobile.api.empireapi.RatingApi | ||
import io.ktor.client.HttpClient | ||
import io.ktor.client.call.body | ||
import io.ktor.client.request.get | ||
import io.ktor.client.request.parameter | ||
import io.ktor.client.request.post | ||
import io.ktor.client.request.setBody | ||
import io.ktor.client.request.url | ||
import ru.astrainteractive.empireapi.models.rating.RatingListRequest | ||
import ru.astrainteractive.empireapi.models.rating.RatingModel | ||
import ru.astrainteractive.empireapi.models.rating.RatingUserModel | ||
import ru.astrainteractive.empireapi.models.rating.UserRatingsRequest | ||
import ru.astrainteractive.empireapi.models.response.GenericPagedModel | ||
|
||
class RatingApiImpl( | ||
private val httpClient: HttpClient, | ||
private val baseUrl: String = "http://192.168.1.3:8080" | ||
) : RatingApi { | ||
|
||
override suspend fun users(body: RatingListRequest): GenericPagedModel<RatingUserModel> { | ||
return httpClient.post { | ||
url("$baseUrl/rating/users") | ||
setBody(body) | ||
}.body() | ||
} | ||
|
||
override suspend fun user(id: Long): RatingUserModel { | ||
return httpClient.get { | ||
url("$baseUrl/rating/user") | ||
parameter("user_id", id) | ||
}.body() | ||
} | ||
|
||
override suspend fun ratings(body: UserRatingsRequest): GenericPagedModel<RatingModel> { | ||
return httpClient.post { | ||
url("$baseUrl/rating/user/votes") | ||
setBody(body) | ||
}.body() | ||
} | ||
} |
6 changes: 6 additions & 0 deletions
6
...c/commonMain/kotlin/ru/astrainteractive/empireapi/models/currency/CurrencyHistoryEntry.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
package ru.astrainteractive.empireapi.models.currency | ||
|
||
class CurrencyHistoryEntry( | ||
val id: Long, | ||
val value: Float | ||
) |
6 changes: 6 additions & 0 deletions
6
...c/commonMain/kotlin/ru/astrainteractive/empireapi/models/currency/CurrencyHistoryModel.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
package ru.astrainteractive.empireapi.models.currency | ||
|
||
class CurrencyHistoryModel( | ||
val currencyModel: CurrencyModel, | ||
val entries: List<CurrencyHistoryEntry> | ||
) |
10 changes: 10 additions & 0 deletions
10
...eapi/src/commonMain/kotlin/ru/astrainteractive/empireapi/models/currency/CurrencyModel.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
package ru.astrainteractive.empireapi.models.currency | ||
|
||
import kotlinx.serialization.Serializable | ||
|
||
@Serializable | ||
class CurrencyModel( | ||
val id: Long, | ||
val name: String, | ||
val author: UserModel | ||
) |
9 changes: 9 additions & 0 deletions
9
...mpireapi/src/commonMain/kotlin/ru/astrainteractive/empireapi/models/currency/UserModel.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
package ru.astrainteractive.empireapi.models.currency | ||
|
||
import kotlinx.serialization.Serializable | ||
|
||
@Serializable | ||
data class UserModel( | ||
val id: Long, | ||
val username: String | ||
) |
15 changes: 15 additions & 0 deletions
15
...pi/src/commonMain/kotlin/ru/astrainteractive/empireapi/models/rating/RatingListRequest.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
package ru.astrainteractive.empireapi.models.rating | ||
|
||
import kotlinx.serialization.Serializable | ||
|
||
@Serializable | ||
class RatingListRequest( | ||
val page: Long = 0, | ||
val size: Int = 10, | ||
val sort: Sort = Sort.NAME_ASC, | ||
val query: String = "", | ||
) { | ||
enum class Sort { | ||
NAME_ASC, NAME_DESC | ||
} | ||
} |
13 changes: 13 additions & 0 deletions
13
...mpireapi/src/commonMain/kotlin/ru/astrainteractive/empireapi/models/rating/RatingModel.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
package ru.astrainteractive.empireapi.models.rating | ||
|
||
import kotlinx.serialization.Serializable | ||
|
||
@Serializable | ||
class RatingModel( | ||
val userCreatedReport: RatingUserModel?, | ||
val reportedUser: RatingUserModel, | ||
val rating: Int, | ||
val ratingTypeIndex: Int, | ||
val message: String, | ||
val time: Long | ||
) |
12 changes: 12 additions & 0 deletions
12
...eapi/src/commonMain/kotlin/ru/astrainteractive/empireapi/models/rating/RatingUserModel.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
package ru.astrainteractive.empireapi.models.rating | ||
|
||
import kotlinx.serialization.Serializable | ||
|
||
@Serializable | ||
data class RatingUserModel( | ||
val id: Long, | ||
val minecraftUUID: String, | ||
val minecraftName: String, | ||
val lastUpdated: Long, | ||
val total: Long | ||
) |
10 changes: 10 additions & 0 deletions
10
...i/src/commonMain/kotlin/ru/astrainteractive/empireapi/models/rating/UserRatingsRequest.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
package ru.astrainteractive.empireapi.models.rating | ||
|
||
import kotlinx.serialization.Serializable | ||
|
||
@Serializable | ||
class UserRatingsRequest( | ||
val id: Long, | ||
val page: Long = 0, | ||
val size: Int = 54 | ||
) |
11 changes: 11 additions & 0 deletions
11
.../src/commonMain/kotlin/ru/astrainteractive/empireapi/models/response/GenericPagedModel.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
package ru.astrainteractive.empireapi.models.response | ||
|
||
import kotlinx.serialization.Serializable | ||
|
||
@Serializable | ||
class GenericPagedModel<T>( | ||
override val data: List<T>, | ||
override val total: Long, | ||
override val currentPageAmount: Int, | ||
override val page: Long | ||
) : PagedModel<T> |
8 changes: 8 additions & 0 deletions
8
...pireapi/src/commonMain/kotlin/ru/astrainteractive/empireapi/models/response/PagedModel.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
package ru.astrainteractive.empireapi.models.response | ||
|
||
interface PagedModel<T> { | ||
val data: List<T> | ||
val total: Long | ||
val currentPageAmount: Int | ||
val page: Long | ||
} |
6 changes: 6 additions & 0 deletions
6
...pi-empireapi/src/commonMain/kotlin/ru/astrainteractive/empireapi/models/user/UserModel.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
package ru.astrainteractive.empireapi.models.user | ||
|
||
import kotlinx.serialization.Serializable | ||
|
||
@Serializable | ||
data class UserModel(val id: Long, val mail: String) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters