Skip to content

Commit 95376d0

Browse files
committed
Generalize RequestResponse and BitbucketClient
1 parent d210635 commit 95376d0

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

src/main/scala/com/codacy/client/client/BitbucketClient.scala

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ class BitbucketClient(credentials: Credentials)(implicit materializer: Materiali
5454
(FIRST_PAGE + 1 to lastPage).par.map { page =>
5555
val nextUrl = new URI(request.url).addQuery(s"page=$page").toString
5656
get(nextUrl) match {
57-
case Right(json) => extractValues(json)
57+
case Right(nextJson) => extractValues(nextJson)
5858
case Left(error) => FailedResponse(error.detail)
5959
}
6060
}.to[Seq]
@@ -105,13 +105,14 @@ class BitbucketClient(credentials: Credentials)(implicit materializer: Materiali
105105
FailedResponse(message.detail)
106106
}
107107
} else {
108+
println(Json.parse(result.body) \ "message")
108109
FailedResponse(result.statusText)
109110
}
110111

111112
value
112113
}
113114

114-
def postForm[T](request: Request[T], values: Map[String, Seq[String]])(implicit reader: Reads[T]): RequestResponse[T] = {
115+
def postForm[D, T](request: Request[T], values: D)(implicit reader: Reads[T], writer: BodyWritable[D]): RequestResponse[T] = {
115116
performRequest("POST", request, values)
116117
}
117118

@@ -155,6 +156,7 @@ class BitbucketClient(credentials: Credentials)(implicit materializer: Materiali
155156
val body = result.body
156157
parseJson(body)
157158
} else {
159+
println(Json.parse(result.body) \ "error" \ "message")
158160
Left(ResponseError(java.util.UUID.randomUUID().toString, result.statusText, result.statusText))
159161
}
160162

src/main/scala/com/codacy/client/client/RequestResponse.scala

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,19 @@
11
package com.codacy.client.client
22

3-
sealed trait RequestResponse[+A]
3+
sealed trait RequestResponse[+A] {
4+
5+
def map[B](f: A => B): RequestResponse[B] = {
6+
flatMap(a => RequestResponse.success(f(a)))
7+
}
8+
9+
def flatMap[B](f: A => RequestResponse[B]): RequestResponse[B] = {
10+
this match {
11+
case SuccessfulResponse(a) => f(a)
12+
case e: FailedResponse => e
13+
}
14+
}
15+
16+
}
417

518
case class SuccessfulResponse[A](value: A) extends RequestResponse[A]
619

0 commit comments

Comments
 (0)