File tree 2 files changed +17
-8
lines changed
http4s/src/smithy4s/http4s
2 files changed +17
-8
lines changed Original file line number Diff line number Diff line change @@ -25,6 +25,7 @@ import org.http4s._
25
25
import org .http4s .headers .`Content-Type`
26
26
import smithy4s .http .BodyPartial
27
27
import smithy4s .http .CodecAPI
28
+ import smithy4s .http .Metadata
28
29
29
30
trait EntityCompiler [F [_]] {
30
31
@@ -67,13 +68,20 @@ object EntityCompiler {
67
68
def compileEntityEncoder [A ](schema : Schema [A ]): EntityEncoder [F , A ] = {
68
69
val codecA : codecAPI.Codec [A ] = codecAPI.compileCodec(schema)
69
70
val mediaType = MediaType .unsafeParse(codecAPI.mediaType(codecA).value)
70
-
71
- EntityEncoder
72
- .byteArrayEncoder[F ]
73
- .withContentType(
74
- `Content-Type`(mediaType)
75
- )
76
- .contramap[A ]((a : A ) => codecAPI.writeToArray(codecA, a))
71
+ val expectBody = Metadata .PartialDecoder
72
+ .fromSchema(schema)
73
+ .total
74
+ .isEmpty // expect body if metadata decoder is not total
75
+ if (expectBody) {
76
+ EntityEncoder
77
+ .byteArrayEncoder[F ]
78
+ .withContentType(
79
+ `Content-Type`(mediaType)
80
+ )
81
+ .contramap[A ]((a : A ) => codecAPI.writeToArray(codecA, a))
82
+ } else {
83
+ EntityEncoder .emptyEncoder
84
+ }
77
85
}
78
86
79
87
def compileEntityDecoder [A ](
Original file line number Diff line number Diff line change @@ -324,9 +324,10 @@ abstract class PizzaSpec
324
324
log
325
325
)
326
326
} yield {
327
- val (code, headers, _ ) = res
327
+ val (code, headers, body ) = res
328
328
329
329
expect(code == 200 ) &&
330
+ expect(body.isEmpty()) &&
330
331
expect(headers.get(" x-uppercase-header" ) == Some (List (" header-1" ))) &&
331
332
expect(headers.get(" x-capitalized-header" ) == Some (List (" header-2" ))) &&
332
333
expect(headers.get(" x-lowercase-header" ) == Some (List (" header-3" ))) &&
You can’t perform that action at this time.
0 commit comments