summaryrefslogtreecommitdiff
path: root/Pancake
diff options
context:
space:
mode:
authordefanor <defanor@uberspace.net>2017-12-06 10:18:54 +0300
committerdefanor <defanor@uberspace.net>2017-12-06 10:18:54 +0300
commitd09155bcb8ce047d33ce97c34ae0c972281fe99d (patch)
tree0f825bdda1a975cfc81930294cc302f1ab1924d2 /Pancake
parentb075319adfe2b12fe81c5a4f8c5257e99e649a54 (diff)
Add a web.archive.org shortcut into the default configuration
Finding the last HTTP 200 response via the availability API, so a dummy "web-archive" scheme is added into the default configuration in order to use a custom command. The URI_ESCAPED environment variable is also introduced, though not used here -- but may be handy for similar custom commands.
Diffstat (limited to 'Pancake')
-rw-r--r--Pancake/Configuration.hs16
-rw-r--r--Pancake/Reading.hs4
2 files changed, 15 insertions, 5 deletions
diff --git a/Pancake/Configuration.hs b/Pancake/Configuration.hs
index 7c537bc..9ad60dc 100644
--- a/Pancake/Configuration.hs
+++ b/Pancake/Configuration.hs
@@ -82,9 +82,12 @@ instance Default Config where
[ ("ssh", "scp \"${URI_REGNAME}:${URI_PATH}\" /dev/stdout"
++ " && echo -e '\n-pancake-'")
, ("gopher", "curl \"${URI}\""
- ++ " -w \"\n-pancake-\n\"")]
- , defaultCommand = "curl --compressed -4 -L \"${URI}\""
- ++ " -w \"\n-pancake-\nuri: %{url_effective}\ntype: %{content_type}\n\""
+ ++ " -w \"\n-pancake-\n\"")
+ , ("web-archive", concat
+ [ curl
+ , "\"$(curl \"https://archive.org/wayback/available${URI_QUERY}"
+ , "\" | jq -r '.archived_snapshots.closest.url')\"" ])]
+ , defaultCommand = curl ++ "\"${URI}\""
, externalViewers = M.fromList $
map (flip (,) "emacsclient -n \"${FILE}\"")
["hs", "cabal", "c", "h", "el", "scm", "idr"]
@@ -98,12 +101,17 @@ instance Default Config where
, ("g", "https://m.gutenberg.org/ebooks/search.mobile/?query=")
, ("xiph", "http://dir.xiph.org/search?search=")
, ("gp", "gopher://gopherpedia.com:70/7/lookup?")
- , ("vs", "gopher://gopher.floodgap.com/7/v2/vs?")]
+ , ("vs", "gopher://gopher.floodgap.com/7/v2/vs?")
+ , ("wa", "web-archive:///?url=")]
, paginate = True
, historyDepth = 100
, referenceDigits = "0123456789"
, indentDivs = False
}
+ where
+ curl = concat
+ [ "curl --compressed -4 -L "
+ , "-w \"\n-pancake-\nuri: %{url_effective}\ntype: %{content_type}\n\" "]
-- | Loads configuration from an XDG config directory.
loadConfig :: MonadIO m => m Config
diff --git a/Pancake/Reading.hs b/Pancake/Reading.hs
index 0aa27f3..cdb4093 100644
--- a/Pancake/Reading.hs
+++ b/Pancake/Reading.hs
@@ -93,7 +93,9 @@ retrieve cmd uri = do
, ("URI_REGNAME", uriRegName x)
, ("URI_PORT", uriPort x) ])
(uriAuthority uri)
- environment = ("URI", uriToString id uri "")
+ uriStr = uriToString id uri ""
+ environment = ("URI", uriStr)
+ : ("URI_ESCAPED", escapeURIString isUnreserved uriStr)
: ("URI_SCHEME", uriScheme uri)
: ("URI_PATH", uriPath uri)
: ("URI_QUERY", uriQuery uri)