Add Headers.empty and Headers.header (#78)

This commit is contained in:
Connor Prussin 2017-09-29 07:25:31 -07:00 committed by GitHub
parent 48c529e9be
commit f4599b276b
6 changed files with 125 additions and 116 deletions

View File

@ -8,7 +8,7 @@ module HTTPure
, module HTTPure.Server , module HTTPure.Server
) where ) where
import HTTPure.Headers (Headers, headers) import HTTPure.Headers (Headers, empty, header, headers)
import HTTPure.Lookup (lookup, (!!)) import HTTPure.Lookup (lookup, (!!))
import HTTPure.Method (Method(..)) import HTTPure.Method (Method(..))
import HTTPure.Path (Path) import HTTPure.Path (Path)

View File

@ -1,6 +1,8 @@
module HTTPure.Headers module HTTPure.Headers
( Headers ( Headers
, empty
, headers , headers
, header
, read , read
, write , write
) where ) where
@ -56,6 +58,14 @@ write :: forall e.
write response (Headers headers') = void $ write response (Headers headers') = void $
TraversableWithIndex.traverseWithIndex (HTTP.setHeader response) headers' TraversableWithIndex.traverseWithIndex (HTTP.setHeader response) headers'
-- | Return a `Headers` containing nothing.
empty :: Headers
empty = Headers StrMap.empty
-- | Convert an `Array` of `Tuples` of 2 `Strings` to a `Headers` object. -- | Convert an `Array` of `Tuples` of 2 `Strings` to a `Headers` object.
headers :: Array (Tuple.Tuple String String) -> Headers headers :: Array (Tuple.Tuple String String) -> Headers
headers = StrMap.fromFoldable >>> Headers headers = StrMap.fromFoldable >>> Headers
-- | Create a singleton header from a key-value pair.
header :: String -> String -> Headers
header key = StrMap.singleton key >>> Headers

View File

