curl-1.3.8: Haskell binding to libcurl
Copyright(c) 2007-2009 Galois Inc
LicenseBSD3
MaintainerSigbjorn Finne <sof@galois.com>
Stabilityprovisional
Portabilityportable
Safe HaskellSafe-Inferred
LanguageHaskell98

Network.Curl

Description

A Haskell binding the libcurl library http://curl.haxx.se/, a proven and feature-rich library for interacting with HTTP(S)/FTP servers.

The binding was initially made against version 7.16.2; libcurl does appear to be considerate in not introducing breaking changes wrt older versions. So, unless you're after the latest features (i.e., constructors towards the end the Option type), there's a very good chance your code will work against older installations of libcurl.

Synopsis

Documentation

withCurlDo :: IO a -> IO a #

Should be used once to wrap all uses of libcurl. WARNING: the argument should not return before it is completely done with curl (e.g., no forking or lazy returns)

setopts :: Curl -> [CurlOption] -> IO () #

Set a list of options on a Curl handle.

data CurlResponse_ headerTy bodyTy #

CurlResponse_ is a record type encoding all the information embodied in a response to your Curl request. Currently only used to gather up the results of doing a GET in curlGetResponse.

Constructors

CurlResponse 

Fields

type CurlResponse = CurlResponse_ [(String, String)] String #

curlGet :: URLString -> [CurlOption] -> IO () #

curlGet perform a basic GET, dumping the output on stdout. The list of options are set prior performing the GET request.

curlGetString :: URLString -> [CurlOption] -> IO (CurlCode, String) #

curlGetString performs the same request as curlGet, but returns the response body as a Haskell string.

curlGetResponse :: URLString -> [CurlOption] -> IO CurlResponse #

Deprecated: Switch to using curlGetResponse_

perform_with_response :: (CurlHeader hdrTy, CurlBuffer bufTy) => Curl -> IO (CurlResponse_ hdrTy bufTy) #

Deprecated: Consider switching to perform_with_response_

Perform the actions already specified on the handle. Collects useful information about the returned message. Note that this function sets the CurlWriteFunction and CurlHeaderFunction options.

do_curl :: Curl -> URLString -> [CurlOption] -> IO CurlResponse #

Deprecated: Consider switching to do_curl_

Performs a curl request using an exisitng curl handle. The provided URL will overwride any CurlURL options that are provided in the list of options. See also: perform_with_response.

curlGetResponse_ :: (CurlHeader hdr, CurlBuffer ty) => URLString -> [CurlOption] -> IO (CurlResponse_ hdr ty) #

curlGetResponse url opts performs a GET, returning all the info it can lay its hands on in the response, a value of type CurlResponse. The representation of the body is overloaded

perform_with_response_ :: (CurlHeader headerTy, CurlBuffer bodyTy) => Curl -> IO (CurlResponse_ headerTy bodyTy) #

Perform the actions already specified on the handle. Collects useful information about the returned message. Note that this function sets the CurlWriteFunction and CurlHeaderFunction options. The returned payload is overloaded over the representation of both headers and body via the CurlResponse_ type.

do_curl_ :: (CurlHeader headerTy, CurlBuffer bodyTy) => Curl -> URLString -> [CurlOption] -> IO (CurlResponse_ headerTy bodyTy) #

curlHead_ :: CurlHeader headers => URLString -> [CurlOption] -> IO (String, headers) #

Get the headers associated with a particular URL. Returns the status line and the key-value pairs for the headers.

curlHead :: URLString -> [CurlOption] -> IO (String, [(String, String)]) #

Get the headers associated with a particular URL. Returns the status line and the key-value pairs for the headers.

curlMultiPost :: URLString -> [CurlOption] -> [HttpPost] -> IO () #

curlMultiPost perform a multi-part POST submission.

curlPost :: URLString -> [String] -> IO () #

curlPost performs. a common POST operation, namely that of submitting a sequence of name=value pairs.

getResponseCode :: Curl -> IO Int #

callbackWriter :: (String -> IO ()) -> WriteFunction #

Imports data into the Haskell world and invokes the callback.

easyWriter :: (String -> IO ()) -> WriteFunction #

ignoreOutput :: WriteFunction #

The output of Curl is ignored. This function does not marshall data into Haskell.

gatherOutput :: IORef [String] -> WriteFunction #

Add chunks of data to an IORef as they arrive.

gatherOutput_ :: (CStringLen -> IO ()) -> WriteFunction #

Add chunks of data to an IORef as they arrive.

class CurlBuffer bufferTy where #

The CurlBuffer class encodes the representation of response buffers, allowing you to provide your own app-specific buffer reps to be used..or use one of the standard instances (String and ByteStrings.)

Methods

newIncoming :: IO (IO bufferTy, CStringLen -> IO ()) #

Instances

Instances details
CurlBuffer String # 
Instance details

Defined in Network.Curl

Methods

newIncoming :: IO (IO String, CStringLen -> IO ()) #

CurlBuffer ByteString # 
Instance details

Defined in Network.Curl

Methods

newIncoming :: IO (IO ByteString, CStringLen -> IO ()) #

CurlBuffer ByteString # 
Instance details

Defined in Network.Curl

Methods

newIncoming :: IO (IO ByteString, CStringLen -> IO ()) #

CurlBuffer [ByteString] # 
Instance details

Defined in Network.Curl

Methods

newIncoming :: IO (IO [ByteString], CStringLen -> IO ()) #

class CurlHeader headerTy where #

The CurlHeader class encodes the representation of response headers. Similar to CurlBuffer.

Methods

newIncomingHeader :: IO (IO (String, headerTy), CStringLen -> IO ()) #

Instances

Instances details
CurlHeader [(String, String)] # 
Instance details

Defined in Network.Curl

Methods

newIncomingHeader :: IO (IO (String, [(String, String)]), CStringLen -> IO ()) #

parseStatusNHeaders :: String -> (String, [(String, String)]) #

parseHeader :: String -> (String, String) #

concRev :: [a] -> [[a]] -> [a] #