Skip to content

Commit

Permalink
Fix Content-Length for non-ASCII response bodies (#103)
Browse files Browse the repository at this point in the history
Fixes #101
  • Loading branch information
akheron authored Aug 25, 2018
1 parent 5a7a093 commit 2673bd4
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 2 deletions.
3 changes: 1 addition & 2 deletions src/HTTPure/Body.purs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ module HTTPure.Body
import Prelude

import Data.Either as Either
import Data.String as String
import Effect as Effect
import Effect.Aff as Aff
import Effect.Ref as Ref
Expand Down Expand Up @@ -47,5 +46,5 @@ write response body = void do

-- | Get the size of the body in bytes
size :: Body -> Effect.Effect Int
size (StringBody body) = pure $ String.length body
size (StringBody body) = Buffer.fromString body Encoding.UTF8 >>= Buffer.size
size (BinaryBody body) = Buffer.size body
19 changes: 19 additions & 0 deletions test/Test/HTTPure/BodySpec.purs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ module Test.HTTPure.BodySpec where
import Prelude

import Effect.Class as EffectClass
import Node.Buffer as Buffer
import Node.Encoding as Encoding
import Test.Spec as Spec

import HTTPure.Body as Body
Expand All @@ -17,6 +19,22 @@ readSpec = Spec.describe "read" do
body <- Body.read request
body ?= "test"

sizeSpec :: TestHelpers.Test
sizeSpec = Spec.describe "size" do
Spec.it "returns the correct size for ASCII string body" do
size <- EffectClass.liftEffect $ Body.size $ Body.StringBody "ascii"
size ?= 5

Spec.it "returns the correct size for UTF-8 string body" do
size <- EffectClass.liftEffect $ Body.size $ Body.StringBody "\x2603" -- snowman
size ?= 3

Spec.it "returns the correct size for binary body" do
size <- EffectClass.liftEffect do
buf <- Buffer.fromString "foobar" Encoding.UTF8
Body.size $ Body.BinaryBody buf
size ?= 6

writeSpec :: TestHelpers.Test
writeSpec = Spec.describe "write" do
Spec.it "writes the string to the Response body" do
Expand All @@ -29,4 +47,5 @@ writeSpec = Spec.describe "write" do
bodySpec :: TestHelpers.Test
bodySpec = Spec.describe "Body" do
readSpec
sizeSpec
writeSpec

0 comments on commit 2673bd4

Please sign in to comment.