|
Play Framework/Scala example source code file (JavaResults.scala)
The JavaResults.scala Play Framework example source code/* * Copyright (C) 2009-2013 Typesafe Inc. <http://www.typesafe.com> */ package play.core.j import scala.language.reflectiveCalls import play.api.mvc._ import play.api.http._ import play.api.libs.iteratee._ import play.api.libs.iteratee.Concurrent._ import play.mvc.Http.{ Cookies => JCookies, Cookie => JCookie, Session => JSession, Flash => JFlash } import play.mvc.{ Result => JResult } import play.twirl.api.Content import scala.collection.JavaConverters._ import scala.concurrent.Await import scala.concurrent.duration._ import play.core.Execution.Implicits.internalContext /** * Java compatible Results */ object JavaResults extends Results with DefaultWriteables with DefaultContentTypeOfs { def writeContent(mimeType: String)(implicit codec: Codec): Writeable[Content] = Writeable(content => codec.encode(contentBody(content)), Some(ContentTypes.withCharset(mimeType))) def contentBody(content: Content): String = content match { case xml: play.twirl.api.Xml => xml.body.trim; case c => c.body } def writeString(mimeType: String)(implicit codec: Codec): Writeable[String] = Writeable(s => codec.encode(s), Some(ContentTypes.withCharset(mimeType))) def writeString(implicit codec: Codec): Writeable[String] = writeString(MimeTypes.TEXT) def writeJson(implicit codec: Codec): Writeable[com.fasterxml.jackson.databind.JsonNode] = Writeable(json => codec.encode(json.toString), Some(ContentTypes.JSON)) def writeBytes: Writeable[Array[Byte]] = Writeable.wBytes def writeBytes(contentType: String): Writeable[Array[Byte]] = Writeable((bs: Array[Byte]) => bs)(contentTypeOfBytes(contentType)) def writeEmptyContent: Writeable[Results.EmptyContent] = writeableOf_EmptyContent def contentTypeOfBytes(mimeType: String): ContentTypeOf[Array[Byte]] = ContentTypeOf(Option(mimeType).orElse(Some("application/octet-stream"))) def emptyHeaders = Map.empty[String, String] def empty = Results.EmptyContent() def chunked[A](onConnected: play.libs.F.Callback[Channel[A]], onDisconnected: play.libs.F.Callback0): Enumerator[A] = { Concurrent.unicast[A]( onStart = (channel: Channel[A]) => onConnected.invoke(channel), onComplete = onDisconnected.invoke(), onError = (_: String, _: Input[A]) => onDisconnected.invoke() ) } //play.api.libs.iteratee.Enumerator.imperative[A](onComplete = onDisconnected) def chunked(stream: java.io.InputStream, chunkSize: Int): Enumerator[Array[Byte]] = Enumerator.fromStream(stream, chunkSize) def chunked(file: java.io.File, chunkSize: Int) = Enumerator.fromFile(file, chunkSize) def sendFile(status: play.api.mvc.Results.Status, file: java.io.File, inline: Boolean, filename: String) = status.sendFile(file, inline, _ => filename) } object JavaResultExtractor { def getCookies(result: JResult): JCookies = new JCookies { private val cookies = Cookies(headers(result).get(HeaderNames.SET_COOKIE)) def get(name: String): JCookie = { cookies.get(name).map(makeJavaCookie).orNull } private def makeJavaCookie(cookie: Cookie): JCookie = { new JCookie(cookie.name, cookie.value, cookie.maxAge.map(i => new Integer(i)).orNull, cookie.path, cookie.domain.orNull, cookie.secure, cookie.httpOnly) } def iterator: java.util.Iterator[JCookie] = { cookies.toIterator.map(makeJavaCookie).asJava } } def getSession(result: JResult): JSession = new JSession(Session.decodeFromCookie( Cookies(headers(result).get(HeaderNames.SET_COOKIE)).get(Session.COOKIE_NAME) ).data.asJava) def getFlash(result: JResult): JFlash = new JFlash(Flash.decodeFromCookie( Cookies(headers(result).get(HeaderNames.SET_COOKIE)).get(Flash.COOKIE_NAME) ).data.asJava) def getHeaders(result: JResult): java.util.Map[String, String] = headers(result).asJava def getBody(result: JResult, timeout: Long): Array[Byte] = Await.result(result.toScala.body |>>> Iteratee.consume[Array[Byte]](), timeout.millis) private def headers(result: JResult) = result.toScala.header.headers } Other Play Framework source code examplesHere is a short list of links related to this Play Framework JavaResults.scala source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.