@ -129,7 +129,7 @@ response' status headers = response status headers $ ""
-- | 100 -- | 100
continue :: forall e. ResponseM e continue :: forall e. ResponseM e
continue = continue' $ Headers.headers [] continue = continue' Headers.empty
-- | 100 with headers -- | 100 with headers
continue' :: forall e. Headers.Headers -> ResponseM e continue' :: forall e. Headers.Headers -> ResponseM e
@ -137,7 +137,7 @@ continue' = response' Status.continue
-- | 101 -- | 101
switchingProtocols :: forall e. ResponseM e switchingProtocols :: forall e. ResponseM e
switchingProtocols = switchingProtocols' $ Headers.headers [] switchingProtocols = switchingProtocols' Headers.empty
-- | 101 with headers -- | 101 with headers
switchingProtocols' :: forall e. Headers.Headers -> ResponseM e switchingProtocols' :: forall e. Headers.Headers -> ResponseM e
@ -145,7 +145,7 @@ switchingProtocols' = response' Status.switchingProtocols
-- | 102 -- | 102
processing :: forall e. ResponseM e processing :: forall e. ResponseM e
processing = processing' $ Headers.headers [] processing = processing' Headers.empty
-- | 102 with headers -- | 102 with headers
processing' :: forall e. Headers.Headers -> ResponseM e processing' :: forall e. Headers.Headers -> ResponseM e
@ -157,7 +157,7 @@ processing' = response' Status.processing
-- | 200 -- | 200
ok :: forall e. Body.Body -> ResponseM e ok :: forall e. Body.Body -> ResponseM e
ok = ok' $ Headers.headers [] ok = ok' Headers.empty
-- | 200 with headers -- | 200 with headers
ok' :: forall e. Headers.Headers -> Body.Body -> ResponseM e ok' :: forall e. Headers.Headers -> Body.Body -> ResponseM e
@ -165,7 +165,7 @@ ok' = response Status.ok
-- | 201 -- | 201
created :: forall e. ResponseM e created :: forall e. ResponseM e
created = created' $ Headers.headers [] created = created' Headers.empty
-- | 201 with headers -- | 201 with headers
created' :: forall e. Headers.Headers -> ResponseM e created' :: forall e. Headers.Headers -> ResponseM e
@ -173,7 +173,7 @@ created' = response' Status.created
-- | 202 -- | 202
accepted :: forall e. ResponseM e accepted :: forall e. ResponseM e
accepted = accepted' $ Headers.headers [] accepted = accepted' Headers.empty
-- | 202 with headers -- | 202 with headers
accepted' :: forall e. Headers.Headers -> ResponseM e accepted' :: forall e. Headers.Headers -> ResponseM e
@ -181,7 +181,7 @@ accepted' = response' Status.accepted
-- | 203 -- | 203
nonAuthoritativeInformation :: forall e. Body.Body -> ResponseM e nonAuthoritativeInformation :: forall e. Body.Body -> ResponseM e
nonAuthoritativeInformation = nonAuthoritativeInformation' $ Headers.headers [] nonAuthoritativeInformation = nonAuthoritativeInformation' Headers.empty
-- | 203 with headers -- | 203 with headers
nonAuthoritativeInformation' :: forall e. nonAuthoritativeInformation' :: forall e.
@ -192,7 +192,7 @@ nonAuthoritativeInformation' = response Status.nonAuthoritativeInformation
-- | 204 -- | 204
noContent :: forall e. ResponseM e noContent :: forall e. ResponseM e
noContent = noContent' $ Headers.headers [] noContent = noContent' Headers.empty
-- | 204 with headers -- | 204 with headers
noContent' :: forall e. Headers.Headers -> ResponseM e noContent' :: forall e. Headers.Headers -> ResponseM e
@ -200,7 +200,7 @@ noContent' = response' Status.noContent
-- | 205 -- | 205
resetContent :: forall e. ResponseM e resetContent :: forall e. ResponseM e
resetContent = resetContent' $ Headers.headers [] resetContent = resetContent' Headers.empty
-- | 205 with headers -- | 205 with headers
resetContent' :: forall e. Headers.Headers -> ResponseM e resetContent' :: forall e. Headers.Headers -> ResponseM e
@ -208,7 +208,7 @@ resetContent' = response' Status.resetContent
-- | 206 -- | 206
partialContent :: forall e. Body.Body -> ResponseM e partialContent :: forall e. Body.Body -> ResponseM e
partialContent = partialContent' $ Headers.headers [] partialContent = partialContent' Headers.empty
-- | 206 with headers -- | 206 with headers
partialContent' :: forall e. Headers.Headers -> Body.Body -> ResponseM e partialContent' :: forall e. Headers.Headers -> Body.Body -> ResponseM e
@ -216,7 +216,7 @@ partialContent' = response Status.partialContent
-- | 207 -- | 207
multiStatus :: forall e. Body.Body -> ResponseM e multiStatus :: forall e. Body.Body -> ResponseM e
multiStatus = multiStatus' $ Headers.headers [] multiStatus = multiStatus' Headers.empty
-- | 207 with headers -- | 207 with headers
multiStatus' :: forall e. Headers.Headers -> Body.Body -> ResponseM e multiStatus' :: forall e. Headers.Headers -> Body.Body -> ResponseM e
@ -224,7 +224,7 @@ multiStatus' = response Status.multiStatus
-- | 208 -- | 208
alreadyReported :: forall e. ResponseM e alreadyReported :: forall e. ResponseM e
alreadyReported = alreadyReported' $ Headers.headers [] alreadyReported = alreadyReported' Headers.empty
-- | 208 with headers -- | 208 with headers
alreadyReported' :: forall e. Headers.Headers -> ResponseM e alreadyReported' :: forall e. Headers.Headers -> ResponseM e
@ -232,7 +232,7 @@ alreadyReported' = response' Status.alreadyReported
-- | 226 -- | 226
iMUsed :: forall e. Body.Body -> ResponseM e iMUsed :: forall e. Body.Body -> ResponseM e
iMUsed = iMUsed' $ Headers.headers [] iMUsed = iMUsed' Headers.empty
-- | 226 with headers -- | 226 with headers
iMUsed' :: forall e. Headers.Headers -> Body.Body -> ResponseM e iMUsed' :: forall e. Headers.Headers -> Body.Body -> ResponseM e
@ -244,7 +244,7 @@ iMUsed' = response Status.iMUsed
-- | 300 -- | 300
multipleChoices :: forall e. Body.Body -> ResponseM e multipleChoices :: forall e. Body.Body -> ResponseM e
multipleChoices = multipleChoices' $ Headers.headers [] multipleChoices = multipleChoices' Headers.empty
-- | 300 with headers -- | 300 with headers
multipleChoices' :: forall e. Headers.Headers -> Body.Body -> ResponseM e multipleChoices' :: forall e. Headers.Headers -> Body.Body -> ResponseM e
@ -252,7 +252,7 @@ multipleChoices' = response Status.multipleChoices
-- | 301 -- | 301
movedPermanently :: forall e. Body.Body -> ResponseM e movedPermanently :: forall e. Body.Body -> ResponseM e
movedPermanently = movedPermanently' $ Headers.headers [] movedPermanently = movedPermanently' Headers.empty
-- | 301 with headers -- | 301 with headers
movedPermanently' :: forall e. Headers.Headers -> Body.Body -> ResponseM e movedPermanently' :: forall e. Headers.Headers -> Body.Body -> ResponseM e
@ -260,7 +260,7 @@ movedPermanently' = response Status.movedPermanently
-- | 302 -- | 302
found :: forall e. Body.Body -> ResponseM e found :: forall e. Body.Body -> ResponseM e
found = found' $ Headers.headers [] found = found' Headers.empty
-- | 302 with headers -- | 302 with headers
found' :: forall e. Headers.Headers -> Body.Body -> ResponseM e found' :: forall e. Headers.Headers -> Body.Body -> ResponseM e
@ -268,7 +268,7 @@ found' = response Status.found
-- | 303 -- | 303
seeOther :: forall e. Body.Body -> ResponseM e seeOther :: forall e. Body.Body -> ResponseM e
seeOther = seeOther' $ Headers.headers [] seeOther = seeOther' Headers.empty
-- | 303 with headers -- | 303 with headers
seeOther' :: forall e. Headers.Headers -> Body.Body -> ResponseM e seeOther' :: forall e. Headers.Headers -> Body.Body -> ResponseM e
@ -276,7 +276,7 @@ seeOther' = response Status.seeOther
-- | 304 -- | 304
notModified :: forall e. ResponseM e notModified :: forall e. ResponseM e
notModified = notModified' $ Headers.headers [] notModified = notModified' Headers.empty
-- | 304 with headers -- | 304 with headers
notModified' :: forall e. Headers.Headers -> ResponseM e notModified' :: forall e. Headers.Headers -> ResponseM e
@ -284,7 +284,7 @@ notModified' = response' Status.notModified
-- | 305 -- | 305
useProxy :: forall e. Body.Body -> ResponseM e useProxy :: forall e. Body.Body -> ResponseM e
useProxy = useProxy' $ Headers.headers [] useProxy = useProxy' Headers.empty
-- | 305 with headers -- | 305 with headers
useProxy' :: forall e. Headers.Headers -> Body.Body -> ResponseM e useProxy' :: forall e. Headers.Headers -> Body.Body -> ResponseM e
@ -292,7 +292,7 @@ useProxy' = response Status.useProxy
-- | 307 -- | 307
temporaryRedirect :: forall e. Body.Body -> ResponseM e temporaryRedirect :: forall e. Body.Body -> ResponseM e
temporaryRedirect = temporaryRedirect' $ Headers.headers [] temporaryRedirect = temporaryRedirect' Headers.empty
-- | 307 with headers -- | 307 with headers
temporaryRedirect' :: forall e. Headers.Headers -> Body.Body -> ResponseM e temporaryRedirect' :: forall e. Headers.Headers -> Body.Body -> ResponseM e
@ -300,7 +300,7 @@ temporaryRedirect' = response Status.temporaryRedirect
-- | 308 -- | 308
permanentRedirect :: forall e. Body.Body -> ResponseM e permanentRedirect :: forall e. Body.Body -> ResponseM e
permanentRedirect = permanentRedirect' $ Headers.headers [] permanentRedirect = permanentRedirect' Headers.empty
-- | 308 with headers -- | 308 with headers
permanentRedirect' :: forall e. Headers.Headers -> Body.Body -> ResponseM e permanentRedirect' :: forall e. Headers.Headers -> Body.Body -> ResponseM e
@ -313,7 +313,7 @@ permanentRedirect' = response Status.permanentRedirect
-- | 400 -- | 400
badRequest :: forall e. Body.Body -> ResponseM e badRequest :: forall e. Body.Body -> ResponseM e
badRequest = badRequest' $ Headers.headers [] badRequest = badRequest' Headers.empty
-- | 400 with headers -- | 400 with headers
badRequest' :: forall e. Headers.Headers -> Body.Body -> ResponseM e badRequest' :: forall e. Headers.Headers -> Body.Body -> ResponseM e
@ -321,7 +321,7 @@ badRequest' = response Status.badRequest
-- | 401 -- | 401
unauthorized :: forall e. ResponseM e unauthorized :: forall e. ResponseM e
unauthorized = unauthorized' $ Headers.headers [] unauthorized = unauthorized' Headers.empty
-- | 401 with headers -- | 401 with headers
unauthorized' :: forall e. Headers.Headers -> ResponseM e unauthorized' :: forall e. Headers.Headers -> ResponseM e
@ -329,7 +329,7 @@ unauthorized' = response' Status.unauthorized
-- | 402 -- | 402
paymentRequired :: forall e. ResponseM e paymentRequired :: forall e. ResponseM e
paymentRequired = paymentRequired' $ Headers.headers [] paymentRequired = paymentRequired' Headers.empty
-- | 402 with headers -- | 402 with headers
paymentRequired' :: forall e. Headers.Headers -> ResponseM e paymentRequired' :: forall e. Headers.Headers -> ResponseM e
@ -337,7 +337,7 @@ paymentRequired' = response' Status.paymentRequired
-- | 403 -- | 403
forbidden :: forall e. ResponseM e forbidden :: forall e. ResponseM e
forbidden = forbidden' $ Headers.headers [] forbidden = forbidden' Headers.empty
-- | 403 with headers -- | 403 with headers
forbidden' :: forall e. Headers.Headers -> ResponseM e forbidden' :: forall e. Headers.Headers -> ResponseM e
@ -345,7 +345,7 @@ forbidden' = response' Status.forbidden
-- | 404 -- | 404
notFound :: forall e. ResponseM e notFound :: forall e. ResponseM e
notFound = notFound' $ Headers.headers [] notFound = notFound' Headers.empty
-- | 404 with headers -- | 404 with headers
notFound' :: forall e. Headers.Headers -> ResponseM e notFound' :: forall e. Headers.Headers -> ResponseM e
@ -353,7 +353,7 @@ notFound' = response' Status.notFound
-- | 405 -- | 405
methodNotAllowed :: forall e. ResponseM e methodNotAllowed :: forall e. ResponseM e
methodNotAllowed = methodNotAllowed' $ Headers.headers [] methodNotAllowed = methodNotAllowed' Headers.empty
-- | 405 with headers -- | 405 with headers
methodNotAllowed' :: forall e. Headers.Headers -> ResponseM e methodNotAllowed' :: forall e. Headers.Headers -> ResponseM e
@ -361,7 +361,7 @@ methodNotAllowed' = response' Status.methodNotAllowed
-- | 406 -- | 406
notAcceptable :: forall e. ResponseM e notAcceptable :: forall e. ResponseM e
notAcceptable = notAcceptable' $ Headers.headers [] notAcceptable = notAcceptable' Headers.empty
-- | 406 with headers -- | 406 with headers
notAcceptable' :: forall e. Headers.Headers -> ResponseM e notAcceptable' :: forall e. Headers.Headers -> ResponseM e
@ -369,7 +369,7 @@ notAcceptable' = response' Status.notAcceptable
-- | 407 -- | 407
proxyAuthenticationRequired :: forall e. ResponseM e proxyAuthenticationRequired :: forall e. ResponseM e
proxyAuthenticationRequired = proxyAuthenticationRequired' $ Headers.headers [] proxyAuthenticationRequired = proxyAuthenticationRequired' Headers.empty
-- | 407 with headers -- | 407 with headers
proxyAuthenticationRequired' :: forall e. Headers.Headers -> ResponseM e proxyAuthenticationRequired' :: forall e. Headers.Headers -> ResponseM e
@ -377,7 +377,7 @@ proxyAuthenticationRequired' = response' Status.proxyAuthenticationRequired
-- | 408 -- | 408
requestTimeout :: forall e. ResponseM e requestTimeout :: forall e. ResponseM e
requestTimeout = requestTimeout' $ Headers.headers [] requestTimeout = requestTimeout' Headers.empty
-- | 408 with headers -- | 408 with headers
requestTimeout' :: forall e. Headers.Headers -> ResponseM e requestTimeout' :: forall e. Headers.Headers -> ResponseM e
@ -385,7 +385,7 @@ requestTimeout' = response' Status.requestTimeout
-- | 409 -- | 409
conflict :: forall e. Body.Body -> ResponseM e conflict :: forall e. Body.Body -> ResponseM e
conflict = conflict' $ Headers.headers [] conflict = conflict' Headers.empty
-- | 409 with headers -- | 409 with headers
conflict' :: forall e. Headers.Headers -> Body.Body -> ResponseM e conflict' :: forall e. Headers.Headers -> Body.Body -> ResponseM e
@ -393,7 +393,7 @@ conflict' = response Status.conflict
-- | 410 -- | 410
gone :: forall e. ResponseM e gone :: forall e. ResponseM e
gone = gone' $ Headers.headers [] gone = gone' Headers.empty
-- | 410 with headers -- | 410 with headers
gone' :: forall e. Headers.Headers -> ResponseM e gone' :: forall e. Headers.Headers -> ResponseM e
@ -401,7 +401,7 @@ gone' = response' Status.gone
-- | 411 -- | 411
lengthRequired :: forall e. ResponseM e lengthRequired :: forall e. ResponseM e
lengthRequired = lengthRequired' $ Headers.headers [] lengthRequired = lengthRequired' Headers.empty
-- | 411 with headers -- | 411 with headers
lengthRequired' :: forall e. Headers.Headers -> ResponseM e lengthRequired' :: forall e. Headers.Headers -> ResponseM e
@ -409,7 +409,7 @@ lengthRequired' = response' Status.lengthRequired
-- | 412 -- | 412
preconditionFailed :: forall e. ResponseM e preconditionFailed :: forall e. ResponseM e
preconditionFailed = preconditionFailed' $ Headers.headers [] preconditionFailed = preconditionFailed' Headers.empty
-- | 412 with headers -- | 412 with headers
preconditionFailed' :: forall e. Headers.Headers -> ResponseM e preconditionFailed' :: forall e. Headers.Headers -> ResponseM e
@ -417,7 +417,7 @@ preconditionFailed' = response' Status.preconditionFailed
-- | 413 -- | 413
payloadTooLarge :: forall e. ResponseM e payloadTooLarge :: forall e. ResponseM e
payloadTooLarge = payloadTooLarge' $ Headers.headers [] payloadTooLarge = payloadTooLarge' Headers.empty
-- | 413 with headers -- | 413 with headers
payloadTooLarge' :: forall e. Headers.Headers -> ResponseM e payloadTooLarge' :: forall e. Headers.Headers -> ResponseM e
@ -425,7 +425,7 @@ payloadTooLarge' = response' Status.payloadTooLarge
-- | 414 -- | 414
uRITooLong :: forall e. ResponseM e uRITooLong :: forall e. ResponseM e
uRITooLong = uRITooLong' $ Headers.headers [] uRITooLong = uRITooLong' Headers.empty
-- | 414 with headers -- | 414 with headers
uRITooLong' :: forall e. Headers.Headers -> ResponseM e uRITooLong' :: forall e. Headers.Headers -> ResponseM e
@ -433,7 +433,7 @@ uRITooLong' = response' Status.uRITooLong
-- | 415 -- | 415
unsupportedMediaType :: forall e. ResponseM e unsupportedMediaType :: forall e. ResponseM e
unsupportedMediaType = unsupportedMediaType' $ Headers.headers [] unsupportedMediaType = unsupportedMediaType' Headers.empty
-- | 415 with headers -- | 415 with headers
unsupportedMediaType' :: forall e. Headers.Headers -> ResponseM e unsupportedMediaType' :: forall e. Headers.Headers -> ResponseM e
@ -441,7 +441,7 @@ unsupportedMediaType' = response' Status.unsupportedMediaType
-- | 416 -- | 416
rangeNotSatisfiable :: forall e. ResponseM e rangeNotSatisfiable :: forall e. ResponseM e
rangeNotSatisfiable = rangeNotSatisfiable' $ Headers.headers [] rangeNotSatisfiable = rangeNotSatisfiable' Headers.empty
-- | 416 with headers -- | 416 with headers
rangeNotSatisfiable' :: forall e. Headers.Headers -> ResponseM e rangeNotSatisfiable' :: forall e. Headers.Headers -> ResponseM e
@ -449,7 +449,7 @@ rangeNotSatisfiable' = response' Status.rangeNotSatisfiable
-- | 417 -- | 417
expectationFailed :: forall e. ResponseM e expectationFailed :: forall e. ResponseM e
expectationFailed = expectationFailed' $ Headers.headers [] expectationFailed = expectationFailed' Headers.empty
-- | 417 with headers -- | 417 with headers
expectationFailed' :: forall e. Headers.Headers -> ResponseM e expectationFailed' :: forall e. Headers.Headers -> ResponseM e
@ -457,7 +457,7 @@ expectationFailed' = response' Status.expectationFailed
-- | 418 -- | 418
imATeapot :: forall e. ResponseM e imATeapot :: forall e. ResponseM e
imATeapot = imATeapot' $ Headers.headers [] imATeapot = imATeapot' Headers.empty
-- | 418 with headers -- | 418 with headers
imATeapot' :: forall e. Headers.Headers -> ResponseM e imATeapot' :: forall e. Headers.Headers -> ResponseM e
@ -465,7 +465,7 @@ imATeapot' = response' Status.imATeapot
-- | 421 -- | 421
misdirectedRequest :: forall e. ResponseM e misdirectedRequest :: forall e. ResponseM e
misdirectedRequest = misdirectedRequest' $ Headers.headers [] misdirectedRequest = misdirectedRequest' Headers.empty
-- | 421 with headers -- | 421 with headers
misdirectedRequest' :: forall e. Headers.Headers -> ResponseM e misdirectedRequest' :: forall e. Headers.Headers -> ResponseM e
@ -473,7 +473,7 @@ misdirectedRequest' = response' Status.misdirectedRequest
-- | 422 -- | 422
unprocessableEntity :: forall e. ResponseM e unprocessableEntity :: forall e. ResponseM e
unprocessableEntity = unprocessableEntity' $ Headers.headers [] unprocessableEntity = unprocessableEntity' Headers.empty
-- | 422 with headers -- | 422 with headers
unprocessableEntity' :: forall e. Headers.Headers -> ResponseM e unprocessableEntity' :: forall e. Headers.Headers -> ResponseM e
@ -481,7 +481,7 @@ unprocessableEntity' = response' Status.unprocessableEntity
-- | 423 -- | 423
locked :: forall e. ResponseM e locked :: forall e. ResponseM e
locked = locked' $ Headers.headers [] locked = locked' Headers.empty
-- | 423 with headers -- | 423 with headers
locked' :: forall e. Headers.Headers -> ResponseM e locked' :: forall e. Headers.Headers -> ResponseM e
@ -489,7 +489,7 @@ locked' = response' Status.locked
-- | 424 -- | 424
failedDependency :: forall e. ResponseM e failedDependency :: forall e. ResponseM e
failedDependency = failedDependency' $ Headers.headers [] failedDependency = failedDependency' Headers.empty
-- | 424 with headers -- | 424 with headers
failedDependency' :: forall e. Headers.Headers -> ResponseM e failedDependency' :: forall e. Headers.Headers -> ResponseM e
@ -497,7 +497,7 @@ failedDependency' = response' Status.failedDependency
-- | 426 -- | 426
upgradeRequired :: forall e. ResponseM e upgradeRequired :: forall e. ResponseM e
upgradeRequired = upgradeRequired' $ Headers.headers [] upgradeRequired = upgradeRequired' Headers.empty
-- | 426 with headers -- | 426 with headers
upgradeRequired' :: forall e. Headers.Headers -> ResponseM e upgradeRequired' :: forall e. Headers.Headers -> ResponseM e
@ -505,7 +505,7 @@ upgradeRequired' = response' Status.upgradeRequired
-- | 428 -- | 428
preconditionRequired :: forall e. ResponseM e preconditionRequired :: forall e. ResponseM e
preconditionRequired = preconditionRequired' $ Headers.headers [] preconditionRequired = preconditionRequired' Headers.empty
-- | 428 with headers -- | 428 with headers
preconditionRequired' :: forall e. Headers.Headers -> ResponseM e preconditionRequired' :: forall e. Headers.Headers -> ResponseM e
@ -513,7 +513,7 @@ preconditionRequired' = response' Status.preconditionRequired
-- | 429 -- | 429
tooManyRequests :: forall e. ResponseM e tooManyRequests :: forall e. ResponseM e
tooManyRequests = tooManyRequests' $ Headers.headers [] tooManyRequests = tooManyRequests' Headers.empty
-- | 429 with headers -- | 429 with headers
tooManyRequests' :: forall e. Headers.Headers -> ResponseM e tooManyRequests' :: forall e. Headers.Headers -> ResponseM e
@ -521,7 +521,7 @@ tooManyRequests' = response' Status.tooManyRequests
-- | 431 -- | 431
requestHeaderFieldsTooLarge :: forall e. ResponseM e requestHeaderFieldsTooLarge :: forall e. ResponseM e
requestHeaderFieldsTooLarge = requestHeaderFieldsTooLarge' $ Headers.headers [] requestHeaderFieldsTooLarge = requestHeaderFieldsTooLarge' Headers.empty
-- | 431 with headers -- | 431 with headers
requestHeaderFieldsTooLarge' :: forall e. Headers.Headers -> ResponseM e requestHeaderFieldsTooLarge' :: forall e. Headers.Headers -> ResponseM e
@ -529,7 +529,7 @@ requestHeaderFieldsTooLarge' = response' Status.requestHeaderFieldsTooLarge
-- | 451 -- | 451
unavailableForLegalReasons :: forall e. ResponseM e unavailableForLegalReasons :: forall e. ResponseM e
unavailableForLegalReasons = unavailableForLegalReasons' $ Headers.headers [] unavailableForLegalReasons = unavailableForLegalReasons' Headers.empty
-- | 451 with headers -- | 451 with headers
unavailableForLegalReasons' :: forall e. Headers.Headers -> ResponseM e unavailableForLegalReasons' :: forall e. Headers.Headers -> ResponseM e
@ -541,7 +541,7 @@ unavailableForLegalReasons' = response' Status.unavailableForLegalReasons
-- | 500 -- | 500
internalServerError :: forall e. Body.Body -> ResponseM e internalServerError :: forall e. Body.Body -> ResponseM e
internalServerError = internalServerError' $ Headers.headers [] internalServerError = internalServerError' Headers.empty
-- | 500 with headers -- | 500 with headers
internalServerError' :: forall e. Headers.Headers -> Body.Body -> ResponseM e internalServerError' :: forall e. Headers.Headers -> Body.Body -> ResponseM e
@ -549,7 +549,7 @@ internalServerError' = response Status.internalServerError
-- | 501 -- | 501
notImplemented :: forall e. ResponseM e notImplemented :: forall e. ResponseM e
notImplemented = notImplemented' $ Headers.headers [] notImplemented = notImplemented' Headers.empty
-- | 501 with headers -- | 501 with headers
notImplemented' :: forall e. Headers.Headers -> ResponseM e notImplemented' :: forall e. Headers.Headers -> ResponseM e
@ -557,7 +557,7 @@ notImplemented' = response' Status.notImplemented
-- | 502 -- | 502
badGateway :: forall e. ResponseM e badGateway :: forall e. ResponseM e
badGateway = badGateway' $ Headers.headers [] badGateway = badGateway' Headers.empty
-- | 502 with headers -- | 502 with headers
badGateway' :: forall e. Headers.Headers -> ResponseM e badGateway' :: forall e. Headers.Headers -> ResponseM e
@ -565,7 +565,7 @@ badGateway' = response' Status.badGateway
-- | 503 -- | 503
serviceUnavailable :: forall e. ResponseM e serviceUnavailable :: forall e. ResponseM e
serviceUnavailable = serviceUnavailable' $ Headers.headers [] serviceUnavailable = serviceUnavailable' Headers.empty
-- | 503 with headers -- | 503 with headers
serviceUnavailable' :: forall e. Headers.Headers -> ResponseM e serviceUnavailable' :: forall e. Headers.Headers -> ResponseM e
@ -573,7 +573,7 @@ serviceUnavailable' = response' Status.serviceUnavailable
-- | 504 -- | 504
gatewayTimeout :: forall e. ResponseM e gatewayTimeout :: forall e. ResponseM e
gatewayTimeout = gatewayTimeout' $ Headers.headers [] gatewayTimeout = gatewayTimeout' Headers.empty
-- | 504 with headers -- | 504 with headers
gatewayTimeout' :: forall e. Headers.Headers -> ResponseM e gatewayTimeout' :: forall e. Headers.Headers -> ResponseM e
@ -581,7 +581,7 @@ gatewayTimeout' = response' Status.gatewayTimeout
-- | 505 -- | 505
hTTPVersionNotSupported :: forall e. ResponseM e hTTPVersionNotSupported :: forall e. ResponseM e
hTTPVersionNotSupported = hTTPVersionNotSupported' $ Headers.headers [] hTTPVersionNotSupported = hTTPVersionNotSupported' Headers.empty
-- | 505 with headers -- | 505 with headers
hTTPVersionNotSupported' :: forall e. Headers.Headers -> ResponseM e hTTPVersionNotSupported' :: forall e. Headers.Headers -> ResponseM e
@ -589,7 +589,7 @@ hTTPVersionNotSupported' = response' Status.hTTPVersionNotSupported
-- | 506 -- | 506
variantAlsoNegotiates :: forall e. ResponseM e variantAlsoNegotiates :: forall e. ResponseM e
variantAlsoNegotiates = variantAlsoNegotiates' $ Headers.headers [] variantAlsoNegotiates = variantAlsoNegotiates' Headers.empty
-- | 506 with headers -- | 506 with headers
variantAlsoNegotiates' :: forall e. Headers.Headers -> ResponseM e variantAlsoNegotiates' :: forall e. Headers.Headers -> ResponseM e
@ -597,7 +597,7 @@ variantAlsoNegotiates' = response' Status.variantAlsoNegotiates
-- | 507 -- | 507
insufficientStorage :: forall e. ResponseM e insufficientStorage :: forall e. ResponseM e
insufficientStorage = insufficientStorage' $ Headers.headers [] insufficientStorage = insufficientStorage' Headers.empty
-- | 507 with headers -- | 507 with headers
insufficientStorage' :: forall e. Headers.Headers -> ResponseM e insufficientStorage' :: forall e. Headers.Headers -> ResponseM e
@ -605,7 +605,7 @@ insufficientStorage' = response' Status.insufficientStorage
-- | 508 -- | 508
loopDetected :: forall e. ResponseM e loopDetected :: forall e. ResponseM e
loopDetected = loopDetected' $ Headers.headers [] loopDetected = loopDetected' Headers.empty
-- | 508 with headers -- | 508 with headers
loopDetected' :: forall e. Headers.Headers -> ResponseM e loopDetected' :: forall e. Headers.Headers -> ResponseM e
@ -613,7 +613,7 @@ loopDetected' = response' Status.loopDetected
-- | 510 -- | 510
notExtended :: forall e. ResponseM e notExtended :: forall e. ResponseM e
notExtended = notExtended' $ Headers.headers [] notExtended = notExtended' Headers.empty
-- | 510 with headers -- | 510 with headers
notExtended' :: forall e. Headers.Headers -> ResponseM e notExtended' :: forall e. Headers.Headers -> ResponseM e
@ -621,8 +621,7 @@ notExtended' = response' Status.notExtended
-- | 511 -- | 511
networkAuthenticationRequired :: forall e. ResponseM e networkAuthenticationRequired :: forall e. ResponseM e
networkAuthenticationRequired = networkAuthenticationRequired = networkAuthenticationRequired' Headers.empty
networkAuthenticationRequired' $ Headers.headers []
-- | 511 with headers -- | 511 with headers
networkAuthenticationRequired' :: forall e. Headers.Headers -> ResponseM e networkAuthenticationRequired' :: forall e. Headers.Headers -> ResponseM e

