当前位置: 首页>>代码示例>>Scala>>正文


Scala RequestContext类代码示例

本文整理汇总了Scala中akka.http.scaladsl.server.RequestContext的典型用法代码示例。如果您正苦于以下问题:Scala RequestContext类的具体用法?Scala RequestContext怎么用?Scala RequestContext使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了RequestContext类的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Scala代码示例。

示例1: Demo1

//设置package包名称以及导入依赖的类
package lew.bing.akka.http

import akka.actor.ActorSystem
import akka.http.scaladsl.Http
import akka.http.scaladsl.model._
import akka.http.scaladsl.server.{Directive, RequestContext, Route, RouteResult}
import akka.http.scaladsl.server.Directives._
import akka.stream.ActorMaterializer
import akka.stream.scaladsl.Flow

import scala.io.StdIn


object Demo1 {

  def main(args: Array[String]): Unit = {
    implicit val system = ActorSystem("my-http")
    implicit val materializer = ActorMaterializer()
    // needed for the future flatMap/onComplete in the end
    implicit val executionContext = system.dispatcher



    val route:Route =
      path("hello"){
        get {
          complete(HttpEntity(ContentTypes.`text/html(UTF-8)`,"<h1>Say hello to akka-http</h1>"))
        }
      }
    val map = Flow[RequestContext].map(route)
    //???????????
    val bindingFuture = Http().bindAndHandle(route,"localhost",9898)
    println(s"Server online at http://localhost:9898/\nPress RETURN to stop...")
    StdIn.readLine() // let it run until user presses return
    bindingFuture
      .flatMap(_.unbind()) // trigger unbinding from the port
      .onComplete(_ => system.terminate()) // and shutdown when done
  }

} 
开发者ID:liuguobing634,项目名称:akka,代码行数:41,代码来源:Demo1.scala

示例2: DRoute

//设置package包名称以及导入依赖的类
package akka.http.documenteddsl

import akka.http.documenteddsl.documentation.Documentation
import akka.http.scaladsl.server.{RequestContext, _}

import scala.concurrent.Future

class DRoute(
  underlying: Route,
  writer: Documentation => Documentation = identity) extends Route {

  def selfDescribe(doc: Documentation): Documentation = writer apply doc
  override def apply(ctx: RequestContext): Future[RouteResult] = underlying apply ctx
  override def toString = "DocumentedRoute()"
}

object DRoute {
  def apply(r: Route) = new DRoute(r)
  def maybe(r: Route): DRoute = {
    r match {
      case r: DRoute => r
      case _ => new DRoute(r)
    }
  }
  def copyDocumentation(from: DRoute, to: Route): DRoute = new DRoute(to, from.selfDescribe)
} 
开发者ID:evolution-gaming,项目名称:akka-http-documenteddsl,代码行数:27,代码来源:DRoute.scala

示例3: ImperativeRequestContext

//设置package包名称以及导入依赖的类
package org.cristal.api.helper

import akka.http.scaladsl.marshalling.ToResponseMarshallable
import akka.http.scaladsl.model.{ContentTypes, HttpEntity}
import akka.http.scaladsl.server.Directives.complete
import akka.http.scaladsl.server.{RequestContext, Route, RouteResult, StandardRoute}
import scala.concurrent.Promise


final class ImperativeRequestContext(ctx: RequestContext, promise: Promise[RouteResult]) {
  private implicit val ec = ctx.executionContext
  def complete(obj: ToResponseMarshallable): Unit = ctx.complete(obj).onComplete(promise.complete)
  def fail(error: Throwable): Unit = ctx.fail(error).onComplete(promise.complete)
}

trait ApiHelper {

  def notImplementedResponse(msg: String = ""): StandardRoute =
    complete(HttpEntity(ContentTypes.`text/html(UTF-8)`,
      s"<h1>We plan to support this resource soon.</h1>"))

  def imperativelyComplete(inner: ImperativeRequestContext => Unit): Route = { ctx: RequestContext =>
    val p = Promise[RouteResult]()
    inner(new ImperativeRequestContext(ctx, p))
    p.future
  }

} 
开发者ID:frecano,项目名称:cristal,代码行数:29,代码来源:ApiHelper.scala

示例4: RequestProcessingActor

//设置package包名称以及导入依赖的类
package wyt.backend.server

