Skip to content
This repository has been archived by the owner on Feb 19, 2021. It is now read-only.

Commit

Permalink
moved DRequest and DResult into protocol
Browse files Browse the repository at this point in the history
  • Loading branch information
kailuowang committed Oct 7, 2016
1 parent 05b9287 commit 584c0d1
Show file tree
Hide file tree
Showing 17 changed files with 75 additions and 66 deletions.
Expand Up @@ -6,7 +6,7 @@ import akka.actor.{PoisonPill, ActorRef, ActorRefFactory}
import akka.routing.RoundRobinGroup
import akka.util.Timeout
import asobu.distributed.protocol.EndpointDefinition
import asobu.distributed.{RequestParams, DRequest, DResult}
import asobu.distributed.protocol.{RequestParams, DRequest, DResult}
import asobu.distributed.gateway.enricher.Interpreter
import asobu.distributed._
import asobu.dsl.{Extractor, ExtractResult}
Expand Down Expand Up @@ -95,7 +95,7 @@ abstract class Endpoint(
drRaw dRequestER
dr enricher(drRaw)
result ExtractResult.fromEitherF((handlerRef ? dr).map {
case r: DResult Right(r.toResult) //todo
case r: DResult Right(DResult.toResult(r)) //todo
case m Left(InternalServerError(s"Unsupported result from backend ${m.getClass}"))
})
} yield result
Expand Down
Expand Up @@ -2,7 +2,7 @@ package asobu.distributed.gateway.enricher

import javax.inject.Inject

import asobu.distributed.DRequest
import asobu.distributed.protocol.DRequest
import asobu.distributed.RequestEnricherDefinition
import asobu.distributed.RequestEnricherDefinition.{OrElse, AndThen}
import asobu.distributed.gateway._
Expand Down
@@ -1,6 +1,6 @@
package asobu.distributed.gateway.enricher

import asobu.distributed.DRequest
import asobu.distributed.protocol.DRequest
import asobu.distributed.gateway.RequestEnricher
import asobu.dsl.{ExtractResult, Extractor}
import Extractor._
Expand Down
@@ -1,5 +1,6 @@
package asobu.distributed

import asobu.distributed.protocol.DRequest
import asobu.dsl.Extractor

