package scalaz
package http
package servlet
import request.Request
trait StreamStreamServletApplication {
val application: ServletApplication[Stream, Stream]
}
import Scalaz._
import response.Response
import servlet.HttpServlet._
import response.OK
import response.StreamResponse.{response, statusLine}
object StreamStreamServletApplication {
def application(a: ServletApplication[Stream, Stream]) = new StreamStreamServletApplication {
val application = a
}
implicit def resourceOr(f: Request[Stream] => Option[Response[Stream]]) = new {
def or(otherwise: Request[Stream] => Response[Stream]): ServletApplication[Stream, Stream] =
new ServletApplication[Stream, Stream] {
def application(implicit servlet: HttpServlet, servletRequest: HttpServletRequest, request: Request[Stream]) =
f(request) | (request.path ? (in => response(statusLine(OK), in.toStream), otherwise(request)))
}
}
}