This is the documentation for the lolhttp library.
HTML templating.
HTML templating.
val items: List[Item] = ??? val content: Html = tmpl""" <h1>Items</h1> @if(items.isEmpty) { <em>No results</em> } else { <ul> @items.map { item => <li>@item.name</li> } } """
Html values can also be easily created from the html interpolation. Conversion from Scala values is done via the ToHtml type class.
val content: Html = html"""Hello $${name}!"""
They will be encoded as lol.http.Content
thanks to Html.encoder.
The core module for lolhttp.
The core module for lolhttp.
Server.listen(8888) { request => Ok("Hello world!") } Client.run(Get("http://localhost:8888/")) { response => response.readAs[String] }
Provides an HTTP Client and an HTTP Server. Both client and server are Service functions. A service function takes a Request and eventually returns a Response. Requests and responses are shared between the client and the server API, making it easy to assemble them. Both are seen as a set of HTTP headers, and a Content body.
The content fs2.Stream
is based on fs2
and can be lazily consumed if needed.
It can be encoded and decoded using the appropriate ContentEncoder and ContentDecoder.
SSL is supported on both sides.
Provides integration with the circe JSON library.
Provides integration with the circe JSON library.
Server.listen(8888) { request => request.readAs(json[MyRequestData]).flatMap { data => Ok(MyResponseData(data).asJson) } }
Nothing really special here. Just a bunch of useful lol.http.ContentEncoder
and
lol.http.ContentDecoder
for io.circe.Json
values.
This module is optional and you can easily use another scala JSON library by providing the required encoder/decoder (or treating JSON as string).