package object gateway {
Expand Down
51 changes: 0 additions & 51 deletions distributed/src/main/scala/asobu/distributed/package.scala
Expand Up @@ -13,54 +13,3 @@ package object distributed {
type Body = play.api.mvc.AnyContent //use Array[Byte] or other serializable data structure

}

package distributed {

import play.api.mvc.{Request, AnyContent}

case class HttpStatus(code: Int) extends AnyVal

case class DRequest(
requestParams: RequestParams,
body: Body,
headers: Headers = Nil
)

object DRequest {
def apply(params: RequestParams, request: Request[Body]): DRequest =
DRequest(params, request.body, request.headers.headers)
}

case class RequestParams(
pathParams: Map[String, String],
queryString: Map[String, Seq[String]]
)

object RequestParams {
lazy val empty = RequestParams(Map.empty, Map.empty)
}

case class DResult(
status: HttpStatus,
headers: Headers = Nil,
body: Array[Byte] = Array.empty
) {
def toResult =
Result(new ResponseHeader(status.code, headers.toMap), HttpEntity.Strict(ByteString(body), None))
}

object DResult {

def from(result: Result)(implicit mat: Materializer): Future[DResult] = {
import scala.concurrent.ExecutionContext.Implicits.global
result.body.consumeData.map { data
DResult(
HttpStatus(result.header.status),
result.header.headers.toSeq,
data.toArray[Byte]
)
}
}

}
}
@@ -0,0 +1,59 @@
package asobu.distributed.protocol

import akka.stream.Materializer
import akka.util.ByteString
import asobu.distributed.Headers

import play.api.http.HttpEntity
import play.api.mvc.{ResponseHeader, Result, Request, AnyContent}

import scala.concurrent.Future

@SerialVersionUID(1L)
case class HttpStatus(code: Int) extends AnyVal

@SerialVersionUID(1L)
case class DRequest(
requestParams: RequestParams,
body: AnyContent,
headers: Headers = Nil
)

@SerialVersionUID(1L)
case class RequestParams(
pathParams: Map[String, String],
queryString: Map[String, Seq[String]]
)

@SerialVersionUID(1L)
case class DResult(
status: HttpStatus,
headers: Headers = Nil,
body: Array[Byte] = Array.empty
)

object DRequest {
def apply(params: RequestParams, request: Request[AnyContent]): DRequest =
DRequest(params, request.body, request.headers.headers)
}

object RequestParams {
lazy val empty = RequestParams(Map.empty, Map.empty)
}

object DResult {
def toResult(dr: DResult): Result =
Result(new ResponseHeader(dr.status.code, dr.headers.toMap), HttpEntity.Strict(ByteString(dr.body), None))

def from(result: Result)(implicit mat: Materializer): Future[DResult] = {
import scala.concurrent.ExecutionContext.Implicits.global
result.body.consumeData.map { data
DResult(
HttpStatus(result.header.status),
result.header.headers.toSeq,
data.toArray[Byte]
)
}
}

}
Expand Up @@ -7,7 +7,7 @@ import akka.stream.Materializer
import akka.util.ByteString
import asobu.distributed.protocol.{HandlerAddress, EndpointDefinition, Prefix}
import asobu.distributed.service.extractors.DRequestExtractor
import asobu.distributed.{DResult, DRequest}
import asobu.distributed.protocol.{DResult, DRequest}
import asobu.distributed._
import play.api.http.HttpEntity
import play.api.mvc.{AnyContent, ResponseHeader, Result}
Expand Down
@@ -1,7 +1,7 @@
package asobu.distributed.service

import asobu.distributed.service.extractors.DRequestExtractor
import asobu.distributed.{RequestParams, DRequest}
import asobu.distributed.protocol.{RequestParams, DRequest}
import asobu.distributed.service.DRequestExtractor.{RequestParamsExtractor, BodyExtractor}
import asobu.dsl._
import asobu.dsl.extractors.JsonBodyExtractor
Expand Down
Expand Up @@ -3,7 +3,7 @@ package asobu.distributed.service
import akka.actor.{ActorRef, ActorSystem}
import akka.util.Timeout
import asobu.distributed.service.extractors.DRequestExtractor
import asobu.distributed.{DRequest, DResult}
import asobu.distributed.protocol.{DResult, DRequest}
import asobu.distributed.{RequestEnricherDefinition, Headers}
import asobu.dsl.{ExtractResult, Extractor, ExtractorFunctions}
import play.api.libs.json.{Json, Reads, Writes}
Expand Down
@@ -1,6 +1,6 @@
package asobu.distributed.service.extractors

import asobu.distributed.DRequest
import asobu.distributed.protocol.DRequest
import asobu.dsl._
import asobu.dsl.util.Read
import CatsInstances._
Expand Down
@@ -1,6 +1,6 @@
package asobu.distributed.service

import asobu.distributed.DRequest
import asobu.distributed.protocol.DRequest
import asobu.dsl.Extractor

package object extractors {
Expand Down
Expand Up @@ -12,7 +12,7 @@ import asobu.distributed.util.SpecWithActorCluster
import asobu.dsl.{ExtractResult, Extractor, RequestExtractor}
import play.api.libs.json.{JsNumber, JsString, Json}
import play.api.mvc.Results._

import asobu.distributed.protocol.{DRequest, DResult}
import concurrent.duration._

import scala.util.Random
Expand Down
Expand Up @@ -2,7 +2,7 @@ package asobu.distributed.gateway

import akka.testkit.TestProbe
import asobu.distributed.protocol.EndpointDefinition
import asobu.distributed.{DRequest, DResult}
import asobu.distributed.protocol.{DResult, DRequest}
import asobu.distributed.util.{EndpointUtil, SpecWithActorCluster}
import asobu.distributed.protocol.Prefix
import asobu.distributed.service.EndpointRoutesParser
Expand Down
@@ -1,7 +1,7 @@
package asobu.distributed.service

import asobu.distributed.service.extractors.DRequestExtractor
import asobu.distributed.{RequestParams, DRequest, util}
import asobu.distributed.protocol.{RequestParams, DRequest}
import asobu.distributed.util.SerializableTest
import org.specs2.concurrent.ExecutionEnv
import org.specs2.mutable.Specification
Expand Down
@@ -1,6 +1,6 @@
package asobu.distributed.service

import asobu.distributed.RequestParams
import asobu.distributed.protocol.RequestParams
import org.specs2.concurrent.ExecutionEnv
import org.specs2.mutable.Specification
import shapeless._
Expand Down
Expand Up @@ -7,7 +7,7 @@ import akka.util.Timeout
import asobu.distributed.protocol.Prefix
import asobu.distributed.protocol.EndpointDefinition
import asobu.distributed.service.DRequestExtractorSpec._
import asobu.distributed.{DRequest, RequestParams, util}
import asobu.distributed.protocol.{DRequest, RequestParams}
import asobu.distributed.util.{MockRoute, ScopeWithActor, SerializableTest, SpecWithActorCluster}

import asobu.dsl.extractors.JsonBodyExtractor
Expand Down
2 changes: 1 addition & 1 deletion example/frontend/app/cross/ExampleInterpreter.scala
Expand Up @@ -3,7 +3,7 @@ package cross
import javax.inject.{Inject, Singleton}

import api.{Authenticated, ExampleEnricher}
import asobu.distributed.DRequest
import asobu.distributed.protocol.DRequest
import asobu.distributed.gateway.RequestEnricher
import asobu.distributed.gateway.RequestEnricher
import asobu.distributed.gateway.enricher.{RequestEnricher, Interpreter}
Expand Down

0 comments on commit 584c0d1

Please sign in to comment.