• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Scala Method类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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



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

示例1: HttpTips

//设置package包名称以及导入依赖的类
package com.bob.scalatour.twitters

import com.twitter.finagle.transport.Transport
import com.twitter.finagle.{Http, Service}
import com.twitter.finagle.http.{Method, Response, Request}
import com.twitter.finagle.loadbalancer.{Balancers, LoadBalancerFactory}
import com.twitter.util.{Await => twitterAwait, Monitor}

object HttpTips {

  def main(args: Array[String]) {
    val balancer: LoadBalancerFactory = Balancers.heap()

    val monitor: Monitor = new Monitor {
      override def handle(exc: Throwable): Boolean = {
        // do sth with the exception
        true
      }
    }

    val client: Service[Request, Response] = Http.client
      .withMonitor(monitor)
      .withLoadBalancer(balancer)
      // It’s important to disable Fail Fast when only have one host in the replica set
      // because Finagle doesn’t have any other path to choose.
      .withSessionQualifier.noFailFast
      .configured(Transport.Options(noDelay = false, reuseAddr = false))
      .newService("172.16.40.68:8090,172.16.40.69:8090", "riskservice")

    val request = Request(Method.Get, "/calculator/users/together?userId=1234&date=2015-12-12&bbb=bbb")
    // here we should set the host header value even it is empty,otherwise it will nothing can obtain
    request.headerMap.add("host", "")
    (1 to 20).map {
      z => {
        println(s"now is the ${z} request to send")
        val response = client(request)
        twitterAwait.ready(response.map(x => println(x.contentString)))
      }
    }

    val url = Request.queryString("/calculator/users/together", Map("userId" -> "314", "date" -> "2015", "bbb" -> "bbb"))
    println(url) // url value will be: /calculator/users/together?userId=314&date=2015&bbb=bbb
    println("http invoke done")
  }
} 
开发者ID:bobxwang,项目名称:scalatour,代码行数:46,代码来源:HttpTips.scala


示例2: PluginsTests

//设置package包名称以及导入依赖的类
package uk.co.appministry.scathon.client

import uk.co.appministry.scathon.testServer.plugins.TestPlugin
import com.twitter.finagle.http.{Method, Status}

class PluginsTests extends TestBase {

  "Plugins Tests" should {

    "retrieve a list of plugins" in {
      val testPlugin = new TestPlugin
      whenReady( client.getPlugins() ) { plugins =>
        plugins.length shouldBe(1)
        inside( plugins(0) ) {
          case plugin =>
            plugin.id shouldBe(testPlugin.info.id)
            plugin.implementation shouldBe(testPlugin.info.implementation)
        }
      }
    }

    "send a request and get a response from a plugin" in {
      whenReady( client.pluginExecuteRequest(Method.Get, "test-plugin", Some("/the/path/does/not/matter/here")) ) { response =>
        response.status shouldBe(Status.Ok)
        response.contentString shouldBe("GET")
      }
    }

    "receive an error for an unsupported method" in {
      whenReady(client.pluginExecuteRequest(Method.Head, "test-plugin", Some("/the/path/does/not/matter/here")).failed) { ex =>
        ex shouldBe a[NotAllowed]
        inside(ex.asInstanceOf[NotAllowed]) {
          case e =>
            e.status shouldBe(Status.MethodNotAllowed)
        }
      }
    }

  }

} 
开发者ID:AppMinistry,项目名称:scathon,代码行数:42,代码来源:PluginsTests.scala


示例3: StatusEndpointTest

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

import com.twitter.finagle.http.{Response, Method, Request}
import com.twitter.util.Await
import placeholder.base.IntegrationTestBase

class StatusEndpointTest extends IntegrationTestBase {

  feature("Server status endpoint") {
    scenario("returns server uptime") {
      Given("the server is running")

      val path = "/status"
      val responseFuture = performRequest(Request(Method.Get, path))
      When(s"I do a HTTP GET to '$path'")

      val response: Response = Await.result(responseFuture)
      response.statusCode shouldBe 200
      Then("the response should have statuscode 200")
    }
  }
} 
开发者ID:scala-academy,项目名称:skeleton-project,代码行数:23,代码来源:StatusEndpointTest.scala


示例4: TickServices

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

import mon4all.db._

