Skip to content

Commit 9ad20f0

Browse files
committed
Merge pull request #70 from ambiata/topic/http-types-widen
Widen http-types range and put custom headers back in.
2 parents 1d82d4a + a0ad8be commit 9ad20f0

File tree

2 files changed

+31
-11
lines changed

2 files changed

+31
-11
lines changed

airship.cabal

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ library
4848
, filepath >= 1.3 && < 1.5
4949
, http-date
5050
, http-media
51-
, http-types == 0.9.*
51+
, http-types >= 0.8 && <0.10
5252
, lifted-base == 0.2.*
5353
, microlens
5454
, monad-control >= 1.0

src/Airship/Internal/Decision.hs

+30-10
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,27 @@ import Data.ByteString (ByteString, intercalate)
4343

4444
import Network.HTTP.Media
4545
import qualified Network.HTTP.Types as HTTP
46-
import qualified Network.HTTP.Types.Header as HTTP
46+
47+
------------------------------------------------------------------------------
48+
-- HTTP Headers
49+
-- These are headers not defined for us already in
50+
-- Network.HTTP.Types
51+
------------------------------------------------------------------------------
52+
-- TODO this exist in http-types-0.9, see CHANGES.txt
53+
hAcceptCharset :: HTTP.HeaderName
54+
hAcceptCharset = "Accept-Charset"
55+
56+
hAcceptEncoding :: HTTP.HeaderName
57+
hAcceptEncoding = "Accept-Encoding"
58+
59+
hIfMatch :: HTTP.HeaderName
60+
hIfMatch = "If-Match"
61+
62+
hIfUnmodifiedSince :: HTTP.HeaderName
63+
hIfUnmodifiedSince = "If-Unmodified-Since"
64+
65+
hIfNoneMatch :: HTTP.HeaderName
66+
hIfNoneMatch = "If-None-Match"
4767

4868
------------------------------------------------------------------------------
4969
-- FlowState: StateT used for recording information as we walk the decision
@@ -66,7 +86,7 @@ flow r = evalStateT (b13 r) initFlowState
6686
trace :: Monad m => Text -> FlowStateT m ()
6787
trace t = lift $ tell [t]
6888

69-
------------------------------------------------------------------------------
89+
-----------------------------------------------------------------------------
7090
-- Header value data newtypes
7191
------------------------------------------------------------------------------
7292

@@ -305,7 +325,7 @@ e05 r@Resource{..} = do
305325
trace "e05"
306326
req <- lift request
307327
let reqHeaders = requestHeaders req
308-
case lookup HTTP.hAcceptCharset reqHeaders of
328+
case lookup hAcceptCharset reqHeaders of
309329
(Just _h) ->
310330
e06 r
311331
Nothing ->
@@ -324,7 +344,7 @@ f06 r@Resource{..} = do
324344
trace "f06"
325345
req <- lift request
326346
let reqHeaders = requestHeaders req
327-
case lookup HTTP.hAcceptEncoding reqHeaders of
347+
case lookup hAcceptEncoding reqHeaders of
328348
(Just _h) ->
329349
f07 r
330350
Nothing ->
@@ -354,7 +374,7 @@ g08 r@Resource{..} = do
354374
trace "g08"
355375
req <- lift request
356376
let reqHeaders = requestHeaders req
357-
case IfMatch <$> lookup HTTP.hIfMatch reqHeaders of
377+
case IfMatch <$> lookup hIfMatch reqHeaders of
358378
(Just h) ->
359379
g09 h r
360380
Nothing ->
@@ -375,7 +395,7 @@ g07 r@Resource{..} = do
375395
h12 r@Resource{..} = do
376396
trace "h12"
377397
modified <- lift lastModified
378-
parsedDate <- lift $ requestHeaderDate HTTP.hIfUnmodifiedSince
398+
parsedDate <- lift $ requestHeaderDate hIfUnmodifiedSince
379399
let maybeGreater = do
380400
lastM <- modified
381401
headerDate <- parsedDate
@@ -386,7 +406,7 @@ h12 r@Resource{..} = do
386406

387407
h11 r@Resource{..} = do
388408
trace "h11"
389-
parsedDate <- lift $ requestHeaderDate HTTP.hIfUnmodifiedSince
409+
parsedDate <- lift $ requestHeaderDate hIfUnmodifiedSince
390410
if isJust parsedDate
391411
then h12 r
392412
else i12 r
@@ -395,7 +415,7 @@ h10 r@Resource{..} = do
395415
trace "h10"
396416
req <- lift request
397417
let reqHeaders = requestHeaders req
398-
case lookup HTTP.hIfUnmodifiedSince reqHeaders of
418+
case lookup hIfUnmodifiedSince reqHeaders of
399419
(Just _h) ->
400420
h11 r
401421
Nothing ->
@@ -405,7 +425,7 @@ h07 r@Resource {..} = do
405425
trace "h07"
406426
req <- lift request
407427
let reqHeaders = requestHeaders req
408-
case lookup HTTP.hIfMatch reqHeaders of
428+
case lookup hIfMatch reqHeaders of
409429
-- TODO: should we be stripping whitespace here?
410430
(Just "*") ->
411431
lift $ halt HTTP.status412
@@ -429,7 +449,7 @@ i12 r@Resource{..} = do
429449
trace "i12"
430450
req <- lift request
431451
let reqHeaders = requestHeaders req
432-
case IfNoneMatch <$> lookup HTTP.hIfNoneMatch reqHeaders of
452+
case IfNoneMatch <$> lookup hIfNoneMatch reqHeaders of
433453
(Just h) ->
434454
i13 h r
435455
Nothing ->

0 commit comments

Comments
 (0)