diff options
Diffstat (limited to 'gpg/skeybase/src/main/scala/com/github/jodersky/skeybase/Keybase.scala')
-rw-r--r-- | gpg/skeybase/src/main/scala/com/github/jodersky/skeybase/Keybase.scala | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/gpg/skeybase/src/main/scala/com/github/jodersky/skeybase/Keybase.scala b/gpg/skeybase/src/main/scala/com/github/jodersky/skeybase/Keybase.scala index bfc246e..4a2e4ba 100644 --- a/gpg/skeybase/src/main/scala/com/github/jodersky/skeybase/Keybase.scala +++ b/gpg/skeybase/src/main/scala/com/github/jodersky/skeybase/Keybase.scala @@ -17,7 +17,9 @@ import spray.json.JsValue import spray.json.RootJsonFormat object Keybase { - def origin = new Keybase("https://keybase.io") + + //private JSON responses + protected case class LookupResponse(them: Seq[User]) object JsonProtocol extends DefaultJsonProtocol { implicit val basicsFormat = jsonFormat1(Basics.apply) @@ -45,16 +47,23 @@ object Keybase { } } -class Keybase(host: String) { - +/** + * Keybase.io API entry point. + * @param host the internet host implementing the Keybase API, defaults to "https://keybase.io" + */ +class Keybase(host: String = "https://keybase.io") { + import Keybase._ import Keybase.JsonProtocol._ + + private val entry = host + "/_/api/1.0/" + /** Retrieves a user from keybase */ def lookup(username: String)(implicit system: ActorSystem): Future[User] = { import system.dispatcher - val lookup = sendReceive ~> unmarshal[LookupResponse] - val url = host + "/_/api/1.0/user/lookup.json?usernames=" + username + "&fields=proofs_summary,public_keys" + val url = entry + "user/lookup.json?usernames=" + username + "&fields=proofs_summary,public_keys" + val lookup = sendReceive ~> unmarshal[LookupResponse] lookup(Get(url)).map(_.them.head) } |