!htc move scala side WebsocketUpgradeResponse to scaladsl.model.ws

This makes it consistent with the java side and cleans up scaladsl.Http.
This commit is contained in:
Johannes Rudolph 2015-10-22 09:06:09 +02:00
parent 4a5610e282
commit c040e2b69e
6 changed files with 26 additions and 21 deletions

View file

@ -4,9 +4,8 @@
package akka.http.impl.engine.ws package akka.http.impl.engine.ws
import akka.http.scaladsl.model.ws.WebsocketRequest import akka.http.scaladsl.model.ws._
import scala.collection.immutable
import scala.concurrent.{ Future, Promise } import scala.concurrent.{ Future, Promise }
import akka.util.ByteString import akka.util.ByteString
@ -19,8 +18,7 @@ import akka.stream.scaladsl._
import akka.http.ClientConnectionSettings import akka.http.ClientConnectionSettings
import akka.http.scaladsl.Http import akka.http.scaladsl.Http
import akka.http.scaladsl.Http.{ InvalidUpgradeResponse, ValidUpgrade, WebsocketUpgradeResponse } import akka.http.scaladsl.model.{ HttpResponse, HttpMethods }
import akka.http.scaladsl.model.{ HttpHeader, HttpResponse, HttpMethods, Uri }
import akka.http.scaladsl.model.headers.Host import akka.http.scaladsl.model.headers.Host
import akka.http.impl.engine.parsing.HttpMessageParser.StateResult import akka.http.impl.engine.parsing.HttpMessageParser.StateResult

View file

@ -628,7 +628,7 @@ class Http(system: ExtendedActorSystem) extends akka.actor.Extension {
JavaMapping.adapterBidiFlow[Message, sm.ws.Message, sm.ws.Message, Message] JavaMapping.adapterBidiFlow[Message, sm.ws.Message, sm.ws.Message, Message]
.atopMat(wsLayer)((_, s) adaptWsUpgradeResponse(s))) .atopMat(wsLayer)((_, s) adaptWsUpgradeResponse(s)))
private def adaptWsFlow(wsLayer: stream.scaladsl.Flow[sm.ws.Message, sm.ws.Message, Future[scaladsl.Http.WebsocketUpgradeResponse]]): Flow[Message, Message, Future[WebsocketUpgradeResponse]] = private def adaptWsFlow(wsLayer: stream.scaladsl.Flow[sm.ws.Message, sm.ws.Message, Future[scaladsl.model.ws.WebsocketUpgradeResponse]]): Flow[Message, Message, Future[WebsocketUpgradeResponse]] =
Flow.adapt(JavaMapping.adapterBidiFlow[Message, sm.ws.Message, sm.ws.Message, Message].joinMat(wsLayer)(Keep.right).mapMaterializedValue(adaptWsUpgradeResponse _)) Flow.adapt(JavaMapping.adapterBidiFlow[Message, sm.ws.Message, sm.ws.Message, Message].joinMat(wsLayer)(Keep.right).mapMaterializedValue(adaptWsUpgradeResponse _))
private def adaptWsFlow[Mat](javaFlow: Flow[Message, Message, Mat]): stream.scaladsl.Flow[scaladsl.model.ws.Message, scaladsl.model.ws.Message, Mat] = private def adaptWsFlow[Mat](javaFlow: Flow[Message, Message, Mat]): stream.scaladsl.Flow[scaladsl.model.ws.Message, scaladsl.model.ws.Message, Mat] =
@ -637,10 +637,10 @@ class Http(system: ExtendedActorSystem) extends akka.actor.Extension {
.viaMat(javaFlow.asScala)(Keep.right) .viaMat(javaFlow.asScala)(Keep.right)
.map(_.asScala) .map(_.asScala)
private def adaptWsResultTuple[T](result: (Future[scaladsl.Http.WebsocketUpgradeResponse], T)): Pair[Future[WebsocketUpgradeResponse], T] = private def adaptWsResultTuple[T](result: (Future[scaladsl.model.ws.WebsocketUpgradeResponse], T)): Pair[Future[WebsocketUpgradeResponse], T] =
result match { result match {
case (fut, tMat) Pair(adaptWsUpgradeResponse(fut), tMat) case (fut, tMat) Pair(adaptWsUpgradeResponse(fut), tMat)
} }
private def adaptWsUpgradeResponse(responseFuture: Future[scaladsl.Http.WebsocketUpgradeResponse]): Future[WebsocketUpgradeResponse] = private def adaptWsUpgradeResponse(responseFuture: Future[scaladsl.model.ws.WebsocketUpgradeResponse]): Future[WebsocketUpgradeResponse] =
responseFuture.map(WebsocketUpgradeResponse.adapt)(system.dispatcher) responseFuture.map(WebsocketUpgradeResponse.adapt)(system.dispatcher)
} }

View file

