Skip to content
This repository has been archived by the owner on Sep 4, 2023. It is now read-only.

MideO/HttpClient

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HttpClient

Effectful Light-Weight Scala HttpClient

Build Status

Maven Central

Usage

Generate a effectful response from a given http request

# Define your entities

case class Payload(value: String)

case class Response(value: String)

# Define unit/identity function

implicit def unit[T]: T => Future[T] = t => Future(t)

# Create your request

val request = HttpRequest(
        Post,
        "http://localhost:8080/lalal",
        Map("aHeader" -> "value"),
        Payload("abc")
    )

val future: Future[Either[Throwable, HttpResponse[Response]]] = HttpRequestSender.send(request)

# Get you response
val eitherResponse: Either[Throwable, HttpResponse[Response]] = Await.result(future, 5 seconds)
eitherResponse.right.get.Entity


# Create Xml Request

val request = XmlHttpRequest(
        Post,
        "http://localhost:8080/lalal",
        Map("aHeader" -> "value"),
        Payload("abc")
    )

val future: Future[Either[Throwable, HttpResponse[Response]]] = HttpRequestSender.send(request)

# Get you response
val eitherResponse: Either[Throwable, HttpResponse[Response]] = result(future, 5 seconds)
eitherResponse.right.get.Entity


# Create Json Request

val request = JsonHttpRequest(
        Post,
        "http://localhost:8080/lalal",
        Map("aHeader" -> "value"),
        Payload("abc")
     )

# Use a different Monad

implicit def unit[T]: T => Option[T] = t => Some(t)

val option: Option[Either[Throwable, HttpResponse[Response]]] = HttpRequestSender.send(request)

# Get you response 

option.get.right.get.Entity