Last active
December 24, 2020 17:25
-
-
Save ayushworks/072fe66b8eb8f8380d03ab8b4f01f6ec to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
object ResponseDemo: | |
import javax.ws.rs.core.Response | |
trait HttpResponse[A]: | |
extension (a: A) def response: Response | |
object HttpResponse: | |
given stringResponse : HttpResponse[String] with | |
extension (str: String) | |
def response: Response = Response.status(Response.Status.OK).entity(str).build | |
given optHttpResponse[T : HttpResponse]: HttpResponse[Option[T]] with | |
extension (opt: Option[T]) | |
def response: Response = | |
opt match | |
case None => Response.status(404).build() | |
case Some(t) => summon[HttpResponse[T]].response(t) | |
end ResponseDemo | |
object Test2 extends App: | |
import ResponseDemo.HttpResponse.stringResponse | |
println("all is good".response) | |
val someValue: Option[String] = Some("all is good") | |
import ResponseDemo.HttpResponse.optHttpResponse | |
println(someValue.response) | |
val noValue: Option[String] = None | |
println(noValue.response) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment