Add self governments impl
This commit is contained in:
parent
bff34b1990
commit
58cf03a711
10 changed files with 123 additions and 7 deletions
|
@ -0,0 +1,18 @@
|
||||||
|
package io.github.wulkanowy.sdk.scrapper.home
|
||||||
|
|
||||||
|
import com.google.gson.annotations.SerializedName
|
||||||
|
|
||||||
|
data class GovernmentMember(
|
||||||
|
|
||||||
|
@SerializedName("Name")
|
||||||
|
val name: String,
|
||||||
|
|
||||||
|
@SerializedName("Position")
|
||||||
|
val position: String,
|
||||||
|
|
||||||
|
@SerializedName("Division")
|
||||||
|
val division: String,
|
||||||
|
|
||||||
|
@SerializedName("Id")
|
||||||
|
val id: Int
|
||||||
|
)
|
|
@ -0,0 +1,12 @@
|
||||||
|
package io.github.wulkanowy.sdk.scrapper.home
|
||||||
|
|
||||||
|
import com.google.gson.annotations.SerializedName
|
||||||
|
|
||||||
|
data class GovernmentUnit(
|
||||||
|
|
||||||
|
@SerializedName("UnitName")
|
||||||
|
val unitName: String,
|
||||||
|
|
||||||
|
@SerializedName("People")
|
||||||
|
val people: List<GovernmentMember>
|
||||||
|
)
|
|
@ -1,6 +1,7 @@
|
||||||
package io.github.wulkanowy.sdk.scrapper.repository
|
package io.github.wulkanowy.sdk.scrapper.repository
|
||||||
|
|
||||||
import io.github.wulkanowy.sdk.scrapper.getScriptParam
|
import io.github.wulkanowy.sdk.scrapper.getScriptParam
|
||||||
|
import io.github.wulkanowy.sdk.scrapper.home.GovernmentUnit
|
||||||
import io.github.wulkanowy.sdk.scrapper.home.LuckyNumber
|
import io.github.wulkanowy.sdk.scrapper.home.LuckyNumber
|
||||||
import io.github.wulkanowy.sdk.scrapper.interceptor.ErrorHandlerTransformer
|
import io.github.wulkanowy.sdk.scrapper.interceptor.ErrorHandlerTransformer
|
||||||
import io.github.wulkanowy.sdk.scrapper.service.HomepageService
|
import io.github.wulkanowy.sdk.scrapper.service.HomepageService
|
||||||
|
@ -18,11 +19,9 @@ class HomepageRepository(private val api: HomepageService) {
|
||||||
}.map { it.apply { token = this } }
|
}.map { it.apply { token = this } }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getSelfGovernments(): Single<List<String>> {
|
fun getSelfGovernments(): Single<List<GovernmentUnit>> {
|
||||||
return getToken().flatMap { api.getSelfGovernments(it) }
|
return getToken().flatMap { api.getSelfGovernments(it) }
|
||||||
.compose(ErrorHandlerTransformer()).map { it.data.orEmpty() }.map { it[0].content }.map { res ->
|
.compose(ErrorHandlerTransformer()).map { requireNotNull(it.data) }
|
||||||
res.map { it.name }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getStudentsTrips(): Single<List<String>> {
|
fun getStudentsTrips(): Single<List<String>> {
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package io.github.wulkanowy.sdk.scrapper.service
|
package io.github.wulkanowy.sdk.scrapper.service
|
||||||
|
|
||||||
import io.github.wulkanowy.sdk.scrapper.ApiResponse
|
import io.github.wulkanowy.sdk.scrapper.ApiResponse
|
||||||
|
import io.github.wulkanowy.sdk.scrapper.home.GovernmentUnit
|
||||||
import io.github.wulkanowy.sdk.scrapper.home.HomepageTileResponse
|
import io.github.wulkanowy.sdk.scrapper.home.HomepageTileResponse
|
||||||
import io.reactivex.Single
|
import io.reactivex.Single
|
||||||
import retrofit2.http.Field
|
import retrofit2.http.Field
|
||||||
|
@ -15,7 +16,7 @@ interface HomepageService {
|
||||||
|
|
||||||
@FormUrlEncoded
|
@FormUrlEncoded
|
||||||
@POST("Start.mvc/GetSelfGovernments")
|
@POST("Start.mvc/GetSelfGovernments")
|
||||||
fun getSelfGovernments(@Field("permissions") token: String): Single<ApiResponse<List<HomepageTileResponse>>>
|
fun getSelfGovernments(@Field("permissions") token: String): Single<ApiResponse<List<GovernmentUnit>>>
|
||||||
|
|
||||||
@FormUrlEncoded
|
@FormUrlEncoded
|
||||||
@POST("Start.mvc/GetStudentTrips")
|
@POST("Start.mvc/GetStudentTrips")
|
||||||
|
|
|
@ -17,6 +17,22 @@ class HomepageTest : BaseLocalTest() {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun getSelfGovernments() {
|
fun getSelfGovernments() {
|
||||||
|
server.enqueue(MockResponse().setBody(HomepageTest::class.java.getResource("Index.html").readText()))
|
||||||
|
server.enqueue("GetSelfGovernments.json")
|
||||||
|
server.start(3000)
|
||||||
|
|
||||||
|
val units = repo.getSelfGovernments().blockingGet()
|
||||||
|
assertEquals(1, units.size)
|
||||||
|
assertEquals("ZST-I", units[0].unitName)
|
||||||
|
|
||||||
|
val members = units[0].people
|
||||||
|
assertEquals(3, members.size)
|
||||||
|
with(members[0]) {
|
||||||
|
assertEquals("Jan Michał Kowalski", name)
|
||||||
|
assertEquals("Przewodniczący", position)
|
||||||
|
assertEquals("3tm (T 17)", division)
|
||||||
|
assertEquals(0, id)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
"data": [
|
||||||
|
{
|
||||||
|
"UnitName": "ZST-I",
|
||||||
|
"People": [
|
||||||
|
{
|
||||||
|
"Name": "Jan Michał Kowalski",
|
||||||
|
"Position": "Przewodniczący",
|
||||||
|
"Division": "3tm (T 17)",
|
||||||
|
"Id": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "Paweł Jan Czerwiński",
|
||||||
|
"Position": "Zastępca",
|
||||||
|
"Division": "3tmm (T 17)",
|
||||||
|
"Id": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "Magdalena Trzecia Wielka",
|
||||||
|
"Position": "Skarbnik",
|
||||||
|
"Division": "3tmm (T 17)",
|
||||||
|
"Id": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"success": true,
|
||||||
|
"errorMessage": null,
|
||||||
|
"feedback": null
|
||||||
|
}
|
|
@ -491,9 +491,9 @@ class Sdk {
|
||||||
}.map { it.number }
|
}.map { it.number }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getSelfGovernments(): Single<List<String>> {
|
fun getSelfGovernments(): Single<List<GovernmentUnit>> {
|
||||||
return when (mode) {
|
return when (mode) {
|
||||||
Mode.HYBRID, Mode.SCRAPPER -> scrapper.getSelfGovernments().compose(ScrapperExceptionTransformer())
|
Mode.HYBRID, Mode.SCRAPPER -> scrapper.getSelfGovernments().compose(ScrapperExceptionTransformer()).map { it.mapToUnits() }
|
||||||
Mode.API -> throw FeatureNotAvailableException("Self governments is not available in API mode")
|
Mode.API -> throw FeatureNotAvailableException("Self governments is not available in API mode")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
package io.github.wulkanowy.sdk.mapper
|
||||||
|
|
||||||
|
import io.github.wulkanowy.sdk.pojo.GovernmentMember
|
||||||
|
import io.github.wulkanowy.sdk.pojo.GovernmentUnit
|
||||||
|
import io.github.wulkanowy.sdk.scrapper.home.GovernmentMember as ScrapperGovernmentMember
|
||||||
|
import io.github.wulkanowy.sdk.scrapper.home.GovernmentUnit as ScrapperGovernmentUnit
|
||||||
|
|
||||||
|
fun List<ScrapperGovernmentUnit>.mapToUnits(): List<GovernmentUnit> {
|
||||||
|
return map {
|
||||||
|
GovernmentUnit(
|
||||||
|
unitName = it.unitName,
|
||||||
|
people = it.people.mapToMembers()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun List<ScrapperGovernmentMember>.mapToMembers(): List<GovernmentMember> {
|
||||||
|
return map {
|
||||||
|
GovernmentMember(
|
||||||
|
name = it.name,
|
||||||
|
division = it.division,
|
||||||
|
position = it.position,
|
||||||
|
id = it.id
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
package io.github.wulkanowy.sdk.pojo
|
||||||
|
|
||||||
|
data class GovernmentMember(
|
||||||
|
val name: String,
|
||||||
|
val position: String,
|
||||||
|
val division: String,
|
||||||
|
val id: Int
|
||||||
|
)
|
|
@ -0,0 +1,6 @@
|
||||||
|
package io.github.wulkanowy.sdk.pojo
|
||||||
|
|
||||||
|
data class GovernmentUnit(
|
||||||
|
val unitName: String,
|
||||||
|
val people: List<GovernmentMember>
|
||||||
|
)
|
Loading…
Reference in a new issue