diff --git a/kotlin-http-client/kotlin-http-client-api/pom.xml b/kotlin-http-client/kotlin-http-client-api/pom.xml index 343ddabb..2e3a76ed 100644 --- a/kotlin-http-client/kotlin-http-client-api/pom.xml +++ b/kotlin-http-client/kotlin-http-client-api/pom.xml @@ -16,7 +16,7 @@ com.google.code.gson gson - 2.10.1 + 2.2.2-atlassian-1 diff --git a/kotlin-jira-client/kotlin-jira-client-http/src/main/kotlin/com/linkedplanet/kotlinjiraclient/http/HttpJiraIssueOperator.kt b/kotlin-jira-client/kotlin-jira-client-http/src/main/kotlin/com/linkedplanet/kotlinjiraclient/http/HttpJiraIssueOperator.kt index 3f053eb4..f01ed067 100644 --- a/kotlin-jira-client/kotlin-jira-client-http/src/main/kotlin/com/linkedplanet/kotlinjiraclient/http/HttpJiraIssueOperator.kt +++ b/kotlin-jira-client/kotlin-jira-client-http/src/main/kotlin/com/linkedplanet/kotlinjiraclient/http/HttpJiraIssueOperator.kt @@ -46,7 +46,7 @@ class HttpJiraIssueOperator(private val context: HttpJiraClientContext) : JiraIs parser: suspend (JsonObject, Map) -> Either ): Either> = either { recursiveRestCallPaginatedRaw { index, maxSize -> - context.httpClient.executeRest( + context.httpClient.executeRestCall( "GET", "/rest/api/2/search", mapOf( @@ -56,10 +56,9 @@ class HttpJiraIssueOperator(private val context: HttpJiraClientContext) : JiraIs "expand" to queryParams.expanded.joinToString(","), ), null, - "application/json", - object : TypeToken() {}.type + "application/json" ) - .map { it.body!! } + .map { toHttpJiraIssuePage(it.body!!) } } .mapLeft { e -> JiraClientError.fromHttpDomainError(e) } .bind() @@ -80,17 +79,16 @@ class HttpJiraIssueOperator(private val context: HttpJiraClientContext) : JiraIs queryParams: IssueQueryParams, parser: suspend (JsonObject, Map) -> Either ): Either> = either { - val page = context.httpClient.executeGet( + val page = context.httpClient.executeGetCall( "/rest/api/2/search", mapOf( "jql" to jql, "startAt" to (pageIndex * pageSize).toString(), "maxResults" to pageSize.toString(), "expand" to queryParams.expanded.joinToString(","), - ), - object : TypeToken() {}.type + ) ) - .map { it.body!! } + .map { toHttpJiraIssuePage(it.body!!) } .mapLeft { JiraClientError.fromHttpDomainError(it) } .bind() @@ -306,6 +304,17 @@ class HttpJiraIssueOperator(private val context: HttpJiraClientContext) : JiraIs jsonBody } + private fun toHttpJiraIssuePage(jsonString: String): HttpJiraIssuePage { + val jsonObject = JsonParser().parse(jsonString).asJsonObject + return HttpJiraIssuePage( + jsonObject.get("maxResults").asInt, + jsonObject.get("startAt").asInt, + jsonObject.get("total").asInt, + jsonObject.get("issues")?.asJsonArray?.map { it }?.toTypedArray()?: arrayOf(), + jsonObject.get("names"), + ) + } + private class HttpJiraIssuePage( private val maxResults: Number, private val startAt: Number,