import com.twitter.finagle.http.{Method, HttpMuxer, Request, Response}
import com.twitter.finagle.{Http, Service, ListeningServer}
import com.twitter.finagle.http
import com.twitter.finagle.http.filter.Cors
import com.twitter.finagle.http.service.RoutingService
import com.twitter.finagle.http.path._
import com.twitter.server.TwitterServer
import com.twitter.util.{Await, Future}

import org.json4s._
import org.json4s.JsonDSL._
import org.json4s.jackson.JsonMethods._

object TickServices {
  import Helpers._
  
  def getJobItem(jobName: String, itemName: String) = service {
    req => http.Response(req.version, http.Status.Ok)
  }



  case class TickJob(id: Long, name: String) {
    def toJValue = (("id" -> id) ~ ("name" -> name))
  }

  val tickJobs = compact(
    List(TickJob(1, "FA Purchase Score BT"),
      TickJob(2, "Sim Birth BT"),
      TickJob(3, "FA Daily Recompute"),
      TickJob(10, "Cash Credit Daily"),
      TickJob(20, "Usage Profiling"),
      TickJob(30, "Some Spark Shell"),
      TickJob(40, "PySpark Notebook"))
      .map(_.toJValue))

  def getTickJobs = service {
    req => {
      val resp = http.Response(req.version, http.Status.Ok)
      resp.setContentString(tickJobs)
      resp
    }
  }


} 
开发者ID:dansuzuki,项目名称:mon4all,代码行数:51,代码来源:TickServices.scala


示例5: HttpStreamingClient

//设置package包名称以及导入依赖的类
package com.twitter.finagle.example.http

import com.twitter.concurrent.AsyncStream
import com.twitter.util.{Await, Base64StringEncoder => Base64}
import com.twitter.finagle.http.{Request, Method, Status}
import com.twitter.finagle.Http
import com.twitter.io.{Buf, Reader}


object HttpStreamingClient {
  def main(args: Array[String]): Unit = {
    val username = args(0)
    val password = args(1)
    val host = args(2)
    val path = args(3)

    val client = Http.client.withStreaming(enabled = true).newService(host)

    val request = Request(Method.Get, path)
    val userpass = username + ":" + password
    request.headerMap.add("Authorization", "Basic " + Base64.encode(userpass.getBytes("UTF-8")))
    request.headerMap.add("User-Agent", "Finagle 0.0")
    request.headerMap.add("Host", host)
    println(request)

    Await.result(client(request).flatMap {
      case response if response.status != Status.Ok =>
        println(response)
        client.close()

      case response =>
        var messageCount = 0 // Wait for 1000 messages then shut down.
        fromReader(response.reader).foreach {
          case Buf.Utf8(buf) if messageCount < 1000 =>
            messageCount += 1
            println(buf)
            println("--")

          case _ =>
            client.close()
        }
    })
  }

  def fromReader(reader: Reader): AsyncStream[Buf] =
    AsyncStream.fromFuture(reader.read(Int.MaxValue)).flatMap {
      case None => AsyncStream.empty
      case Some(a) => a +:: fromReader(reader)
    }
} 
开发者ID:wenkeyang,项目名称:finagle,代码行数:51,代码来源:HttpStreamingClient.scala


示例6: ServiceConsumer

//设置package包名称以及导入依赖的类
package com.twitter.finagle.example.zookeeper

import java.io.ByteArrayInputStream
import java.nio.charset.StandardCharsets

import com.twitter.finagle.Http
import com.twitter.finagle.example.zookeeper.ServiceProvider.EchoServer
import com.twitter.finagle.http.{Method, Request, Version}
import com.twitter.io.Reader
import com.twitter.util.Await


object ServiceConsumer {

  def main(args: Array[String]): Unit = {

    //use zookeeper to discover service
    val client = Http.client
      .withSessionPool.maxSize(10)
      .newService(ServiceProvider.buildConsumerPath(EchoServer.servicePath), "echo-client")

    //create a "Greetings!" request.
    val data = Reader.fromStream(new ByteArrayInputStream("Greetings!".getBytes(StandardCharsets.UTF_8)))
    val request = Request(Version.Http11, Method.Post, "/", data)

    Await.ready(client(request)) onSuccess { response =>
      println(s"response status: ${response.status}, response string: ${response.contentString} ")
    } onFailure { e =>
      println(s"error: $e")
    } ensure {
      client.close()
    }

  }
} 
开发者ID:wenkeyang,项目名称:finagle,代码行数:36,代码来源:ServiceConsumer.scala


