Refactor: move defense API methods into separate extension file
This commit is contained in:
118
web/src/main/kotlin/ru/ysu/lms/web/api/ApiClientDefense.kt
Normal file
118
web/src/main/kotlin/ru/ysu/lms/web/api/ApiClientDefense.kt
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
package ru.ysu.lms.web.api
|
||||||
|
|
||||||
|
import org.springframework.core.ParameterizedTypeReference
|
||||||
|
import org.springframework.http.HttpHeaders
|
||||||
|
import org.springframework.http.MediaType
|
||||||
|
|
||||||
|
fun ApiClient.labDefenses(
|
||||||
|
token: String,
|
||||||
|
labId: String,
|
||||||
|
): List<DefenseDto> {
|
||||||
|
val type = object : ParameterizedTypeReference<List<DefenseDto>>() {}
|
||||||
|
return call {
|
||||||
|
client
|
||||||
|
.get()
|
||||||
|
.uri("/api/v1/defenses?labId={labId}", labId)
|
||||||
|
.header(HttpHeaders.AUTHORIZATION, bearer(token))
|
||||||
|
.retrieve()
|
||||||
|
.body(type)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun ApiClient.assignDefense(
|
||||||
|
token: String,
|
||||||
|
studentId: String,
|
||||||
|
labId: String,
|
||||||
|
assignmentMd: String,
|
||||||
|
): DefenseDto =
|
||||||
|
call {
|
||||||
|
client
|
||||||
|
.post()
|
||||||
|
.uri("/api/v1/defenses/assign")
|
||||||
|
.header(HttpHeaders.AUTHORIZATION, bearer(token))
|
||||||
|
.contentType(MediaType.APPLICATION_JSON)
|
||||||
|
.body(mapOf("studentId" to studentId, "labId" to labId, "assignmentMd" to assignmentMd))
|
||||||
|
.retrieve()
|
||||||
|
.body(DefenseDto::class.java)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun ApiClient.issueDefenseCode(
|
||||||
|
token: String,
|
||||||
|
sessionId: String,
|
||||||
|
): String =
|
||||||
|
call {
|
||||||
|
client
|
||||||
|
.post()
|
||||||
|
.uri("/api/v1/defenses/{id}/issue-code", sessionId)
|
||||||
|
.header(HttpHeaders.AUTHORIZATION, bearer(token))
|
||||||
|
.retrieve()
|
||||||
|
.body(Map::class.java)
|
||||||
|
}.get("code").toString()
|
||||||
|
|
||||||
|
fun ApiClient.resetDefense(
|
||||||
|
token: String,
|
||||||
|
sessionId: String,
|
||||||
|
) {
|
||||||
|
call {
|
||||||
|
client
|
||||||
|
.post()
|
||||||
|
.uri("/api/v1/defenses/{id}/reset", sessionId)
|
||||||
|
.header(HttpHeaders.AUTHORIZATION, bearer(token))
|
||||||
|
.retrieve()
|
||||||
|
.toBodilessEntity()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun ApiClient.myDefenses(token: String): List<DefenseDto> {
|
||||||
|
val type = object : ParameterizedTypeReference<List<DefenseDto>>() {}
|
||||||
|
return call {
|
||||||
|
client
|
||||||
|
.get()
|
||||||
|
.uri("/api/v1/me/defenses")
|
||||||
|
.header(HttpHeaders.AUTHORIZATION, bearer(token))
|
||||||
|
.retrieve()
|
||||||
|
.body(type)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun ApiClient.myDefense(
|
||||||
|
token: String,
|
||||||
|
labId: String,
|
||||||
|
): DefenseDto? =
|
||||||
|
callOrNull {
|
||||||
|
client
|
||||||
|
.get()
|
||||||
|
.uri("/api/v1/me/defenses/{labId}", labId)
|
||||||
|
.header(HttpHeaders.AUTHORIZATION, bearer(token))
|
||||||
|
.retrieve()
|
||||||
|
.body(DefenseDto::class.java)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun ApiClient.startDefense(
|
||||||
|
token: String,
|
||||||
|
code: String,
|
||||||
|
): DefenseDto =
|
||||||
|
call {
|
||||||
|
client
|
||||||
|
.post()
|
||||||
|
.uri("/api/v1/me/defenses/start")
|
||||||
|
.header(HttpHeaders.AUTHORIZATION, bearer(token))
|
||||||
|
.contentType(MediaType.APPLICATION_JSON)
|
||||||
|
.body(mapOf("code" to code))
|
||||||
|
.retrieve()
|
||||||
|
.body(DefenseDto::class.java)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun ApiClient.finishDefense(
|
||||||
|
token: String,
|
||||||
|
sessionId: String,
|
||||||
|
): DefenseDto =
|
||||||
|
call {
|
||||||
|
client
|
||||||
|
.post()
|
||||||
|
.uri("/api/v1/me/defenses/{id}/finish", sessionId)
|
||||||
|
.header(HttpHeaders.AUTHORIZATION, bearer(token))
|
||||||
|
.contentType(MediaType.APPLICATION_JSON)
|
||||||
|
.retrieve()
|
||||||
|
.body(DefenseDto::class.java)
|
||||||
|
}
|
||||||
@@ -258,116 +258,3 @@ fun ApiClient.downloadSubmissionAsAdmin(
|
|||||||
}
|
}
|
||||||
return downloadOf(entity)
|
return downloadOf(entity)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun ApiClient.labDefenses(
|
|
||||||
token: String,
|
|
||||||
labId: String,
|
|
||||||
): List<DefenseDto> {
|
|
||||||
val type = object : ParameterizedTypeReference<List<DefenseDto>>() {}
|
|
||||||
return call {
|
|
||||||
client
|
|
||||||
.get()
|
|
||||||
.uri("/api/v1/defenses?labId={labId}", labId)
|
|
||||||
.header(HttpHeaders.AUTHORIZATION, bearer(token))
|
|
||||||
.retrieve()
|
|
||||||
.body(type)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun ApiClient.assignDefense(
|
|
||||||
token: String,
|
|
||||||
studentId: String,
|
|
||||||
labId: String,
|
|
||||||
assignmentMd: String,
|
|
||||||
): DefenseDto =
|
|
||||||
call {
|
|
||||||
client
|
|
||||||
.post()
|
|
||||||
.uri("/api/v1/defenses/assign")
|
|
||||||
.header(HttpHeaders.AUTHORIZATION, bearer(token))
|
|
||||||
.contentType(MediaType.APPLICATION_JSON)
|
|
||||||
.body(mapOf("studentId" to studentId, "labId" to labId, "assignmentMd" to assignmentMd))
|
|
||||||
.retrieve()
|
|
||||||
.body(DefenseDto::class.java)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun ApiClient.issueDefenseCode(
|
|
||||||
token: String,
|
|
||||||
sessionId: String,
|
|
||||||
): String =
|
|
||||||
call {
|
|
||||||
client
|
|
||||||
.post()
|
|
||||||
.uri("/api/v1/defenses/{id}/issue-code", sessionId)
|
|
||||||
.header(HttpHeaders.AUTHORIZATION, bearer(token))
|
|
||||||
.retrieve()
|
|
||||||
.body(Map::class.java)
|
|
||||||
}.get("code").toString()
|
|
||||||
|
|
||||||
fun ApiClient.resetDefense(
|
|
||||||
token: String,
|
|
||||||
sessionId: String,
|
|
||||||
) {
|
|
||||||
call {
|
|
||||||
client
|
|
||||||
.post()
|
|
||||||
.uri("/api/v1/defenses/{id}/reset", sessionId)
|
|
||||||
.header(HttpHeaders.AUTHORIZATION, bearer(token))
|
|
||||||
.retrieve()
|
|
||||||
.toBodilessEntity()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun ApiClient.myDefenses(token: String): List<DefenseDto> {
|
|
||||||
val type = object : ParameterizedTypeReference<List<DefenseDto>>() {}
|
|
||||||
return call {
|
|
||||||
client
|
|
||||||
.get()
|
|
||||||
.uri("/api/v1/me/defenses")
|
|
||||||
.header(HttpHeaders.AUTHORIZATION, bearer(token))
|
|
||||||
.retrieve()
|
|
||||||
.body(type)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun ApiClient.myDefense(
|
|
||||||
token: String,
|
|
||||||
labId: String,
|
|
||||||
): DefenseDto? =
|
|
||||||
callOrNull {
|
|
||||||
client
|
|
||||||
.get()
|
|
||||||
.uri("/api/v1/me/defenses/{labId}", labId)
|
|
||||||
.header(HttpHeaders.AUTHORIZATION, bearer(token))
|
|
||||||
.retrieve()
|
|
||||||
.body(DefenseDto::class.java)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun ApiClient.startDefense(
|
|
||||||
token: String,
|
|
||||||
code: String,
|
|
||||||
): DefenseDto =
|
|
||||||
call {
|
|
||||||
client
|
|
||||||
.post()
|
|
||||||
.uri("/api/v1/me/defenses/start")
|
|
||||||
.header(HttpHeaders.AUTHORIZATION, bearer(token))
|
|
||||||
.contentType(MediaType.APPLICATION_JSON)
|
|
||||||
.body(mapOf("code" to code))
|
|
||||||
.retrieve()
|
|
||||||
.body(DefenseDto::class.java)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun ApiClient.finishDefense(
|
|
||||||
token: String,
|
|
||||||
sessionId: String,
|
|
||||||
): DefenseDto =
|
|
||||||
call {
|
|
||||||
client
|
|
||||||
.post()
|
|
||||||
.uri("/api/v1/me/defenses/{id}/finish", sessionId)
|
|
||||||
.header(HttpHeaders.AUTHORIZATION, bearer(token))
|
|
||||||
.contentType(MediaType.APPLICATION_JSON)
|
|
||||||
.retrieve()
|
|
||||||
.body(DefenseDto::class.java)
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user