diff --git a/https-everywhere-rules.cabal b/https-everywhere-rules.cabal index acc7874..da41620 100644 --- a/https-everywhere-rules.cabal +++ b/https-everywhere-rules.cabal @@ -13,7 +13,7 @@ license-file: author: vi maintainer: - vi@zalora.com + vi@computational.law category: Data build-type: @@ -628,22 +628,21 @@ library Data.Text.ICU.Extras, Paths_https_everywhere_rules build-depends: - base >= 4.7 && < 4.10, - attoparsec >= 0.12 && < 0.14, - directory >= 1.2 && < 1.4, - errors >= 1.4 && < 2.2, - filepath >= 1.3 && < 1.5, - functor-infix >= 0.0 && < 0.1, - http-client >= 0.3 && < 0.6, - lens >= 4.3 && < 4.16, - mtl >= 2.2 && < 2.3, - network >= 2.6 && < 2.7, - network-uri >= 2.6 && < 2.7, - pipes >= 4.1 && < 4.4, - string-conversions >= 0.3 && < 0.5, - taggy-lens >= 0.1 && < 0.2, - text >= 1.1 && < 1.3, - text-icu >= 0.6 && < 0.8 + base, + attoparsec, + directory, + errors, + filepath, + http-client, + lens, + mtl, + network, + network-uri, + pipes, + string-conversions, + taggy-lens, + text, + text-icu hs-source-dirs: src default-language: @@ -655,23 +654,22 @@ test-suite spec type: exitcode-stdio-1.0 build-depends: - base >= 4.7 && < 4.10, - attoparsec >= 0.12 && < 0.14, - directory >= 1.2 && < 1.4, - errors >= 1.4 && < 2.2, - filepath >= 1.3 && < 1.5, - functor-infix >= 0.0 && < 0.1, - hspec >= 2.0 && < 2.5, - http-client >= 0.3 && < 0.6, - lens >= 4.3 && < 4.16, - mtl >= 2.2 && < 2.3, - network >= 2.6 && < 2.7, - network-uri >= 2.6 && < 2.7, - pipes >= 4.1 && < 4.4, - string-conversions >= 0.3 && < 0.5, - taggy-lens >= 0.1 && < 0.2, - text >= 1.1 && < 1.3, - text-icu >= 0.6 && < 0.8, + base, + attoparsec, + directory, + errors, + filepath, + hspec, + http-client, + lens, + mtl, + network, + network-uri, + pipes, + string-conversions, + taggy-lens, + text, + text-icu, https-everywhere-rules main-is: Spec.hs @@ -709,7 +707,7 @@ executable redirect-proxy RedirectProxy.hs if flag(build-examples) build-depends: - base >= 4.7 && < 4.10, + base, bytestring, http-proxy, http-types, diff --git a/src/Data/HTTPSEverywhere/Rules.hs b/src/Data/HTTPSEverywhere/Rules.hs index e8cb96d..9c1ec2e 100644 --- a/src/Data/HTTPSEverywhere/Rules.hs +++ b/src/Data/HTTPSEverywhere/Rules.hs @@ -7,7 +7,6 @@ module Data.HTTPSEverywhere.Rules ( import Prelude hiding (null, head) import Data.Bool (bool) -import Data.Functor.Infix ((<$$>), (<$$$>)) import Network.HTTP.Client (Cookie) import Network.URI (URI) import Pipes ((>->)) @@ -19,11 +18,11 @@ rewriteURL' :: Monad m => [RuleSet] -> URI -> m (Maybe URI) rewriteURL' rs url = head $ getRulesetsMatching rs url >-> havingRulesThatTrigger url rewriteURL :: [RuleSet] -> (URI -> Maybe URI) -rewriteURL = runIdentity <$$> rewriteURL' +rewriteURL = fmap runIdentity <$> rewriteURL' rewriteCookie' :: Monad m => [RuleSet] -> URI -> Cookie -> m (Maybe Cookie) rewriteCookie' rs url cookie = Just (setSecureFlag cookie) `bool` Nothing <$> null producer where producer = getRulesetsMatching rs url >-> havingCookieRulesThatTrigger cookie rewriteCookie :: [RuleSet] -> URI -> (Cookie -> Maybe Cookie) -rewriteCookie = runIdentity <$$$> rewriteCookie' +rewriteCookie = fmap (fmap runIdentity) <$> rewriteCookie' diff --git a/src/Data/HTTPSEverywhere/Rules/Internal.hs b/src/Data/HTTPSEverywhere/Rules/Internal.hs index ae8c09f..f90b938 100644 --- a/src/Data/HTTPSEverywhere/Rules/Internal.hs +++ b/src/Data/HTTPSEverywhere/Rules/Internal.hs @@ -19,7 +19,6 @@ import Control.Applicative ((<*>), (<$>)) import Control.Lens ((&)) import Control.Monad ((<=<), join) import Data.Bool (bool) -import Data.Functor.Infix ((<$$>)) import Data.List (find) import Data.Maybe (isJust) import Network.HTTP.Client (Cookie(..)) @@ -33,7 +32,7 @@ import Data.HTTPSEverywhere.Rules.Internal.Types (RuleSet(..), Target(..), Exclu getRulesets' :: Producer RuleSet IO () getRulesets' = lift Raw.getRules - >>= flip (for . each) (flip (for . each) yield <=< lift . (parseRuleSets <$$> Raw.getRule)) + >>= flip (for . each) (flip (for . each) yield <=< lift . (fmap parseRuleSets <$> Raw.getRule)) getRulesets :: IO [RuleSet] getRulesets = toListM getRulesets' @@ -53,19 +52,19 @@ havingCookieRulesThatTrigger cookie = flip hasTriggeringCookieRuleOn cookie <$> hasTargetMatching :: RuleSet -> URI -> Bool hasTargetMatching ruleset url = getTargets ruleset <*> [url] & or - where getTargets = getTarget <$$> ruleSetTargets + where getTargets = fmap getTarget <$> ruleSetTargets hasExclusionMatching :: RuleSet -> URI -> Bool hasExclusionMatching ruleset url = getExclusions ruleset <*> [url] & or - where getExclusions = getExclusion <$$> ruleSetExclusions + where getExclusions = fmap getExclusion <$> ruleSetExclusions hasTriggeringRuleOn :: RuleSet -> URI -> Maybe URI -- Nothing ~ False hasTriggeringRuleOn ruleset url = getRules ruleset <*> [url] & find isJust & join - where getRules = getRule <$$> ruleSetRules + where getRules = fmap getRule <$> ruleSetRules hasTriggeringCookieRuleOn :: RuleSet -> Cookie -> Bool hasTriggeringCookieRuleOn ruleset cookie = getCookieRules ruleset <*> [cookie] & or - where getCookieRules = getCookieRule <$$> ruleSetCookieRules + where getCookieRules = fmap getCookieRule <$> ruleSetCookieRules setSecureFlag :: Cookie -> Cookie setSecureFlag cookie = cookie { cookie_secure_only = True } diff --git a/src/Data/HTTPSEverywhere/Rules/Internal/Parser.hs b/src/Data/HTTPSEverywhere/Rules/Internal/Parser.hs index f2fb1c6..dc1c97b 100644 --- a/src/Data/HTTPSEverywhere/Rules/Internal/Parser.hs +++ b/src/Data/HTTPSEverywhere/Rules/Internal/Parser.hs @@ -17,7 +17,6 @@ import Control.Monad (join) import Control.Monad.State (State, evalState, modify', gets) import Data.Bifunctor (bimap) import Data.Bool (bool) -import Data.Functor.Infix ((<$$>)) import Data.Maybe (catMaybes) import Data.String.Conversions (cs) import qualified Data.Text as Strict (Text) @@ -31,7 +30,7 @@ import Data.HTTPSEverywhere.Rules.Internal.Types (RuleSet(..), Target(..), Rule( import Data.Text.ICU.Extras (match, findAndReplace) parseRuleSets :: Lazy.Text -> [RuleSet] -parseRuleSets = catMaybes <$$> toListOf $ html . allNamed (only "ruleset") . to parseRuleSet +parseRuleSets = fmap catMaybes <$> toListOf $ html . allNamed (only "ruleset") . to parseRuleSet parseRuleSet :: Element -> Maybe RuleSet parseRuleSet xml = xml ^. attr "name" <&> \ruleSetName -> do @@ -65,7 +64,7 @@ parseRule element = do return . Rule $ join . fmap (parseURI . cs) . substitute . cs . show parseExclusion :: Strict.Text -> Maybe Exclusion -parseExclusion = Exclusion . (. cs . show) <$$> match +parseExclusion = fmap (Exclusion . (. cs . show)) <$> match parseCookieRule :: Element -> Maybe CookieRule parseCookieRule element = CookieRule <$> do diff --git a/src/Data/HTTPSEverywhere/Rules/Internal/Raw.hs b/src/Data/HTTPSEverywhere/Rules/Internal/Raw.hs index a20386c..00d8b0a 100644 --- a/src/Data/HTTPSEverywhere/Rules/Internal/Raw.hs +++ b/src/Data/HTTPSEverywhere/Rules/Internal/Raw.hs @@ -4,7 +4,6 @@ module Data.HTTPSEverywhere.Rules.Internal.Raw ( ) where import Prelude hiding (readFile) -import Data.Functor.Infix ((<$$>)) import Data.Text.Lazy (Text) import Data.Text.Lazy.IO (readFile) import System.Directory (getDirectoryContents) @@ -16,8 +15,8 @@ getRule :: FilePath -> IO Text getRule = readFile getRules :: IO [FilePath] -getRules = getDataFileName [] >>= filter isXML <$$> getAbsoluteDirectoryContents +getRules = getDataFileName [] >>= fmap (filter isXML) <$> getAbsoluteDirectoryContents where isXML = (== ".xml") . takeExtension getAbsoluteDirectoryContents :: FilePath -> IO [FilePath] -getAbsoluteDirectoryContents x = combine x <$$> getDirectoryContents x +getAbsoluteDirectoryContents x = fmap (combine x) <$> getDirectoryContents x diff --git a/src/Data/Text/ICU/Extras.hs b/src/Data/Text/ICU/Extras.hs index d722ec2..7979e83 100644 --- a/src/Data/Text/ICU/Extras.hs +++ b/src/Data/Text/ICU/Extras.hs @@ -17,7 +17,6 @@ import Control.Applicative ((<$>), (<*>), (*>), (<|>)) import Control.Error (hush) import Data.Attoparsec.Text (Parser, char, digit, takeWhile1, string, many', parseOnly) import Data.Char (digitToInt) -import Data.Functor.Infix ((<$$>), (<&>)) import Data.Maybe (isJust) import Data.Monoid (Monoid(mappend, mconcat)) import Data.Text (Text) @@ -27,7 +26,7 @@ regex :: Text -> Maybe Regex regex = hush . regex' [] match :: Text -> Maybe (Text -> Bool) -match = (isJust <$$> find) <$$> regex +match = fmap (fmap isJust <$> find) <$> regex findAndReplace :: Text -> Text -> Maybe (Text -> Maybe Text) findAndReplace pattern replacement = (.) @@ -41,7 +40,7 @@ data Segment = Reference Int | Literal Text deriving (Show, Eq) -- JavaScript admits at most nine capture groups, so this is the correct -- (and likely intended) interpretation. parseReference :: Parser Segment -parseReference = char '$' *> digit <&> Reference . digitToInt +parseReference = (Reference . digitToInt) <$> (char '$' *> digit) parseLiteral :: Parser Segment parseLiteral = Literal <$> takeWhile1 (/= '$') diff --git a/stack.yaml b/stack.yaml index 6ba0ee1..33cb160 100644 --- a/stack.yaml +++ b/stack.yaml @@ -1,6 +1,8 @@ packages: - . extra-deps: -- functor-infix-0.0.5 -- http-proxy-0.1.0.5 -resolver: lts-8.24 +- taggy-0.2.1 +- taggy-lens-0.1.2 +- http-proxy-0.1.0.6 +resolver: lts-11.14 +allow-newer: true