sttp-scribe - sttp backend for ScribeJava
A backend implementation for sttp that allows you to use ScribeJava as a backend. Now you can call OAuth endpoints using sttp!
Quickstart
Add sttp-scribe, sttp and Scribe to your project:
libraryDependencies ++= Seq(
"software.purpledragon" %% "sttp-scribe" % <version>,
"com.softwaremill.sttp.client" %% "core" % "2.1.2",
"com.github.scribejava" % "scribejava-apis" % "6.9.0",
)
Setup your Scribe service:
val service = new ServiceBuilder("api-key")
.apiSecret("api-secret")
.callback("http://www.example.com/oauth_callback/")
.build(GitHubApi.instance());
Create a token provider:
val tokenProvider = new OAuth2TokenProvider() {
private var currentToken: Option[OAuth2AccessToken] = None
override def accessTokenForRequest: OAuth2AccessToken = {
currentToken.getOrElse {
// fetch from DB or another source
}
}
override def tokenRenewed(newToken: OAuth2AccessToken): Unit = {
currentToken = Some(newToken)
// persist token to DB
}
}
Then create a ScribeOAuth20Backend
and use sttp to make authenticated calls:
implicit val backend: SttpBackend[Identity, Nothing, NothingT] =
new ScribeOAuth20Backend(service, tokenProvider)
val response = basicRequest
.get(uri"https://api.github.com/users/octocat")
.send()
The Scribe backend will take care of refreshing the access token when it expires and retrying the current API call.