示例7: MethodRequiredFilter

//设置package包名称以及导入依赖的类
package com.twitter.finagle.http.filter

import com.twitter.finagle.{Service, SimpleFilter}
import com.twitter.finagle.http.{Method, Request, Response, Status}
import com.twitter.util.Future


class MethodRequiredFilter[REQUEST <: Request](
   val supportedMethods: Set[Method] = Set(Method.Get, Method.Head, Method.Post))
 extends SimpleFilter[REQUEST, Response] {

  private[this] val allowedMethods = supportedMethods.mkString(", ").toUpperCase

  def apply(request: REQUEST, service: Service[REQUEST, Response]): Future[Response] =
    if (!supportedMethods.contains(request.method)) {
      val response = request.response
      response.status = Status.MethodNotAllowed
      response.allow = allowedMethods
      Future.value(response)
    } else {
      service(request)
    }
}


object MethodRequiredFilter
  extends MethodRequiredFilter[Request](Set(Method.Get, Method.Head, Method.Post)) 
开发者ID:wenkeyang,项目名称:finagle,代码行数:28,代码来源:MethodRequiredFilter.scala


示例8: RoutingService

//设置package包名称以及导入依赖的类
package com.twitter.finagle.http.service

import com.twitter.finagle.Service
import com.twitter.finagle.http.{Request, Response, Method}
import com.twitter.finagle.http.path.Path
import com.twitter.util.Future


class RoutingService[REQUEST <: Request](
     val routes: PartialFunction[Request, Service[REQUEST, Response]])
  extends Service[REQUEST, Response] {

  // Try routes, fall back to 404 Not Found
  protected[this] val notFoundService = new NotFoundService[REQUEST]
  protected[this] val notFoundPf: PartialFunction[REQUEST, Service[REQUEST, Response]] = {
    case _ => notFoundService
  }
  protected[this] val requestToService: PartialFunction[REQUEST, Service[REQUEST, Response]] =
    routes.orElse(notFoundPf)

  def apply(request: REQUEST): Future[Response] = {
    val service = requestToService(request)
    service(request)
  }
}


object RoutingService {
  def byPath[REQUEST](routes: PartialFunction[String, Service[REQUEST, Response]]) =
    new RoutingService(
      new PartialFunction[Request, Service[REQUEST, Response]] {
        def apply(request: Request): Service[REQUEST, Response] = routes(request.path)
        def isDefinedAt(request: Request): Boolean = routes.isDefinedAt(request.path)
      })

  def byPathObject[REQUEST](routes: PartialFunction[Path, Service[REQUEST, Response]]) =
    new RoutingService(
      new PartialFunction[Request, Service[REQUEST, Response]] {
        def apply(request: Request): Service[REQUEST, Response] = routes(Path(request.path))
        def isDefinedAt(request: Request): Boolean =
          routes.isDefinedAt(Path(request.path))
      })

  def byMethodAndPath[REQUEST](routes: PartialFunction[(Method, String), Service[REQUEST, Response]]) =
    new RoutingService(
      new PartialFunction[Request, Service[REQUEST, Response]] {
        def apply(request: Request): Service[REQUEST, Response] =
          routes((request.method, request.path))
        def isDefinedAt(request: Request): Boolean =
          routes.isDefinedAt((request.method, request.path))
      })

  def byMethodAndPathObject[REQUEST](routes: PartialFunction[(Method, Path), Service[REQUEST, Response]]) =
    new RoutingService(
      new PartialFunction[Request, Service[REQUEST, Response]] {
        def apply(request: Request): Service[REQUEST, Response] =
          routes((request.method, Path(request.path)))
        def isDefinedAt(request: Request): Boolean =
          routes.isDefinedAt((request.method, Path(request.path)))
      })
} 
开发者ID:wenkeyang,项目名称:finagle,代码行数:62,代码来源:RoutingService.scala


示例9: MethodRequiredFilterTest

//设置package包名称以及导入依赖的类
package com.twitter.finagle.http.filter

