Drop the dependency on the haskell curl bindings, use regular haskell HTTP.

This commit is contained in:
Joey Hess 2011-07-04 19:31:45 -04:00
parent 71c783bf24
commit 5c69ac14eb
7 changed files with 25 additions and 15 deletions

View file

@ -14,10 +14,9 @@ module Remote.Web (
import Control.Monad.State (liftIO)
import Control.Exception
import System.FilePath
import Network.Curl.Easy
import Network.Curl.Opts
import Network.Curl.Types
import Network.Curl.Code
import Network.Browser
import Network.HTTP
import Network.URI
import Types
import Types.Remote
@ -31,6 +30,8 @@ import PresenceLog
import LocationLog
import Locations
type URLString = String
remote :: RemoteType Annex
remote = RemoteType {
typename = "web",
@ -111,13 +112,19 @@ checkKey' (u:us) = do
urlexists :: URLString -> IO Bool
urlexists url = do
curl <- initialize
_ <- setopt curl (CurlURL url)
_ <- setopt curl (CurlNoBody True)
_ <- setopt curl (CurlFailOnError True)
_ <- setopt curl (CurlFollowLocation True)
res <- perform curl
return $ res == CurlOK
case parseURI url of
Nothing -> return False
Just u -> do
(_, r) <- Network.Browser.browse $ do
setErrHandler ignore
setOutHandler ignore
setAllowRedirects True
request (mkRequest HEAD u :: Request_String)
case rspCode r of
(2,_,_) -> return True
_ -> return False
where
ignore = const $ return ()
download :: [URLString] -> FilePath -> Annex Bool
download [] _ = return False

1
debian/changelog vendored
View file

@ -5,6 +5,7 @@ git-annex (3.20110703) UNRELEASED; urgency=low
hard link made to it.
* uninit: Use unannex in --fast mode, to support unannexing multiple
files that link to the same content.
* Drop the dependency on the haskell curl bindings, use regular haskell HTTP.
-- Joey Hess <joeyh@debian.org> Mon, 04 Jul 2011 15:50:21 -0400

2
debian/control vendored
View file

@ -9,8 +9,8 @@ Build-Depends:
libghc-pcre-light-dev,
libghc-sha-dev,
libghc-dataenc-dev,
libghc-http-dev,
libghc-utf8-string-dev,
libghc-curl-dev,
libghc-hs3-dev (>= 0.5.6),
libghc-testpack-dev [any-i386 any-amd64],
ikiwiki,

View file

@ -25,7 +25,7 @@ To build and use git-annex, you will need:
* [dataenc](http://hackage.haskell.org/package/dataenc)
* [TestPack](http://hackage.haskell.org/cgi-bin/hackage-scripts/package/testpack)
* [QuickCheck 2](http://hackage.haskell.org/package/QuickCheck)
* [curl](http://hackage.haskell.org/package/curl)
* [HTTP](http://hackage.haskell.org/package/HTTP)
* [hS3](http://hackage.haskell.org/package/hS3) (optional, but recommended)
* Shell commands
* [git](http://git-scm.com/)

View file

@ -9,6 +9,7 @@ sudo cabal install pcre-light
sudo cabal install quickcheck
sudo cabal install SHA
sudo cabal install dataenc
sudo cabal install HTTP
sudo cabal install hS3
git clone git://git-annex.branchable.com/

View file

@ -7,6 +7,7 @@ sudo cabal install pcre-light
sudo cabal install quickcheck
sudo cabal install SHA
sudo cabal install dataenc
sudo cabal install HTTP
sudo cabal install hS3 # optional
# optional: this will enable the gnu tools, (to give sha224sum etc..., it does not override the BSD userland)

View file

@ -30,14 +30,14 @@ Executable git-annex
Main-Is: git-annex.hs
Build-Depends: haskell98, MissingH, hslogger, directory, filepath,
unix, containers, utf8-string, network, mtl, bytestring, old-locale, time,
pcre-light, extensible-exceptions, dataenc, SHA, process, hS3, curl,
pcre-light, extensible-exceptions, dataenc, SHA, process, hS3, HTTP
base < 5
Executable git-annex-shell
Main-Is: git-annex-shell.hs
Build-Depends: haskell98, MissingH, hslogger, directory, filepath,
unix, containers, utf8-string, network, mtl, bytestring, old-locale, time,
pcre-light, extensible-exceptions, dataenc, SHA, process, hS3, curl,
pcre-light, extensible-exceptions, dataenc, SHA, process, hS3, HTTP
base < 5
Executable git-union-merge