View File

@ -17,83 +17,60 @@ lookupSpec = Spec.describe "lookup" do
Spec.describe "when the string is in the header set" do Spec.describe "when the string is in the header set" do
Spec.describe "when searching with lowercase" do Spec.describe "when searching with lowercase" do
Spec.it "is the string" do Spec.it "is the string" do
mockHeaders !! "x-test" ?= "test" Headers.header "x-test" "test" !! "x-test" ?= "test"
Spec.describe "when searching with uppercase" do Spec.describe "when searching with uppercase" do
Spec.it "is the string" do Spec.it "is the string" do
mockHeaders !! "X-Test" ?= "test" Headers.header "x-test" "test" !! "X-Test" ?= "test"
Spec.describe "when the string is not in the header set" do Spec.describe "when the string is not in the header set" do
Spec.it "is an empty string" do Spec.it "is an empty string" do
(Headers.headers []) !! "X-Test" ?= "" Headers.empty !! "X-Test" ?= ""
where
mockHeaders = Headers.headers [Tuple.Tuple "x-test" "test"]
showSpec :: SpecHelpers.Test showSpec :: SpecHelpers.Test
showSpec = Spec.describe "show" do showSpec = Spec.describe "show" do
Spec.it "is a string representing the headers in HTTP format" do Spec.it "is a string representing the headers in HTTP format" do
show mockHeaders ?= "Test1: test1\nTest2: test2\n\n" let mock = Headers.header "Test1" "1" <> Headers.header "Test2" "2"
where show mock ?= "Test1: 1\nTest2: 2\n\n"
mockHeaders =
Headers.headers
[ Tuple.Tuple "Test1" "test1"
, Tuple.Tuple "Test2" "test2"
]
eqSpec :: SpecHelpers.Test eqSpec :: SpecHelpers.Test
eqSpec = Spec.describe "eq" do eqSpec = Spec.describe "eq" do
Spec.describe "when the two Headers contain the same keys and values" do Spec.describe "when the two Headers contain the same keys and values" do
Spec.it "is true" do Spec.it "is true" do
eq mockHeaders1 mockHeaders2 ?= true Headers.header "Test1" "test1" == Headers.header "Test1" "test1" ?= true
Spec.describe "when the two Headers contain different keys and values" do Spec.describe "when the two Headers contain different keys and values" do
Spec.it "is false" do Spec.it "is false" do
eq mockHeaders1 mockHeaders3 ?= false Headers.header "Test1" "test1" == Headers.header "Test2" "test2" ?= false
Spec.describe "when the two Headers contain only different values" do
Spec.it "is false" do
Headers.header "Test1" "test1" == Headers.header "Test1" "test2" ?= false
Spec.describe "when the one Headers contains additional keys and values" do Spec.describe "when the one Headers contains additional keys and values" do
Spec.it "is false" do Spec.it "is false" do
eq mockHeaders1 mockHeaders4 ?= false let mock = Headers.header "Test1" "1" <> Headers.header "Test2" "2"
where Headers.header "Test1" "1" == mock ?= false
mockHeaders1 = Headers.headers [ Tuple.Tuple "Test1" "test1" ]
mockHeaders2 = Headers.headers [ Tuple.Tuple "Test1" "test1" ]
mockHeaders3 = Headers.headers [ Tuple.Tuple "Test2" "test2" ]
mockHeaders4 =
Headers.headers
[ Tuple.Tuple "Test1" "test1"
, Tuple.Tuple "Test2" "test2"
]
appendSpec :: SpecHelpers.Test appendSpec :: SpecHelpers.Test
appendSpec = Spec.describe "append" do appendSpec = Spec.describe "append" do
Spec.describe "when there are multiple keys" do Spec.describe "when there are multiple keys" do
Spec.it "appends the headers correctly" do Spec.it "appends the headers correctly" do
mockHeaders1 <> mockHeaders2 ?= mockHeaders3 let mock1 = Headers.header "Test1" "1" <> Headers.header "Test2" "2"
let mock2 = Headers.header "Test3" "3" <> Headers.header "Test4" "4"
let mock3 = Headers.headers
[ Tuple.Tuple "Test1" "1"
, Tuple.Tuple "Test2" "2"
, Tuple.Tuple "Test3" "3"
, Tuple.Tuple "Test4" "4"
]
mock1 <> mock2 ?= mock3
Spec.describe "when there is a duplicated key" do Spec.describe "when there is a duplicated key" do
Spec.it "uses the last appended value" do Spec.it "uses the last appended value" do
mockHeadersDupe1 <> mockHeadersDupe2 ?= mockHeadersDupe2 let mock = Headers.header "Test" "foo" <> Headers.header "Test" "bar"
where mock ?= Headers.header "Test" "bar"
mockHeadersDupe1 = Headers.headers [ Tuple.Tuple "Test" "foo" ]
mockHeadersDupe2 = Headers.headers [ Tuple.Tuple "Test" "bar" ]
mockHeaders1 =
Headers.headers
[ Tuple.Tuple "Test1" "test1"
, Tuple.Tuple "Test2" "test2"
]
mockHeaders2 =
Headers.headers
[ Tuple.Tuple "Test3" "test3"
, Tuple.Tuple "Test4" "test4"
]
mockHeaders3 =
Headers.headers
[ Tuple.Tuple "Test1" "test1"
, Tuple.Tuple "Test2" "test2"
, Tuple.Tuple "Test3" "test3"
, Tuple.Tuple "Test4" "test4"
]
readSpec :: SpecHelpers.Test readSpec :: SpecHelpers.Test
readSpec = Spec.describe "read" do readSpec = Spec.describe "read" do
Spec.describe "with no headers" do Spec.describe "with no headers" do
Spec.it "is an empty StrMap" do Spec.it "is an empty StrMap" do
request <- SpecHelpers.mockRequest "" "" "" [] request <- SpecHelpers.mockRequest "" "" "" []
Headers.read request ?= Headers.headers [] Headers.read request ?= Headers.empty
Spec.describe "with headers" do Spec.describe "with headers" do
Spec.it "is an StrMap with the contents of the headers" do Spec.it "is an StrMap with the contents of the headers" do
let testHeader = [Tuple.Tuple "X-Test" "test"] let testHeader = [Tuple.Tuple "X-Test" "test"]
@ -105,10 +82,32 @@ writeSpec = Spec.describe "write" do
Spec.it "writes the headers to the response" do Spec.it "writes the headers to the response" do
header <- EffClass.liftEff do header <- EffClass.liftEff do
mock <- SpecHelpers.mockResponse mock <- SpecHelpers.mockResponse
Headers.write mock $ Headers.headers [Tuple.Tuple "X-Test" "test"] Headers.write mock $ Headers.header "X-Test" "test"
pure $ SpecHelpers.getResponseHeader "X-Test" mock pure $ SpecHelpers.getResponseHeader "X-Test" mock
header ?= "test" header ?= "test"
emptySpec :: SpecHelpers.Test
emptySpec = Spec.describe "empty" do
Spec.it "is a empty StrMap in an empty Headers" do
show Headers.empty ?= "\n"
headerSpec :: SpecHelpers.Test
headerSpec = Spec.describe "header" do
Spec.it "creates a singleton Headers" do
show (Headers.header "X-Test" "test") ?= "X-Test: test\n\n"
headersFunctionSpec :: SpecHelpers.Test
headersFunctionSpec = Spec.describe "headers" do
Spec.it "is equivalent to using Headers.header with <>" do
test ?= expected
where
test =
Headers.headers
[ Tuple.Tuple "X-Test-1" "1"
, Tuple.Tuple "X-Test-2" "2"
]
expected = Headers.header "X-Test-1" "1" <> Headers.header "X-Test-2" "2"
headersSpec :: SpecHelpers.Test headersSpec :: SpecHelpers.Test
headersSpec = Spec.describe "Headers" do headersSpec = Spec.describe "Headers" do
lookupSpec lookupSpec
@ -117,3 +116,6 @@ headersSpec = Spec.describe "Headers" do
appendSpec appendSpec
readSpec readSpec
writeSpec writeSpec
emptySpec
headerSpec
headersFunctionSpec

