diff options
author | Joey Hess <joeyh@joeyh.name> | 2014-12-08 19:14:24 -0400 |
---|---|---|
committer | Joey Hess <joeyh@joeyh.name> | 2014-12-08 19:15:07 -0400 |
commit | 929de31900dbc9654e0bcc1f4679f526aee7f99a (patch) | |
tree | d868a3bbae9a0af26191f461f317f6d40b08a2af /Remote.hs | |
parent | 28764ce2dc29d1d93989b4061b5b12bac10902de (diff) |
Urls can now be claimed by remotes. This will allow creating, for example, a external special remote that handles magnet: and *.torrent urls.
Diffstat (limited to 'Remote.hs')
-rw-r--r-- | Remote.hs | 13 |
1 files changed, 12 insertions, 1 deletions
@@ -45,7 +45,8 @@ module Remote ( forceTrust, logStatus, checkAvailable, - isXMPPRemote + isXMPPRemote, + claimingUrl, ) where import qualified Data.Map as M @@ -60,6 +61,7 @@ import Annex.UUID import Logs.UUID import Logs.Trust import Logs.Location hiding (logStatus) +import Logs.Web import Remote.List import Config import Git.Types (RemoteName) @@ -318,3 +320,12 @@ hasKey r k = either (Left . show) Right <$> tryNonAsync (checkPresent r k) hasKeyCheap :: Remote -> Bool hasKeyCheap = checkPresentCheap + +{- The web special remote claims urls by default. -} +claimingUrl :: URLString -> Annex Remote +claimingUrl url = do + rs <- remoteList + let web = Prelude.head $ filter (\r -> uuid r == webUUID) rs + fromMaybe web <$> firstM checkclaim rs + where + checkclaim = maybe (pure False) (flip id url) . claimUrl |