import akka.actor.ActorLogging
import akka.actor.Actor
import akka.actor.Actor._
import akka.actor.ActorRef
import akka.actor.ActorSystem
import akka.actor.Props
import java.util.Date
import akka.http.scaladsl.model.HttpRequest
import akka.http.scaladsl.server.RequestContext

class RequestProcessingActor[T](nextActor: Props) extends Actor with ActorLogging {
  implicit val system = ActorSystem()
  var returnTo:ActorRef = null
  def receive = {
    case ctx: RequestContext => {
      returnTo = sender
      log info "starting Request Processing... returnTo set to " + returnTo
      val a = context.actorOf(nextActor, nextActor.actorClass().getSimpleName)
      a ! RequestEvent(ctx)
    }
    case res: ResponseEvent => {
      log info "finishing Request Processing..."
      log info "returning msg hiXXX to " + returnTo
      returnTo ! "hiXXX"
    }
    case any:Any => {
      log error "??? received msg of type " + any.getClass().getName + " with value " + any.toString()
    }
  }
} 
开发者ID:evandor,项目名称:wyt.backend,代码行数:33,代码来源:RequestProcessingActor.scala

示例5: RequestProcessingActor

//设置package包名称以及导入依赖的类
package io.skysail.core.akka

import akka.actor.Actor
import akka.actor.ActorLogging
import akka.actor.ActorRef
import akka.actor.ActorSystem
import akka.actor.Props
import akka.actor.actorRef2Scala
import akka.http.scaladsl.server.RequestContext

class RequestProcessingActor[T](nextActor: Props) extends Actor with ActorLogging {
  
  var returnTo: ActorRef = null
  
  def receive = {
    case (ctx: RequestContext, actor: ActorRef) => receiveRequestContext(ctx, actor)
    case res: ResponseEvent[T] => receiveResponseEvent(res)
    case any: Any => log error "??? received msg of type " + any.getClass().getName + " with value " + any.toString()
  }
  
  private def receiveRequestContext(ctx: RequestContext, resourceActor: ActorRef) = {
    returnTo = sender
    val a = context.actorOf(nextActor, nextActor.actorClass().getSimpleName)
    a ! RequestEvent(ctx,resourceActor)
  }

  private def receiveResponseEvent(res: ResponseEvent[T]) = {
    println ("RESPONSE")
    println (res.resource)
    returnTo ! res
  }


} 
开发者ID:evandor,项目名称:skysail-core,代码行数:35,代码来源:RequestProcessingActor.scala

示例6: ApplicationActor

//设置package包名称以及导入依赖的类
package io.skysail.core.server

import akka.actor.{Actor, ActorLogging, ActorRef, PoisonPill, Props}
import java.util.concurrent.atomic.AtomicInteger

import akka.http.scaladsl.server.RequestContext
import io.skysail.core.akka.ResponseEvent
import io.skysail.core.model.ApplicationModel

object ApplicationActor {
  case class GetAppModel()
}
class ApplicationActor(appModel: ApplicationModel) extends Actor with ActorLogging {
  
  val cnt = new AtomicInteger(0)

  var nextActor: ActorRef = null
  val originalSender = sender
  var sendBackTo: ActorRef = null

  def receive = in

  import context._

  def in: Receive = {
    case (ctx:RequestContext,cls : Class[_])  => {
      log debug s"in AppActor... got message ($ctx, $cls)"
      sendBackTo = sender
      nextActor = context.actorOf(Props.apply(cls)) // ResourceActor, e.g. AppsResource
      nextActor ! ctx
      become(out)
    }
    case _: ApplicationActor.GetAppModel => sender ! appModel
    case msg: Any => log info s"IN: received unknown message '$msg' in ${this.getClass.getName}"
  }

  def out: Receive = {
    case _: ApplicationActor.GetAppModel => sender ! appModel
    case e: ResponseEvent[_] => {
      log debug "out AppActor... " + e
      log debug "sending to " + sendBackTo
      sendBackTo ! e
      //log info "stopping actor: " + chainRoot
      //context.stop(chainRoot)
      become(in)
      nextActor ! PoisonPill
    }
    case msg: Any => log info s"OUT: received unknown message '$msg' in ${this.getClass.getName}"
  }

  
} 
开发者ID:evandor,项目名称:skysail-core,代码行数:53,代码来源:ApplicationActor.scala

示例7: doRequest

//设置package包名称以及导入依赖的类
package com.github.aproxy.http

