High-level access to HTTPS Everywhere rulesets.
Go to file
vi 663f9b61dc Build dependencies: permit text-icu 0.8. 2014-08-24 23:52:28 +08:00
ref Correct pipeline semantics. 2014-08-24 12:57:35 +08:00
src/Data Fixed Cookie parser -- fields and predicates were mismatched. 2014-08-24 14:00:27 +08:00
test Isolated tests for predicates defined in the top-level Internal module. 2014-08-23 19:00:48 +08:00
.gitignore Incomplete parser for HTTPS Everywhere rulesets. 2014-08-10 04:23:41 +08:00
DEBT.md Incomplete parser for HTTPS Everywhere rulesets. 2014-08-10 04:23:41 +08:00
LICENSE Incomplete parser for HTTPS Everywhere rulesets. 2014-08-10 04:23:41 +08:00
README.md README: reference https-everywhere-rules-raw. 2014-08-24 14:06:22 +08:00
Setup.hs Incomplete parser for HTTPS Everywhere rulesets. 2014-08-10 04:23:41 +08:00
https-everywhere-rules.cabal Build dependencies: permit text-icu 0.8. 2014-08-24 23:52:28 +08:00

README.md

https-everywhere-rules

Haskell package providing high-level access to HTTPS Everywhere rulesets. This makes it easier to tell other programs: "I'd like if you used secure HTTP connections when possible."

λ: :m + Data.HTTPSEverywhere.Rules Network.URI
λ: let Just eff = parseURI "http://www.eff.org/document/eff-and-aclu-amicus-brief-klayman"
λ: rewriteURL eff
Just https://www.eff.org/document/eff-and-aclu-amicus-brief-klayman
λ: :m + Web.Cookie Network.HTTP.Client Data.Time.Clock Control.Applicative
λ: :set -XOverloadedStrings
λ: (now, req) <- (,) <$> getCurrentTime <*> parseUrl "https://github.com"
λ: let (Just gh, Just ck) = (parseURI "https://github.com", generateCookie (def{setCookieDomain=Just "github.com"}) req now True)
λ: rewriteCookie gh ck
Cookie {cookie_name = "name", cookie_value = "value", cookie_expiry_time = 3013-12-25 00:00:00 UTC, cookie_domain = "github.com", cookie_path = "/", cookie_creation_time = 2014-08-24 05:58:20.691866 UTC, cookie_last_access_time = 2014-08-24 05:58:20.691866 UTC, cookie_persistent = False, cookie_host_only = False, cookie_secure_only = True, cookie_http_only = False}

Rules are provided via https-everywhere-rules-raw, which is versioned consistently with upstream releases. Thus, the version of the rule database used here is configurable via the installed version of that package.