import com.twitter.finagle.Service
import com.twitter.finagle.http.{Method, Request, Response, Status}
import com.twitter.util.{Await, Future}
import org.junit.runner.RunWith
import org.scalatest.FunSuite
import org.scalatest.junit.JUnitRunner

@RunWith(classOf[JUnitRunner])
class MethodRequiredFilterTest extends FunSuite {

  val dummyService = new Service[Request, Response] {
    def apply(request: Request): Future[Response] = {
      val response = request.response
      request.params.get("exception").foreach(e => {
        response.write("exception thrown")
        throw new Exception()
      })
      request.params.get("code") match {
        case Some(code) => response.statusCode = code.toInt
        case None       => response.status     = Status.Ok
      }
      Future.value(response)
    }
  }

  val filter = new MethodRequiredFilter[Request](Set(Method.Post))

  test("return 407 when disallowed method is used") {
    val request = Request()
    request.method = Method.Get
    val response = Await.result(filter(request, dummyService))
    assert(response.status == Status.MethodNotAllowed)
    assert(response.headers.get("Allow") == "POST")
  }

  test("return 200 when allowed method is used") {
    val request = Request()
    request.method = Method.Post
    val response = Await.result(filter(request, dummyService))
    assert(response.status == Status.Ok)
  }
} 
开发者ID:wenkeyang,项目名称:finagle,代码行数:45,代码来源:MethodRequiredFilterTest.scala


示例10: HeadFilterTest

//设置package包名称以及导入依赖的类
package com.twitter.finagle.http.filter

import com.twitter.finagle.Service
import com.twitter.finagle.http.{Method, Request, Response, Status}
import com.twitter.util.{Await, Future}
import org.junit.runner.RunWith
import org.scalatest.FunSuite
import org.scalatest.junit.JUnitRunner

@RunWith(classOf[JUnitRunner])
class HeadFilterTest extends FunSuite {
  val Body = "hello world"

  val dummyService = new Service[Request, Response] {
   def apply(request: Request) = {
     assert(request.method == Method.Get)

     val response = Response(request)
     response.status = Status.Ok
     response.write(Body)
     Future.value(response)
   }
  }

  test("convert GET to HEAD") {
    val request = Request("/test.json")
    request.method = Method.Head

    val response = Await.result(HeadFilter(request, dummyService))
    assert(request.method == Method.Head) // unchanged
    assert(response.contentLength == Some(Body.length))
    assert(response.contentString == "")
  }

  test("GET is normal") {
    val request = Request("/test.json")

    val response = Await.result(HeadFilter(request, dummyService))
    request.method == Method.Get // unchanged
    assert(response.contentLength == None)
    assert(response.contentString == Body)
  }
} 
开发者ID:wenkeyang,项目名称:finagle,代码行数:44,代码来源:HeadFilterTest.scala


示例11: JsonpFilterTest

//设置package包名称以及导入依赖的类
package com.twitter.finagle.http.filter

import com.twitter.finagle.Service
import com.twitter.finagle.http.{MediaType, Method, Request, Response, Status}
import com.twitter.util.{Await, Future}
import org.junit.runner.RunWith
import org.scalatest.FunSuite
import org.scalatest.junit.JUnitRunner

@RunWith(classOf[JUnitRunner])
class JsonpFilterTest extends FunSuite {

  val dummyService = new Service[Request, Response] {
    def apply(request: Request): Future[Response] = {
      val response = request.response
      response.status = Status.Ok
      if (request.params.contains("not_json"))
        response.mediaType = "not_json"
      else
        response.mediaType = MediaType.Json
      response.write("{}")
      Future.value(response)
    }
  }

  test("wrap json") {
    val request = Request("/test.json", "callback" -> "mycallback")
    val response = Await.result(JsonpFilter(request, dummyService))

    assert(response.contentType   == Some("application/javascript"))
    assert(response.contentString == "/**/mycallback({});")
  }

  test("ignore non-json") {
    val request = Request("/test.json", "callback" -> "mycallback", "not_json" -> "t")
    val response = Await.result(JsonpFilter(request, dummyService))

    assert(response.mediaType     == Some("not_json"))
    assert(response.contentString == "{}")
    assert(response.contentType   == Some("not_json"))
  }

