All Downloads are FREE. Search and download functionalities are using the official Maven repository.

skinny.engine.base.ParamsAccessor.scala Maven / Gradle / Ivy

The newest version!
package skinny.engine.base

import skinny.engine._
import skinny.engine.context.SkinnyEngineContext
import skinny.engine.implicits.ServletApiImplicits

/**
 * Provides params/multiParams DSL.
 */
trait ParamsAccessor extends ServletApiImplicits {

  /**
   * The current multi params.
   *
   * Multi params are a result of merging the standard request params (query string or post params) with the route
   * parameters extracted from the route matchers of the current route.
   * The default value for an unknown param is the empty sequence.
   * Invalid outside `handle`.
   */
  def multiParams(implicit ctx: SkinnyEngineContext): MultiParams = {
    val req = ctx.request
    val read = req.contains("MultiParamsRead")
    val found = req.get(MultiParamsKey) map (
      _.asInstanceOf[MultiParams] ++ (if (read) Map.empty else req.multiParameters)
    )
    val multi = found.getOrElse(req.multiParameters)
    req("MultiParamsRead") = new {}
    req(MultiParamsKey) = multi
    multi.withDefaultValue(Seq.empty)
  }

  def multiParams(key: String)(implicit ctx: SkinnyEngineContext): Seq[String] = multiParams(ctx)(key)

  def params(key: String)(implicit ctx: SkinnyEngineContext): String = params(ctx)(key)

  def params(key: Symbol)(implicit ctx: SkinnyEngineContext): String = params(ctx)(key)

  def params(implicit ctx: SkinnyEngineContext): Params = new EngineParams(multiParams(ctx))

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy