Skip to content

Commit

Permalink
dave - refactor of body
Browse files Browse the repository at this point in the history
  • Loading branch information
daviddenton committed Jun 8, 2015
1 parent 7b3bde2 commit dea8371
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 21 deletions.
5 changes: 1 addition & 4 deletions src/main/scala/io/fintrospect/parameters/Body.scala
Expand Up @@ -8,11 +8,8 @@ import org.jboss.netty.handler.codec.http.HttpRequest
import scala.util.Try

class Body private(val description: Option[String], val paramType: ParamType, val location: Location, val example: JsonNode, parse: (String => JsonNode))
extends RequestParameter[JsonNode, JsonNode] {
extends RequestParameter[JsonNode, JsonNode]("body", parse, true) {

override val required = true

override val name = "body"
override def from(request: HttpRequest): JsonNode = parse(location.from(null, request).get)

override def parseFrom(request: HttpRequest): Option[Try[JsonNode]] = Some(Try(from(request)))
Expand Down
24 changes: 7 additions & 17 deletions src/main/scala/io/fintrospect/parameters/RequestParameter.scala
Expand Up @@ -4,36 +4,26 @@ import org.jboss.netty.handler.codec.http.HttpRequest

import scala.util.Try

abstract class RequestParameter[T, X] extends Parameter[T] {
abstract class RequestParameter[T, X](val name: String, parse: (String => X), val required: Boolean) extends Parameter[T] {
def from(request: HttpRequest): T

def parseFrom(request: HttpRequest): Option[Try[X]]
def parseFrom(request: HttpRequest): Option[Try[X]] = location.from(name, request).map(s => Try(parse(s)))
}

class OptionalRequestParameter[T](val name: String,
class OptionalRequestParameter[T](name: String,
val location: Location,
val description: Option[String],
val paramType: ParamType,
parse: (String => T))
extends RequestParameter[Option[T], T] {
extends RequestParameter[Option[T], T](name, parse, false) {

override val required = false

override def parseFrom(request: HttpRequest): Option[Try[T]] = location.from(name, request).map(s => Try(parse(s)))

override def from(request: HttpRequest): Option[T] = {
Try(location.from(name, request).map(parse).get).toOption
}
override def from(request: HttpRequest): Option[T] = Try(location.from(name, request).map(parse).get).toOption
}

class MandatoryRequestParameter[T](val name: String,
class MandatoryRequestParameter[T](name: String,
val location: Location,
val description: Option[String],
val paramType: ParamType,
parse: (String => T)) extends RequestParameter[T, T] {
override val required = true

parse: (String => T)) extends RequestParameter[T, T](name, parse, true) {
override def from(request: HttpRequest): T = parseFrom(request).flatMap(_.toOption).get

override def parseFrom(request: HttpRequest): Option[Try[T]] = location.from(name, request).map(s => Try(parse(s)))
}

0 comments on commit dea8371

Please sign in to comment.