@ -6,7 +6,7 @@ package akka.http.javadsl.model.ws
import akka.http.javadsl.model.HttpResponse import akka.http.javadsl.model.HttpResponse
import akka.http.scaladsl import akka.http.scaladsl
import akka.http.scaladsl.Http.{ InvalidUpgradeResponse, ValidUpgrade } import akka.http.scaladsl.model.ws.{ InvalidUpgradeResponse, ValidUpgrade }
import akka.japi.Option import akka.japi.Option
/** /**
@ -36,7 +36,7 @@ trait WebsocketUpgradeResponse {
object WebsocketUpgradeResponse { object WebsocketUpgradeResponse {
import akka.http.impl.util.JavaMapping.Implicits._ import akka.http.impl.util.JavaMapping.Implicits._
def adapt(scalaResponse: scaladsl.Http.WebsocketUpgradeResponse): WebsocketUpgradeResponse = def adapt(scalaResponse: scaladsl.model.ws.WebsocketUpgradeResponse): WebsocketUpgradeResponse =
scalaResponse match { scalaResponse match {
case ValidUpgrade(response, chosen) case ValidUpgrade(response, chosen)
new WebsocketUpgradeResponse { new WebsocketUpgradeResponse {

View file

@ -19,7 +19,7 @@ import akka.http.impl.util.{ ReadTheDocumentationException, Java6Compat, StreamU
import akka.http.impl.engine.ws.WebsocketClientBlueprint import akka.http.impl.engine.ws.WebsocketClientBlueprint
import akka.http.scaladsl.model._ import akka.http.scaladsl.model._
import akka.http.scaladsl.model.headers.Host import akka.http.scaladsl.model.headers.Host
import akka.http.scaladsl.model.ws.{ WebsocketRequest, Message } import akka.http.scaladsl.model.ws.{ WebsocketUpgradeResponse, WebsocketRequest, Message }
import akka.http.scaladsl.util.FastFuture import akka.http.scaladsl.util.FastFuture
import akka.japi import akka.japi
import akka.stream.Materializer import akka.stream.Materializer
@ -689,15 +689,6 @@ object Http extends ExtensionId[HttpExt] with ExtensionIdProvider {
*/ */
final case class OutgoingConnection(localAddress: InetSocketAddress, remoteAddress: InetSocketAddress) final case class OutgoingConnection(localAddress: InetSocketAddress, remoteAddress: InetSocketAddress)
/**
* Represents the response to a websocket upgrade request. Can either be [[ValidUpgrade]] or [[InvalidUpgradeResponse]].
*/
sealed trait WebsocketUpgradeResponse {
def response: HttpResponse
}
final case class ValidUpgrade(response: HttpResponse, chosenSubprotocol: Option[String]) extends WebsocketUpgradeResponse
final case class InvalidUpgradeResponse(response: HttpResponse, cause: String) extends WebsocketUpgradeResponse
/** /**
* Represents a connection pool to a specific target host and pool configuration. * Represents a connection pool to a specific target host and pool configuration.
*/ */

View file

@ -0,0 +1,16 @@
/*
* Copyright (C) 2009-2015 Typesafe Inc. <http://www.typesafe.com>
*/
package akka.http.scaladsl.model.ws
import akka.http.scaladsl.model.HttpResponse
/**
* Represents the response to a websocket upgrade request. Can either be [[ValidUpgrade]] or [[InvalidUpgradeResponse]].
*/
sealed trait WebsocketUpgradeResponse {
def response: HttpResponse
}
final case class ValidUpgrade(response: HttpResponse, chosenSubprotocol: Option[String]) extends WebsocketUpgradeResponse
final case class InvalidUpgradeResponse(response: HttpResponse, cause: String) extends WebsocketUpgradeResponse

View file

@ -6,7 +6,7 @@ package akka.http.impl.engine.ws
import java.util.Random import java.util.Random
import akka.http.scaladsl.Http.{ InvalidUpgradeResponse, WebsocketUpgradeResponse } import akka.http.scaladsl.model.ws.{ InvalidUpgradeResponse, WebsocketUpgradeResponse }
import scala.concurrent.duration._ import scala.concurrent.duration._
@ -14,7 +14,7 @@ import akka.http.ClientConnectionSettings
import akka.http.scaladsl.Http import akka.http.scaladsl.Http
import akka.http.scaladsl.model.headers.{ ProductVersion, `User-Agent` } import akka.http.scaladsl.model.headers.{ ProductVersion, `User-Agent` }
import akka.http.scaladsl.model.ws._ import akka.http.scaladsl.model.ws._
import akka.http.scaladsl.model.{ HttpResponse, Uri } import akka.http.scaladsl.model.Uri
import akka.stream.io._ import akka.stream.io._
import akka.stream.scaladsl._ import akka.stream.scaladsl._
import akka.stream.testkit.{ TestSubscriber, TestPublisher } import akka.stream.testkit.{ TestSubscriber, TestPublisher }