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,