Add port field to the SearchResponse class

This commit is contained in:
ProtoByter 2022-12-07 08:13:10 +00:00
parent 3fc97ff6ea
commit 0ff94af54d
3 changed files with 14 additions and 11 deletions

View File

@ -37,4 +37,5 @@ data class SearchRequest(
@Serializable
data class SearchResponse(
val ip: String,
val port: Int,
)

View File

@ -128,22 +128,24 @@ fun Application.tracker() {
}
get("/protected/search") {
var request: SearchRequest? = null
val request: SearchRequest?
try {
request = call.receive()
} catch (e: Exception) {
call.respond(HttpStatusCode.BadRequest, "Invalid request")
return@get call.respond(HttpStatusCode.BadRequest, "Invalid request")
}
if (request != null) {
val client = DatabaseHandler.getClient(request!!.id)
val client = DatabaseHandler.getClient(request.id)
if (client!!.sampledClients == request!!.sampledClients) {
call.respond(HttpStatusCode.OK, SearchResponse(client.ip))
} else {
call.respond(HttpStatusCode.BadRequest, "Invalid request")
}
if (client!!.port == null) {
return@get call.respond(HttpStatusCode.BadRequest, "Invalid request")
}
if (client.sampledClients == request.sampledClients) {
return@get call.respond(HttpStatusCode.OK, SearchResponse(client.ip, client.port!!))
} else {
return@get call.respond(HttpStatusCode.BadRequest, "Invalid request")
}
}
}

View File

@ -192,7 +192,7 @@ class TrackerApplicationKtTest {
}
@Test
fun testSearchRequestCorrectBody() = testApplication {
fun testSearchRequestCorrectBodyNoPort() = testApplication {
val client = createClient {
install(ContentNegotiation) {
json()
@ -213,7 +213,7 @@ class TrackerApplicationKtTest {
)
basicAuth("00000000-0000-0000-0000-000000000001", pw_hash)
}.apply {
assertEquals(200, this.status.value)
assertEquals(400, this.status.value)
}
}
}