  test("ignore HEAD") {
    val request = Request("/test.json", "callback" -> "mycallback")
    request.method = Method.Head

    val response = Await.result(JsonpFilter(request, dummyService))
    assert(response.contentType   == Some("application/json"))
    assert(response.contentString == "{}")
  }

  test("ignore empty callback") {
    // Search Varnish sets callback to blank.  These should not be wrapped.
    val request = Request("/test.json", "callback" -> "")

    val response = Await.result(JsonpFilter(request, dummyService))
    assert(response.contentType   == Some("application/json"))
    assert(response.contentString == "{}")
  }
} 
开发者ID:wenkeyang,项目名称:finagle,代码行数:61,代码来源:JsonpFilterTest.scala


示例12: HttpResponderSpec

//设置package包名称以及导入依赖的类
package io.livingston.ditto.http

import java.net.ServerSocket

import com.twitter.finagle.Http
import com.twitter.finagle.http.{Method, Request}
import com.twitter.util.Await
import org.scalatest.{BeforeAndAfter, Matchers, WordSpec}

class HttpResponderSpec extends WordSpec with Matchers with BeforeAndAfter {
  val s = new ServerSocket(0)
  val port = s.getLocalPort
  s.close()
  val yaml =
    s"""
       |---
       |http:
       |- port: $port
       |  endpoints:
       |  - uri: "/get"
       |    method: "GET"
       |    status: 200
       |    body: "OK"
       |    latency:
       |      min: 10
       |      max: 50
    """.stripMargin

  val server = new HttpResponder()

  before {
    server.apply(yaml)
  }

  after {
    server.close()
  }

  "Http config" should {
    "respond correctly to http requests" in {
      val client = Http.newService(s":$port")
      val response = Await.result(client(Request(Method.Get, "/get")))
      response.statusCode should be(200)
      response.contentString should be("OK")
    }
  }
} 
开发者ID:scottlivingston,项目名称:ditto,代码行数:48,代码来源:HttpResponderSpec.scala


示例13: HttpRequestLabellerSpec

//设置package包名称以及导入依赖的类
package com.samstarling.prometheusfinagle.filter

import com.samstarling.prometheusfinagle.UnitTest
import com.twitter.finagle.http.{Method, Request, Response, Status}
import org.specs2.specification.Scope

class HttpRequestLabellerSpec extends UnitTest {

  trait Context extends Scope {
    val request = Request(Method.Get, "/foo/bar")
    val response = Response(Status.Ok)
    val labeller = new HttpRequestLabeller()
    val labels = labeller.labelsFor(request, response)
  }

  "keys" >> {
    "returns the keys in the correct order" in new Context {
      labeller.keys ==== Seq("status", "statusClass", "method")
    }
  }

  "labelsFor" >> {
    "returns the status code of the response" in new Context {
      labels(0) ==== "200"
    }

    "returns the status class of the request" in new Context {
      labels(1) ==== "2xx"
    }

    "returns the method of the request" in new Context {
      labels(2) ==== "GET"
    }
  }
} 
开发者ID:samstarling,项目名称:finagle-prometheus,代码行数:36,代码来源:HttpRequestLabellerSpec.scala


示例14: MetricsServiceSpec

//设置package包名称以及导入依赖的类
package com.samstarling.prometheusfinagle.metrics

import com.samstarling.prometheusfinagle.UnitTest
import com.twitter.finagle.http.{Method, Request}
import com.twitter.util.Await
import io.prometheus.client.CollectorRegistry
import org.specs2.specification.Scope

import scala.collection.JavaConverters._

class MetricsServiceSpec extends UnitTest {

  trait Context extends Scope {
    val registry = new CollectorRegistry(true)
    val telemetry = new Telemetry(registry, "unit_test")
    val service = new MetricsService(registry.metricFamilySamples.asScala.toList)
  }

  "it renders metrics correctly" in new Context {
    telemetry.counter("foo").inc()
    val request = Request(Method.Get, "/")
    val response = Await.result(service.apply(request))

    response.getContentString.trim ====
      "# HELP unit_test_foo No help provided\n" +
      "# TYPE unit_test_foo counter\n" +
      "unit_test_foo 1.0"
  }
} 
开发者ID:samstarling,项目名称:finagle-prometheus,代码行数:30,代码来源:MetricsServiceSpec.scala


示例15: HttpClient

