Skip to content

Commit 880e53e

Browse files
committed
Backport #359
1 parent 861921a commit 880e53e

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

swagger/src/main/scala/org/http4s/rho/swagger/SwaggerModelsBuilder.scala

+6-1
Original file line numberDiff line numberDiff line change
@@ -255,13 +255,18 @@ private[swagger] class SwaggerModelsBuilder(formats: SwaggerFormats) {
255255
go(rr.rules::Nil)
256256
}
257257

258+
def renderMediaRange: MediaRange => String = {
259+
case tpe: MediaType => tpe.show
260+
case range: MediaRange => range.show
261+
}
262+
258263
def mkOperation[F[_]](pathStr: String, rr: RhoRoute[F, _])(implicit etag: WeakTypeTag[F[_]]): Operation = {
259264
val parameters = collectOperationParams(rr)
260265

261266
Operation(
262267
tags = collectTags(rr),
263268
summary = collectSummary(rr),
264-
consumes = rr.validMedia.toList.map(_.show),
269+
consumes = rr.validMedia.toList.map(renderMediaRange),
265270
produces = rr.responseEncodings.toList.map(_.show),
266271
operationId = mkOperationId(pathStr, rr.method, parameters).some,
267272
parameters = parameters,

swagger/src/test/scala/org/http4s/rho/swagger/SwaggerModelsBuilderSpec.scala

+11
Original file line numberDiff line numberDiff line change
@@ -449,6 +449,17 @@ class SwaggerModelsBuilderSpec extends Specification {
449449

450450
compiledRoutes should_== results
451451
}
452+
453+
"generate precise consumed media types" in {
454+
val dec = new EntityDecoder[IO, List[String]] {
455+
def consumes: Set[MediaRange] = Set(MediaType.application.json)
456+
def decode(msg: Message[IO], strict: Boolean): DecodeResult[IO, List[String]] = ???
457+
}
458+
val ra = GET / "foo" ^ dec |>> { _: List[String] => "" }
459+
val op = sb.mkOperation("/foo", ra)
460+
461+
op.consumes must_== List("application/json")
462+
}
452463
}
453464

454465
"SwaggerModelsBuilder.collectDefinitions" should {

0 commit comments

Comments
 (0)