View File

@ -40,7 +40,7 @@ readSpec = Spec.describe "read" do
Spec.describe "with complex params" do Spec.describe "with complex params" do
Spec.it "is the correct StrMap" do Spec.it "is the correct StrMap" do
req <- SpecHelpers.mockRequest "" "/test?&&a&b=c&b=d&&&e=f&g=&" "" [] req <- SpecHelpers.mockRequest "" "/test?&&a&b=c&b=d&&&e=f&g=&" "" []
Query.read req ?= expectedComplexResult Query.read req ?= expectedComplexResult
where where
expectedComplexResult = expectedComplexResult =
StrMap.fromFoldable StrMap.fromFoldable

View File

@ -3,8 +3,6 @@ module HTTPure.ResponseSpec where
import Prelude import Prelude
import Control.Monad.Eff.Class as EffClass import Control.Monad.Eff.Class as EffClass
import Data.Tuple as Tuple
import Test.Spec as Spec import Test.Spec as Spec
import HTTPure.Headers as Headers import HTTPure.Headers as Headers
@ -34,7 +32,7 @@ sendSpec = Spec.describe "send" do
pure $ SpecHelpers.getResponseBody httpResponse pure $ SpecHelpers.getResponseBody httpResponse
body ?= "test" body ?= "test"
where where
mockHeaders = Headers.headers [ Tuple.Tuple "Test" "test" ] mockHeaders = Headers.header "Test" "test"
mockResponse = { status: 123, headers: mockHeaders, body: "test" } mockResponse = { status: 123, headers: mockHeaders, body: "test" }
responseFunctionSpec :: SpecHelpers.Test responseFunctionSpec :: SpecHelpers.Test
@ -49,7 +47,7 @@ responseFunctionSpec = Spec.describe "response" do
resp <- mockResponse resp <- mockResponse
resp.body ?= "test" resp.body ?= "test"
where where
mockHeaders = Headers.headers [ Tuple.Tuple "Test" "test" ] mockHeaders = Headers.header "Test" "test"
mockResponse = Response.response 123 mockHeaders "test" mockResponse = Response.response 123 mockHeaders "test"
response'Spec :: SpecHelpers.Test response'Spec :: SpecHelpers.Test
@ -64,7 +62,7 @@ response'Spec = Spec.describe "response'" do
resp <- mockResponse resp <- mockResponse
resp.body ?= "" resp.body ?= ""
where where
mockHeaders = Headers.headers [ Tuple.Tuple "Test" "test" ] mockHeaders = Headers.header "Test" "test"
mockResponse = Response.response' 123 mockHeaders mockResponse = Response.response' 123 mockHeaders
responseSpec :: SpecHelpers.Test responseSpec :: SpecHelpers.Test