import akka.actor.ActorSystem
import akka.http.scaladsl.model.HttpResponse
import akka.http.scaladsl.server.RequestContext
import akka.http.scaladsl.{Http, HttpExt}
import akka.stream.ActorMaterializer
import akka.stream.scaladsl.{Flow, Sink, Source}
import com.github.aproxy.internal.AppConfig

import scala.concurrent.{ExecutionContext, Future}

trait ProxyServer {
  implicit val actorSystem: ActorSystem

  def doRequest(path: RequestContext, backOff: Int = 2)
               (implicit ec: ExecutionContext): Future[HttpResponse]

  protected def http: HttpExt

  protected def routerFlowMapper: Map[String, Flow[_, _, Future[_]]]
}

// TODO: Add backoff
class DefaultProxyServer(implicit val actorSystem: ActorSystem,
                         implicit val mat: ActorMaterializer) extends ProxyServer {
  override protected val http: HttpExt = Http(actorSystem)

  override protected val routerFlowMapper = AppConfig.routes.mapValues(route => http.outgoingConnection(route.base, route.port))

  override def doRequest(ctx: RequestContext, backoff: Int = 2)(implicit ec: ExecutionContext): Future[HttpResponse] = {
    routerFlowMapper.get(ctx.request.uri.path.toString) match {
      case Some(flow) => Source.single(ctx.request).via(flow).runWith(Sink.head)
      case _ => throw new Exception()
    }
  }
} 
开发者ID:burakkose,项目名称:akka-http-proxy,代码行数:38,代码来源:ProxyServer.scala

示例8: AutowireServer

//设置package包名称以及导入依赖的类
package server

import akka.http.scaladsl.server.Directives._
import akka.http.scaladsl.server.{RequestContext, RouteResult}
import akka.util.ByteString
import boopickle.Default._
import java.nio.ByteBuffer
import scala.concurrent.{Future, ExecutionContext}
import model.Api

object AutowireServer extends autowire.Server[ByteBuffer, Pickler, Pickler] {
  override def read[R: Pickler](p: ByteBuffer) = Unpickle[R].fromBytes(p)
  override def write[R: Pickler](r: R) = Pickle.intoBytes(r)
  
  def dispatch(url: List[String])(implicit ec: ExecutionContext): RequestContext => Future[RouteResult] =
    entity(as[ByteString]) { entity =>
      val service = InMemService
      val body = Unpickle[Map[String, ByteBuffer]].fromBytes(entity.asByteBuffer)
      val request: Future[ByteBuffer] = AutowireServer.route[Api](service)(autowire.Core.Request(url, body))
      onSuccess(request)(buffer => complete(ByteString(buffer)))
    }
} 
开发者ID:bbarker,项目名称:mhtml-todo-full-stack,代码行数:23,代码来源:AutowireServer.scala

示例9: SkillSlice

//设置package包名称以及导入依赖的类
package com.microworkflow.rest

import akka.actor.{ActorRefFactory, ActorSystem}
import akka.http.scaladsl.{Http, HttpExt}
import akka.http.scaladsl.model.{ContentTypes, HttpEntity, HttpResponse}
import akka.http.scaladsl.server.Directives._
import akka.http.scaladsl.server.{RequestContext, Route}
import akka.stream.Materializer
import com.microworkflow.rest.SkillHandler.ProcessRequest
import de.heikoseeberger.akkahttpcirce.CirceSupport._
import io.circe.Json
import io.circe.generic.auto._
import io.github.todokr.Emojipolation._
import akka.pattern.ask
import akka.util.Timeout

import scala.concurrent.duration._

class SkillSlice()(implicit actorSystem: ActorSystem, m: Materializer) {
  val http = Http()

  val routes: Route = {
    path("") {
      pathEnd {
        get {
          complete(HttpResponse(entity = HttpEntity(ContentTypes.`text/plain(UTF-8)`, emoji":+1:")))
        } ~ post {
          entity(as[Json]) { json ?
            val q = json
            processRequest(json)
          }
        }
      }
    }
  }

  def processRequest(json: Json): Route = {
    requestCotext: RequestContext ? {
      implicit val askTimeout: Timeout = 3456.millis
      val requestHandler = actorSystem.actorOf(SkillHandler.props(m, http))
      requestCotext.complete(requestHandler.ask(ProcessRequest(json)).mapTo[Json])
    }
  }


} 
开发者ID:polymorphic,项目名称:shakey,代码行数:47,代码来源:SkillSlice.scala


注:本文中的akka.http.scaladsl.server.RequestContext类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。