Skip to content

Commit 3074ab9

Browse files
authored
Merge pull request #45 from codacy/add-refresh-token-endpoint
Add endpoint to refresh the access_token
2 parents 50eaaa7 + 4993eba commit 3074ab9

File tree

3 files changed

+58
-0
lines changed

3 files changed

+58
-0
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.codacy.client.bitbucket.v2
2+
3+
import play.api.libs.functional.syntax._
4+
import play.api.libs.json.{Reads, __}
5+
6+
case class AccessToken(access_token: String, refresh_token: String)
7+
8+
object AccessToken {
9+
implicit val reader: Reads[AccessToken] = (
10+
(__ \ "access_token").read[String] and
11+
(__ \ "refresh_token").read[String]
12+
)(AccessToken.apply _)
13+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.codacy.client.bitbucket.v2
2+
3+
import play.api.libs.json.{Json, Writes}
4+
5+
object Authorization {
6+
7+
sealed trait RefreshCredentials
8+
9+
case class RefreshToken(refresh_token: String) extends RefreshCredentials {
10+
val grant_type = "refresh_token"
11+
}
12+
13+
object RefreshToken {
14+
implicit val writer: Writes[RefreshToken] = Json.writes[RefreshToken]
15+
}
16+
17+
object RefreshCredentials {
18+
implicit val writer: Writes[RefreshCredentials] =
19+
Writes[RefreshCredentials] {
20+
case c: RefreshToken => Json.toJson(c)(RefreshToken.writer)
21+
}
22+
}
23+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.codacy.client.bitbucket.v2.service
2+
3+
import com.codacy.client.bitbucket.client.{BitbucketClient, Request, RequestResponse}
4+
import com.codacy.client.bitbucket.v2.AccessToken
5+
import com.codacy.client.bitbucket.v2.Authorization.RefreshCredentials
6+
import play.api.libs.json._
7+
8+
class AuthorizationServices(client: BitbucketClient) {
9+
10+
/*
11+
* Gets new AccessToken with the RefreshCredentials
12+
*
13+
*/
14+
def refreshAccessToken(
15+
credentials: RefreshCredentials): RequestResponse[AccessToken] = {
16+
val url = s"https://bitbucket.org/site/oauth2/access_token"
17+
18+
val values = Json.toJson[RefreshCredentials](credentials)
19+
20+
client.postJson(Request(url, classOf[AccessToken]), values)
21+
}
22+
}

0 commit comments

Comments
 (0)