Packages

  • package root

    Provided herein is API documentation for Scamper, the HTTP library for Scala.

    Provided herein is API documentation for Scamper, the HTTP library for Scala.

    Definition Classes
    root
  • package scamper

    Defines core types.

    Defines core types.

    HTTP Messages

    At the core of Scamper is HttpMessage, which is a trait that defines the fundamental characteristics of an HTTP message. HttpRequest and HttpResponse extend the specification to define characteristics specific to their respective message types.

    An HttpRequest is created using a factory method defined in its companion object. Or you can start with a RequestMethod and use builder methods to further define the request.

    import scamper.Header
    import scamper.Implicits.stringToUri
    import scamper.RequestMethod.Registry.Get
    
    val request = Get("/motd").setHeaders(
      Header("Host: localhost:8080"),
      Header("Accept: text/plain")
    )
    
    printf("Request Method: %s%n", request.method)
    printf("Target URI: %s%n", request.target)
    
    request.headers.foreach(println)
    
    val host: Option[String] = request.getHeaderValue("Host")

    An HttpResponse is created using a factory method defined in its companion object. Or you can start with a ResponseStatus and use builder methods to further define the response.

    import scamper.{ BodyParser, Header }
    import scamper.Implicits.stringToEntity
    import scamper.ResponseStatus.Registry.Ok
    
    val response = Ok("There is an answer.").setHeaders(
      Header("Content-Type: text/plain"),
      Header("Connection: close")
    )
    
    printf("Status Code: %s%n", response.statusCode)
    printf("Reason Phrase: %s%n", response.reasonPhrase)
    
    response.headers.foreach(println)
    
    val contentType: Option[String] = response.getHeaderValue("Content-Type")
    
    implicit val parser = BodyParser.text()
    
    printf("Body: %s%n", response.as[String])
    Definition Classes
    root
  • package auth

    Provides specialized access to authentication headers.

    Provides specialized access to authentication headers.

    Challenges and Credentials

    When working with authentication, a Challenge is presented in the response, and Credentials in the request. Each of these has an assigned scheme, which is associated with either a token or a set of parameters.

    import scamper.Implicits.stringToUri
    import scamper.RequestMethod.Registry.Get
    import scamper.ResponseStatus.Registry.Unauthorized
    import scamper.auth.{ Authorization, Challenge, Credentials, WwwAuthenticate }
    
    // Present response challenge (scheme and parameters)
    val challenge = Challenge("Bearer", "realm" -> "developer")
    val res = Unauthorized().setWwwAuthenticate(challenge)
    
    // Present request credentials (scheme and token)
    val credentials = Credentials("Bearer", "QWxsIEFjY2VzcyEhIQo=")
    val req = Get("/dev/projects").setAuthorization(credentials)
    Basic Authentication

    There are subclasses defined for Basic authentication: BasicChallenge and BasicCredentials.

    import scamper.Implicits.stringToUri
    import scamper.RequestMethod.Registry.Get
    import scamper.ResponseStatus.Registry.Unauthorized
    import scamper.auth.{ Authorization, BasicChallenge, BasicCredentials, WwwAuthenticate }
    
    // Provide realm and optional parameters
    val challenge = BasicChallenge("admin", "title" -> "Admin Console")
    val res = Unauthorized().setWwwAuthenticate(challenge)
    
    // Provide user and password
    val credentials = BasicCredentials("sa", "l3tm31n")
    val req = Get("/admin/users").setAuthorization(credentials)

    In addition, there are methods for Basic authentication defined in the header classes.

    import scamper.Implicits.stringToUri
    import scamper.RequestMethod.Registry.Get
    import scamper.ResponseStatus.Registry.Unauthorized
    import scamper.auth.{ Authorization, WwwAuthenticate }
    
    // Provide realm and optional parameters
    val res = Unauthorized().setBasic("admin", "title" -> "Admin Console")
    
    // Access basic auth in response
    printf(s"Realm: %s%n", res.basic.realm)
    printf(s"Title: %s%n", res.basic.params("title"))
    
    // Provide user and password
    val req = Get("/admin/users").setBasic("sa", "l3tm3m1n")
    
    // Access basic auth in request
    printf(s"User: %s%n", req.basic.user)
    printf(s"Password: %s%n", req.basic.password)
    Bearer Authentication

    There are subclasses defined for Bearer authentication: BearerChallenge and BearerCredentials. In addition, there are Bearer-specific methods available in the header classes.

    import scamper.Implicits.stringToUri
    import scamper.RequestMethod.Registry.Get
    import scamper.ResponseStatus.Registry.Unauthorized
    import scamper.auth.{ Authorization, WwwAuthenticate }
    
    // Provide challenge parameters
    val res = Unauthorized().setBearer(
      "scope" -> "user profile",
      "error" -> "invalid_token",
      "error_description" -> "Expired access token"
    )
    
    // Print optional realm parameter
    res.bearer.realm.foreach(println)
    
    // Print scope from space-delimited parameter
    val scope: Seq[String] = res.bearer.scope
    scope.foreach(println)
    
    // Print error parameters
    res.bearer.error.foreach(println)
    res.bearer.errorDescription.foreach(println)
    res.bearer.errorUri.foreach(println)
    
    // Test for error conditions
    println(res.bearer.isInvalidToken)
    println(res.bearer.isInvalidRequest)
    println(res.bearer.isInsufficientScope)
    
    // Create request with Bearer token
    val req = Get("/users").setBearer("R290IDUgb24gaXQhCg==")
    
    // Access bearer auth in request
    printf("Token: %s%n", req.bearer.token)
    Definition Classes
    scamper
  • AuthType
  • AuthenticationInfo
  • Authorization
  • BasicChallenge
  • BasicCredentials
  • BearerChallenge
  • BearerCredentials
  • Challenge
  • Credentials
  • ProxyAuthenticate
  • ProxyAuthenticationInfo
  • ProxyAuthorization
  • WwwAuthenticate
t

scamper.auth

AuthType

sealed trait AuthType extends AnyRef

Base type for authentication header types.

Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. AuthType
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Abstract Value Members

  1. abstract def scheme: String

    Gets scheme.

Concrete Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  6. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  7. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  8. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  9. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  10. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  11. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  12. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  13. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  14. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  15. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  16. def toString(): String
    Definition Classes
    AnyRef → Any
  17. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  18. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  19. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()

Inherited from AnyRef

Inherited from Any

Ungrouped