//设置package包名称以及导入依赖的类
import com.twitter.finagle.Http
import com.twitter.finagle.http.{Method, Request, Version}
import com.twitter.util.{Await, Future}

class HttpClient {
  lazy val client = Http.client
    .withLabel("finagle-client")
    .newService("localhost:9999")

  private def requestHandler(request: Request) = client(request).map(_.contentString)

  def get(url: String): Future[String] = {
    val request = Request(Version.Http11, Method.Get, url)
    requestHandler(request)
  }

  def post(url: String, payload: String) = {
    val request = Request(Version.Http11, Method.Post, url)
    request.setContentString(payload)
    requestHandler(request)
  }
}
object HttpClient {
  def apply() = new HttpClient()
}


object FinagleClient {

  val httpClient = HttpClient()

  def main(args: Array[String]) {
    //do get request
    Await.ready(httpClient get "/ping") onSuccess { responseString =>
      println(s"got: $responseString from get /ping")
    }

    //do post request
    Await.ready(httpClient post ("/ping","myPayload")) onSuccess { responseString =>
      println(s"got: $responseString from post /ping")
    }

  }
} 
开发者ID:divanvisagie,项目名称:finagle-http-example,代码行数:45,代码来源:Main.scala


示例16: JsonpFilter

//设置package包名称以及导入依赖的类
package com.twitter.finagle.http.filter

import com.twitter.finagle.{Service, SimpleFilter}
import com.twitter.finagle.http.{MediaType, Method, Request, Response}
import com.twitter.util.Future
import org.jboss.netty.buffer.ChannelBuffers



class JsonpFilter[REQUEST <: Request] extends SimpleFilter[REQUEST, Response] {

  def apply(request: REQUEST, service: Service[REQUEST, Response]): Future[Response] = {
    getCallback(request) match {
      case Some(callback) =>
        service(request) onSuccess { response =>
          if (response.mediaType == Some(MediaType.Json)) {
            response.content =
              ChannelBuffers.wrappedBuffer(
                ChannelBuffers.wrappedBuffer(callback.getBytes("UTF-8")),
                ChannelBuffers.wrappedBuffer(JsonpFilter.LeftParen),
                response.getContent,
                ChannelBuffers.wrappedBuffer(JsonpFilter.RightParenSemicolon))
            response.mediaType = MediaType.Javascript
          }
        }
      case None =>
        service(request)
    }
  }

  def getCallback(request: Request): Option[String] = {
    // Ignore HEAD, though in practice this should be behind the HeadFilter
    if (request.method != Method.Head)
      request.params.get("callback") flatMap { callback =>
        val sanitizedCallback = JsonpFilter.SanitizerRegex.replaceAllIn(callback, "")
        if (!sanitizedCallback.isEmpty)
          Some(sanitizedCallback)
        else
          None
      }
    else
      None
  }
}


object JsonpFilter extends JsonpFilter[Request] {
  // Sanitize to prevent cross domain policy attacks and such
  private val SanitizerRegex = """[^\/\@\.\[\]\:\w\d]""".r

  // Reuse left/right paren.  The semicolon may not be strictly necessary, but
  // some APIs include it.
  private val LeftParen  = Array('('.toByte)
  private val RightParenSemicolon = ");".getBytes
} 
开发者ID:deenar,项目名称:fintest,代码行数:56,代码来源:JsonpFilter.scala


示例17: HeadFilter

//设置package包名称以及导入依赖的类
package com.twitter.finagle.http.filter

import com.twitter.finagle.{Service, SimpleFilter}
import com.twitter.finagle.http.{Method, Request, Response}
import com.twitter.util.Future
import org.jboss.netty.buffer.ChannelBuffers



class HeadFilter[REQUEST <: Request] extends SimpleFilter[REQUEST, Response] {

  def apply(request: REQUEST, service: Service[REQUEST, Response]): Future[Response] =
    if (request.method == Method.Head) {
      // Require nothing has been written
      require(request.response.getContent eq ChannelBuffers.EMPTY_BUFFER)

      // Convert to GET and forward
      request.setMethod(Method.Get)
      service(request) map { response =>
        // Set Content-Length on success
        response.contentLength = response.length
        response
      } ensure {
        // Ensure method is HEAD and has no content
        request.method = Method.Head
        request.response.clearContent()
      }
    } else {
      service(request)
    }
}


object HeadFilter extends HeadFilter[Request] 
开发者ID:deenar,项目名称:fintest,代码行数:35,代码来源:HeadFilter.scala


示例18: MethodRequiredFilter

//设置package包名称以及导入依赖的类
package com.twitter.finagle.http.filter

import com.twitter.finagle.{Service, SimpleFilter}
import com.twitter.finagle.http.{Method, Request, Response, Status}
import com.twitter.util.Future
import org.jboss.netty.handler.codec.http.HttpMethod



class MethodRequiredFilter[REQUEST <: Request](
   val supportedMethods: Set[HttpMethod] = Set(Method.Get, Method.Head, Method.Post))
 extends SimpleFilter[REQUEST, Response] {

  private[this] val allowedMethods = supportedMethods.mkString(", ")

  def apply(request: REQUEST, service: Service[REQUEST, Response]): Future[Response] =
    if (!supportedMethods.contains(request.getMethod)) {
      val response = request.response
      response.status = Status.MethodNotAllowed
      response.allow = allowedMethods
      Future.value(response)
    } else {
      service(request)
    }
}


object MethodRequiredFilter
  extends MethodRequiredFilter[Request](Set(Method.Get, Method.Head, Method.Post)) 
开发者ID:deenar,项目名称:fintest,代码行数:30,代码来源:MethodRequiredFilter.scala


示例19: HeadFilterSpec

//设置package包名称以及导入依赖的类
package com.twitter.finagle.http.filter

import com.twitter.finagle.Service
import com.twitter.finagle.http.{Method, Request, Response, Status}
import com.twitter.util.Future
import org.specs.SpecificationWithJUnit

class HeadFilterSpec extends SpecificationWithJUnit {
  val Body = "hello world"

  val dummyService = new Service[Request, Response] {
   def apply(request: Request) = {
     request.method must be_==(Method.Get)
     val response = request.response
     response.status = Status.Ok
     response.write(Body)
     Future.value(response)
   }
  }

  "HeadFilter" should {
    "convert GET to HEAD" in {
      val request = Request("/test.json")
      request.method = Method.Head

      val response = HeadFilter(request, dummyService)()
      request.method must be_==(Method.Head) // unchanged
      response.contentLength must be_==(Some(Body.length))
      response.contentString must be_==("")
    }

    "GET is normal" in {
      val request = Request("/test.json")

      val response = HeadFilter(request, dummyService)()
      request.method must be_==(Method.Get) // unchanged
      response.contentLength must be_==(None)
      response.contentString must be_==(Body)
    }
  }
} 
开发者ID:deenar,项目名称:fintest,代码行数:42,代码来源:HeadFilterSpec.scala


示例20: MethodRequiredFilterSpec

//设置package包名称以及导入依赖的类
package com.twitter.finagle.http.filter

import com.twitter.finagle.Service
import com.twitter.finagle.http.{Method, Request, Response, Status}
import com.twitter.util.Future
import org.specs.SpecificationWithJUnit

class MethodRequiredFilterSpec extends SpecificationWithJUnit {

  val dummyService = new Service[Request, Response] {
    def apply(request: Request): Future[Response] = {
      val response = request.response
      request.params.get("exception").foreach(e => {
        response.write("exception thrown")
        throw new Exception()
      })
      request.params.get("code") match {
        case Some(code) => response.statusCode = code.toInt
        case None       => response.status     = Status.Ok
      }
      Future.value(response)
    }
  }

  val filter = new MethodRequiredFilter[Request](Set(Method.Post))

  "disable filter" should {
    "return 407 when disallowed method is used" in {
      val request = Request()
      request.method = Method.Get
      val response = filter(request, dummyService)()
      response.status must_== Status.MethodNotAllowed
      response.headers.get("Allow").get must be_==("POST")
    }

    "return 200 when allowed method is used" in {
      val request = Request()
      request.method = Method.Post
      val response = filter(request, dummyService)()
      response.status must_== Status.Ok
    }
  }
} 
开发者ID:deenar,项目名称:fintest,代码行数:44,代码来源:MethodRequiredFilterSpec.scala



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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Scala Buffer类代码示例发布时间:2022-05-23
下一篇:
Scala Rep类代码示例发布时间:2022-05-23
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap