module Network.CURL000.Types where
import qualified Network.CURL000.LibCC as C
import Control.Exception (Exception)
import Control.Concurrent (MVar)
import Data.Time.Clock (UTCTime)
import Data.ByteString (ByteString)
import Data.Typeable (Typeable, typeOf)
import Data.Maybe (mapMaybe)
import Data.List (foldl')
import Data.Bits ((.|.), (.&.))
import Data.Int (Int64)
import Data.Unique (Unique, hashUnique)
import Data.IORef (IORef)
import Foreign.C.Types
import Foreign.Ptr
class ENUM a where
toENUM :: a -> CULong
enumlist :: [a]
instance ENUM a => ENUM [a] where
toENUM = foldl' (.|.) 0 . map toENUM
enumlist = []
toCInt :: ENUM a => a -> CInt
toCInt = fromIntegral . toENUM
toCLong :: ENUM a => a -> CLong
toCLong = fromIntegral . toENUM
fromCIntMask :: ENUM a => CInt -> [a]
fromCIntMask mask =
let checkBit x = if ((mask .&. (toCInt x)) == 0) then Nothing else Just x
in mapMaybe checkBit enumlist
fromCLongMask :: ENUM a => CLong -> [a]
fromCLongMask mask =
let checkBit x = if ((mask .&. (toCLong x)) == 0) then Nothing else Just x
in mapMaybe checkBit enumlist
fromCInt :: (ENUM a, Typeable a) => CInt -> a
fromCInt cval =
let enums = map (\enum -> (toCInt enum, enum)) enumlist
enumE = error $ concat ["<curlhs> unknown constant (", v, ") -> ", t]
(v,t) = (show cval, show $ typeOf $ snd $ head enums)
in maybe enumE id $ lookup cval enums
deriving instance Show CURLfeature
data CURLfeature
= CURL_VERSION_IPV6
| CURL_VERSION_KERBEROS4
| CURL_VERSION_SSL
| CURL_VERSION_LIBZ
| CURL_VERSION_NTLM
| CURL_VERSION_GSSNEGOTIATE
| CURL_VERSION_DEBUG
| CURL_VERSION_CURLDEBUG
| CURL_VERSION_ASYNCHDNS
| CURL_VERSION_SPNEGO
| CURL_VERSION_LARGEFILE
| CURL_VERSION_IDN
| CURL_VERSION_SSPI
| CURL_VERSION_CONV
| CURL_VERSION_TLSAUTH_SRP
| CURL_VERSION_NTLM_WB
instance ENUM CURLfeature where
enumlist = [ CURL_VERSION_IPV6 , CURL_VERSION_KERBEROS4 , CURL_VERSION_SSL , CURL_VERSION_LIBZ , CURL_VERSION_NTLM , CURL_VERSION_GSSNEGOTIATE , CURL_VERSION_DEBUG , CURL_VERSION_CURLDEBUG , CURL_VERSION_ASYNCHDNS , CURL_VERSION_SPNEGO , CURL_VERSION_LARGEFILE , CURL_VERSION_IDN , CURL_VERSION_SSPI , CURL_VERSION_CONV , CURL_VERSION_TLSAUTH_SRP , CURL_VERSION_NTLM_WB ]
toENUM x = case x of
CURL_VERSION_IPV6 -> 1
CURL_VERSION_KERBEROS4 -> 2
CURL_VERSION_SSL -> 4
CURL_VERSION_LIBZ -> 8
CURL_VERSION_NTLM -> 16
CURL_VERSION_GSSNEGOTIATE -> 32
CURL_VERSION_DEBUG -> 64
CURL_VERSION_CURLDEBUG -> 8192
CURL_VERSION_ASYNCHDNS -> 128
CURL_VERSION_SPNEGO -> 256
CURL_VERSION_LARGEFILE -> 512
CURL_VERSION_IDN -> 1024
CURL_VERSION_SSPI -> 2048
CURL_VERSION_CONV -> 4096
CURL_VERSION_TLSAUTH_SRP -> 16384
CURL_VERSION_NTLM_WB -> 32768
data CURLproto
= CURLPROTO_ALL
| CURLPROTO_HTTP
| CURLPROTO_HTTPS
| CURLPROTO_FTP
| CURLPROTO_FTPS
| CURLPROTO_SCP
| CURLPROTO_SFTP
| CURLPROTO_TELNET
| CURLPROTO_LDAP
| CURLPROTO_LDAPS
| CURLPROTO_DICT
| CURLPROTO_FILE
| CURLPROTO_TFTP
| CURLPROTO_IMAP
| CURLPROTO_IMAPS
| CURLPROTO_POP3
| CURLPROTO_POP3S
| CURLPROTO_SMTP
| CURLPROTO_SMTPS
| CURLPROTO_RTSP
| CURLPROTO_RTMP
| CURLPROTO_RTMPT
| CURLPROTO_RTMPE
| CURLPROTO_RTMPTE
| CURLPROTO_RTMPS
| CURLPROTO_RTMPTS
| CURLPROTO_GOPHER
instance ENUM CURLproto where
enumlist = [ CURLPROTO_ALL , CURLPROTO_HTTP , CURLPROTO_HTTPS , CURLPROTO_FTP , CURLPROTO_FTPS , CURLPROTO_SCP , CURLPROTO_SFTP , CURLPROTO_TELNET , CURLPROTO_LDAP , CURLPROTO_LDAPS , CURLPROTO_DICT , CURLPROTO_FILE , CURLPROTO_TFTP , CURLPROTO_IMAP , CURLPROTO_IMAPS , CURLPROTO_POP3 , CURLPROTO_POP3S , CURLPROTO_SMTP , CURLPROTO_SMTPS , CURLPROTO_RTSP , CURLPROTO_RTMP , CURLPROTO_RTMPT , CURLPROTO_RTMPE , CURLPROTO_RTMPTE , CURLPROTO_RTMPS , CURLPROTO_RTMPTS , CURLPROTO_GOPHER ]
toENUM x = case x of
CURLPROTO_ALL -> 18446744073709551615
CURLPROTO_HTTP -> 1
CURLPROTO_HTTPS -> 2
CURLPROTO_FTP -> 4
CURLPROTO_FTPS -> 8
CURLPROTO_SCP -> 16
CURLPROTO_SFTP -> 32
CURLPROTO_TELNET -> 64
CURLPROTO_LDAP -> 128
CURLPROTO_LDAPS -> 256
CURLPROTO_DICT -> 512
CURLPROTO_FILE -> 1024
CURLPROTO_TFTP -> 2048
CURLPROTO_IMAP -> 4096
CURLPROTO_IMAPS -> 8192
CURLPROTO_POP3 -> 16384
CURLPROTO_POP3S -> 32768
CURLPROTO_SMTP -> 65536
CURLPROTO_SMTPS -> 131072
CURLPROTO_RTSP -> 262144
CURLPROTO_RTMP -> 524288
CURLPROTO_RTMPT -> 1048576
CURLPROTO_RTMPE -> 2097152
CURLPROTO_RTMPTE -> 4194304
CURLPROTO_RTMPS -> 8388608
CURLPROTO_RTMPTS -> 16777216
CURLPROTO_GOPHER -> 33554432
data CURLproxy
= CURLPROXY_HTTP
| CURLPROXY_HTTP_1_0
| CURLPROXY_SOCKS4
| CURLPROXY_SOCKS5
| CURLPROXY_SOCKS4A
| CURLPROXY_SOCKS5_HOSTNAME
instance ENUM CURLproxy where
enumlist = [ CURLPROXY_HTTP , CURLPROXY_HTTP_1_0 , CURLPROXY_SOCKS4 , CURLPROXY_SOCKS5 , CURLPROXY_SOCKS4A , CURLPROXY_SOCKS5_HOSTNAME ]
toENUM x = case x of
CURLPROXY_HTTP -> 0
CURLPROXY_HTTP_1_0 -> 1
CURLPROXY_SOCKS4 -> 4
CURLPROXY_SOCKS5 -> 5
CURLPROXY_SOCKS4A -> 6
CURLPROXY_SOCKS5_HOSTNAME -> 7
data CURLnetrc
= CURL_NETRC_IGNORED
| CURL_NETRC_OPTIONAL
| CURL_NETRC_REQUIRED
instance ENUM CURLnetrc where
enumlist = [ CURL_NETRC_IGNORED , CURL_NETRC_OPTIONAL , CURL_NETRC_REQUIRED ]
toENUM x = case x of
CURL_NETRC_IGNORED -> 0
CURL_NETRC_OPTIONAL -> 1
CURL_NETRC_REQUIRED -> 2
data CURLauth
= CURLAUTH_BASIC
| CURLAUTH_DIGEST
| CURLAUTH_DIGEST_IE
| CURLAUTH_GSSNEGOTIATE
| CURLAUTH_NTLM
| CURLAUTH_NTLM_WB
| CURLAUTH_ONLY
| CURLAUTH_ANY
| CURLAUTH_ANYSAFE
instance ENUM CURLauth where
enumlist = [ CURLAUTH_BASIC , CURLAUTH_DIGEST , CURLAUTH_DIGEST_IE , CURLAUTH_GSSNEGOTIATE , CURLAUTH_NTLM , CURLAUTH_NTLM_WB , CURLAUTH_ONLY , CURLAUTH_ANY , CURLAUTH_ANYSAFE ]
toENUM x = case x of
CURLAUTH_BASIC -> 1
CURLAUTH_DIGEST -> 2
CURLAUTH_DIGEST_IE -> 16
CURLAUTH_GSSNEGOTIATE -> 4
CURLAUTH_NTLM -> 8
CURLAUTH_NTLM_WB -> 32
CURLAUTH_ONLY -> 2147483648
CURLAUTH_ANY -> 18446744073709551599
CURLAUTH_ANYSAFE -> 18446744073709551598
data CURLtlsauth
= CURL_TLSAUTH_SRP
instance ENUM CURLtlsauth where
enumlist = [ CURL_TLSAUTH_SRP ]
toENUM x = case x of
CURL_TLSAUTH_SRP -> 1
data CURLredir
= CURL_REDIR_GET_ALL
| CURL_REDIR_POST_301
| CURL_REDIR_POST_302
| CURL_REDIR_POST_303
| CURL_REDIR_POST_ALL
instance ENUM CURLredir where
enumlist = [ CURL_REDIR_GET_ALL , CURL_REDIR_POST_301 , CURL_REDIR_POST_302 , CURL_REDIR_POST_303 , CURL_REDIR_POST_ALL ]
toENUM x = case x of
CURL_REDIR_GET_ALL -> 0
CURL_REDIR_POST_301 -> 1
CURL_REDIR_POST_302 -> 2
CURL_REDIR_POST_303 -> 4
CURL_REDIR_POST_ALL -> 7
data CURLhttpver
= CURL_HTTP_VERSION_NONE
| CURL_HTTP_VERSION_1_0
| CURL_HTTP_VERSION_1_1
instance ENUM CURLhttpver where
enumlist = [ CURL_HTTP_VERSION_NONE , CURL_HTTP_VERSION_1_0 , CURL_HTTP_VERSION_1_1 ]
toENUM x = case x of
CURL_HTTP_VERSION_NONE -> 0
CURL_HTTP_VERSION_1_0 -> 1
CURL_HTTP_VERSION_1_1 -> 2
data CURLftpcreate
= CURLFTP_CREATE_DIR_NONE
| CURLFTP_CREATE_DIR
| CURLFTP_CREATE_DIR_RETRY
instance ENUM CURLftpcreate where
enumlist = [ CURLFTP_CREATE_DIR_NONE , CURLFTP_CREATE_DIR , CURLFTP_CREATE_DIR_RETRY ]
toENUM x = case x of
CURLFTP_CREATE_DIR_NONE -> 0
CURLFTP_CREATE_DIR -> 1
CURLFTP_CREATE_DIR_RETRY -> 2
data CURLftpauth
= CURLFTPAUTH_DEFAULT
| CURLFTPAUTH_SSL
| CURLFTPAUTH_TLS
instance ENUM CURLftpauth where
enumlist = [ CURLFTPAUTH_DEFAULT , CURLFTPAUTH_SSL , CURLFTPAUTH_TLS ]
toENUM x = case x of
CURLFTPAUTH_DEFAULT -> 0
CURLFTPAUTH_SSL -> 1
CURLFTPAUTH_TLS -> 2
data CURLftpssl
= CURLFTPSSL_CCC_NONE
| CURLFTPSSL_CCC_PASSIVE
| CURLFTPSSL_CCC_ACTIVE
instance ENUM CURLftpssl where
enumlist = [ CURLFTPSSL_CCC_NONE , CURLFTPSSL_CCC_PASSIVE , CURLFTPSSL_CCC_ACTIVE ]
toENUM x = case x of
CURLFTPSSL_CCC_NONE -> 0
CURLFTPSSL_CCC_PASSIVE -> 1
CURLFTPSSL_CCC_ACTIVE -> 2
data CURLftpmethod
= CURLFTPMETHOD_DEFAULT
| CURLFTPMETHOD_MULTICWD
| CURLFTPMETHOD_NOCWD
| CURLFTPMETHOD_SINGLECWD
instance ENUM CURLftpmethod where
enumlist = [ CURLFTPMETHOD_DEFAULT , CURLFTPMETHOD_MULTICWD , CURLFTPMETHOD_NOCWD , CURLFTPMETHOD_SINGLECWD ]
toENUM x = case x of
CURLFTPMETHOD_DEFAULT -> 0
CURLFTPMETHOD_MULTICWD -> 1
CURLFTPMETHOD_NOCWD -> 2
CURLFTPMETHOD_SINGLECWD -> 3
data CURLrtspreq
= CURL_RTSPREQ_OPTIONS
| CURL_RTSPREQ_DESCRIBE
| CURL_RTSPREQ_ANNOUNCE
| CURL_RTSPREQ_SETUP
| CURL_RTSPREQ_PLAY
| CURL_RTSPREQ_PAUSE
| CURL_RTSPREQ_TEARDOWN
| CURL_RTSPREQ_GET_PARAMETER
| CURL_RTSPREQ_SET_PARAMETER
| CURL_RTSPREQ_RECORD
| CURL_RTSPREQ_RECEIVE
instance ENUM CURLrtspreq where
enumlist = [ CURL_RTSPREQ_OPTIONS , CURL_RTSPREQ_DESCRIBE , CURL_RTSPREQ_ANNOUNCE , CURL_RTSPREQ_SETUP , CURL_RTSPREQ_PLAY , CURL_RTSPREQ_PAUSE , CURL_RTSPREQ_TEARDOWN , CURL_RTSPREQ_GET_PARAMETER , CURL_RTSPREQ_SET_PARAMETER , CURL_RTSPREQ_RECORD , CURL_RTSPREQ_RECEIVE ]
toENUM x = case x of
CURL_RTSPREQ_OPTIONS -> 1
CURL_RTSPREQ_DESCRIBE -> 2
CURL_RTSPREQ_ANNOUNCE -> 3
CURL_RTSPREQ_SETUP -> 4
CURL_RTSPREQ_PLAY -> 5
CURL_RTSPREQ_PAUSE -> 6
CURL_RTSPREQ_TEARDOWN -> 7
CURL_RTSPREQ_GET_PARAMETER -> 8
CURL_RTSPREQ_SET_PARAMETER -> 9
CURL_RTSPREQ_RECORD -> 10
CURL_RTSPREQ_RECEIVE -> 11
data CURLtimecond
= CURL_TIMECOND_NONE
| CURL_TIMECOND_IFMODSINCE
| CURL_TIMECOND_IFUNMODSINCE
| CURL_TIMECOND_LASTMOD
instance ENUM CURLtimecond where
enumlist = [ CURL_TIMECOND_NONE , CURL_TIMECOND_IFMODSINCE , CURL_TIMECOND_IFUNMODSINCE , CURL_TIMECOND_LASTMOD ]
toENUM x = case x of
CURL_TIMECOND_NONE -> 0
CURL_TIMECOND_IFMODSINCE -> 1
CURL_TIMECOND_IFUNMODSINCE -> 2
CURL_TIMECOND_LASTMOD -> 3
data CURLipresolve
= CURL_IPRESOLVE_WHATEVER
| CURL_IPRESOLVE_V4
| CURL_IPRESOLVE_V6
instance ENUM CURLipresolve where
enumlist = [ CURL_IPRESOLVE_WHATEVER , CURL_IPRESOLVE_V4 , CURL_IPRESOLVE_V6 ]
toENUM x = case x of
CURL_IPRESOLVE_WHATEVER -> 0
CURL_IPRESOLVE_V4 -> 1
CURL_IPRESOLVE_V6 -> 2
data CURLusessl
= CURLUSESSL_NONE
| CURLUSESSL_TRY
| CURLUSESSL_CONTROL
| CURLUSESSL_ALL
instance ENUM CURLusessl where
enumlist = [ CURLUSESSL_NONE , CURLUSESSL_TRY , CURLUSESSL_CONTROL , CURLUSESSL_ALL ]
toENUM x = case x of
CURLUSESSL_NONE -> 0
CURLUSESSL_TRY -> 1
CURLUSESSL_CONTROL -> 2
CURLUSESSL_ALL -> 3
data CURLsslver
= CURL_SSLVERSION_DEFAULT
| CURL_SSLVERSION_TLSv1
| CURL_SSLVERSION_SSLv2
| CURL_SSLVERSION_SSLv3
instance ENUM CURLsslver where
enumlist = [ CURL_SSLVERSION_DEFAULT , CURL_SSLVERSION_TLSv1 , CURL_SSLVERSION_SSLv2 , CURL_SSLVERSION_SSLv3 ]
toENUM x = case x of
CURL_SSLVERSION_DEFAULT -> 0
CURL_SSLVERSION_TLSv1 -> 1
CURL_SSLVERSION_SSLv2 -> 2
CURL_SSLVERSION_SSLv3 -> 3
data CURLsslopt
= CURLSSLOPT_ALLOW_BEAST
instance ENUM CURLsslopt where
enumlist = [ CURLSSLOPT_ALLOW_BEAST ]
toENUM x = case x of
CURLSSLOPT_ALLOW_BEAST -> 1
data CURLgssapi
= CURLGSSAPI_DELEGATION_NONE
| CURLGSSAPI_DELEGATION_POLICY_FLAG
| CURLGSSAPI_DELEGATION_FLAG
instance ENUM CURLgssapi where
enumlist = [ CURLGSSAPI_DELEGATION_NONE , CURLGSSAPI_DELEGATION_POLICY_FLAG , CURLGSSAPI_DELEGATION_FLAG ]
toENUM x = case x of
CURLGSSAPI_DELEGATION_NONE -> 0
CURLGSSAPI_DELEGATION_POLICY_FLAG -> 1
CURLGSSAPI_DELEGATION_FLAG -> 2
data CURLsshauth
= CURLSSH_AUTH_ANY
| CURLSSH_AUTH_NONE
| CURLSSH_AUTH_PUBLICKEY
| CURLSSH_AUTH_PASSWORD
| CURLSSH_AUTH_HOST
| CURLSSH_AUTH_KEYBOARD
| CURLSSH_AUTH_AGENT
| CURLSSH_AUTH_DEFAULT
instance ENUM CURLsshauth where
enumlist = [ CURLSSH_AUTH_ANY , CURLSSH_AUTH_NONE , CURLSSH_AUTH_PUBLICKEY , CURLSSH_AUTH_PASSWORD , CURLSSH_AUTH_HOST , CURLSSH_AUTH_KEYBOARD , CURLSSH_AUTH_AGENT , CURLSSH_AUTH_DEFAULT ]
toENUM x = case x of
CURLSSH_AUTH_ANY -> 18446744073709551615
CURLSSH_AUTH_NONE -> 0
CURLSSH_AUTH_PUBLICKEY -> 1
CURLSSH_AUTH_PASSWORD -> 2
CURLSSH_AUTH_HOST -> 4
CURLSSH_AUTH_KEYBOARD -> 8
CURLSSH_AUTH_AGENT -> 16
CURLSSH_AUTH_DEFAULT -> 18446744073709551615
data CURLSH = CURLSH Unique (MVar ((Ptr C.CURLSH),(FunPtr ()),(FunPtr ())))
instance Show CURLSH where
showsPrec p (CURLSH u _) = showString "CURLSH#" . showsPrec p (hashUnique u)
instance Eq CURLSH where
(CURLSH u1 _) == (CURLSH u2 _) = u1 == u2
data CURLSHE = CURLSHE CURLSH String String CURLSHC
deriving (Eq, Typeable)
instance Exception CURLSHE
instance Show CURLSHE where
showsPrec p (CURLSHE curlsh func desc code) =
showsPrec p code . showString " (" . showString func . showString " "
. showsPrec p curlsh . showString ") " . showString desc
data CURLSHC
= CURLSHE_FAILED_INIT
| CURLSHE_BAD_OPTION
| CURLSHE_IN_USE
| CURLSHE_INVALID
| CURLSHE_NOMEM
| CURLSHE_NOT_BUILT_IN
| CURLSHE_UNKNOWN_ERROR
deriving (Show, Eq)
toCURLSHC :: CInt -> CURLSHC
toCURLSHC x = case x of
1 -> CURLSHE_BAD_OPTION
2 -> CURLSHE_IN_USE
3 -> CURLSHE_INVALID
4 -> CURLSHE_NOMEM
5 -> CURLSHE_NOT_BUILT_IN
_ -> CURLSHE_UNKNOWN_ERROR
data CURLSHoption
= CURLSHOPT_SHARE CURLSHlockdata
| CURLSHOPT_UNSHARE CURLSHlockdata
data CURLSHlockdata
= CURL_LOCK_DATA_COOKIE
| CURL_LOCK_DATA_DNS
| CURL_LOCK_DATA_SSL_SESSION
instance ENUM CURLSHlockdata where
enumlist = [ CURL_LOCK_DATA_COOKIE , CURL_LOCK_DATA_DNS , CURL_LOCK_DATA_SSL_SESSION ]
toENUM x = case x of
CURL_LOCK_DATA_COOKIE -> 2
CURL_LOCK_DATA_DNS -> 3
CURL_LOCK_DATA_SSL_SESSION -> 4
data CURL_version_info = CURL_version_info
{ curl_version_info_version :: String
, curl_version_info_version_num :: Int
, curl_version_info_host :: String
, curl_version_info_features :: [CURLfeature]
, curl_version_info_ssl_version :: String
, curl_version_info_ssl_version_num :: Int
, curl_version_info_libz_version :: String
, curl_version_info_protocols :: [String]
, curl_version_info_ares :: String
, curl_version_info_ares_num :: Int
, curl_version_info_libidn :: String
, curl_version_info_iconv_ver_num :: Int
, curl_version_info_libssh_version :: String
} deriving (Show)
data CURLinfo a where
CURLINFO_EFFECTIVE_URL :: CURLinfo String
CURLINFO_RESPONSE_CODE :: CURLinfo CLong
CURLINFO_HTTP_CONNECTCODE :: CURLinfo CLong
CURLINFO_FILETIME :: CURLinfo (Maybe UTCTime)
CURLINFO_TOTAL_TIME :: CURLinfo Double
CURLINFO_NAMELOOKUP_TIME :: CURLinfo Double
CURLINFO_CONNECT_TIME :: CURLinfo Double
CURLINFO_APPCONNECT_TIME :: CURLinfo Double
CURLINFO_PRETRANSFER_TIME :: CURLinfo Double
CURLINFO_STARTTRANSFER_TIME :: CURLinfo Double
CURLINFO_REDIRECT_TIME :: CURLinfo Double
CURLINFO_REDIRECT_COUNT :: CURLinfo CLong
CURLINFO_REDIRECT_URL :: CURLinfo String
CURLINFO_SIZE_UPLOAD :: CURLinfo Double
CURLINFO_SIZE_DOWNLOAD :: CURLinfo Double
CURLINFO_SPEED_DOWNLOAD :: CURLinfo Double
CURLINFO_SPEED_UPLOAD :: CURLinfo Double
CURLINFO_HEADER_SIZE :: CURLinfo CLong
CURLINFO_REQUEST_SIZE :: CURLinfo CLong
CURLINFO_SSL_VERIFYRESULT :: CURLinfo CLong
CURLINFO_SSL_ENGINES :: CURLinfo [String]
CURLINFO_CONTENT_LENGTH_DOWNLOAD :: CURLinfo Double
CURLINFO_CONTENT_LENGTH_UPLOAD :: CURLinfo Double
CURLINFO_CONTENT_TYPE :: CURLinfo String
CURLINFO_HTTPAUTH_AVAIL :: CURLinfo [CURLauth]
CURLINFO_PROXYAUTH_AVAIL :: CURLinfo [CURLauth]
CURLINFO_OS_ERRNO :: CURLinfo CLong
CURLINFO_NUM_CONNECTS :: CURLinfo CLong
CURLINFO_PRIMARY_IP :: CURLinfo String
CURLINFO_PRIMARY_PORT :: CURLinfo CLong
CURLINFO_LOCAL_IP :: CURLinfo String
CURLINFO_LOCAL_PORT :: CURLinfo CLong
CURLINFO_COOKIELIST :: CURLinfo [String]
CURLINFO_LASTSOCKET :: CURLinfo CLong
CURLINFO_FTP_ENTRY_PATH :: CURLinfo String
CURLINFO_CERTINFO :: CURLinfo [[String]]
CURLINFO_CONDITION_UNMET :: CURLinfo Bool
CURLINFO_RTSP_SESSION_ID :: CURLinfo String
CURLINFO_RTSP_CLIENT_CSEQ :: CURLinfo CLong
CURLINFO_RTSP_SERVER_CSEQ :: CURLinfo CLong
CURLINFO_RTSP_CSEQ_RECV :: CURLinfo CLong
data CURLoption
= CURLOPT_VERBOSE Bool
| CURLOPT_HEADER Bool
| CURLOPT_NOPROGRESS Bool
| CURLOPT_NOSIGNAL Bool
| CURLOPT_WILDCARDMATCH Bool
| CURLOPT_WRITEFUNCTION (Maybe CURL_write_callback)
| CURLOPT_READFUNCTION (Maybe CURL_read_callback)
| CURLOPT_HEADERFUNCTION (Maybe CURL_header_callback)
| CURLOPT_FAILONERROR Bool
| CURLOPT_URL String
| CURLOPT_PROTOCOLS [CURLproto]
| CURLOPT_REDIR_PROTOCOLS [CURLproto]
| CURLOPT_PROXY String
| CURLOPT_PROXYPORT CLong
| CURLOPT_PROXYTYPE CURLproxy
| CURLOPT_NOPROXY String
| CURLOPT_HTTPPROXYTUNNEL Bool
| CURLOPT_SOCKS5_GSSAPI_SERVICE String
| CURLOPT_SOCKS5_GSSAPI_NEC Bool
| CURLOPT_INTERFACE String
| CURLOPT_LOCALPORT CLong
| CURLOPT_LOCALPORTRANGE CLong
| CURLOPT_DNS_CACHE_TIMEOUT CLong
| CURLOPT_BUFFERSIZE CLong
| CURLOPT_PORT CLong
| CURLOPT_TCP_NODELAY Bool
| CURLOPT_ADDRESS_SCOPE CLong
| CURLOPT_TCP_KEEPALIVE Bool
| CURLOPT_TCP_KEEPIDLE CLong
| CURLOPT_TCP_KEEPINTVL CLong
| CURLOPT_NETRC CURLnetrc
| CURLOPT_NETRC_FILE FilePath
| CURLOPT_USERPWD String
| CURLOPT_PROXYUSERPWD String
| CURLOPT_USERNAME String
| CURLOPT_PASSWORD String
| CURLOPT_PROXYUSERNAME String
| CURLOPT_PROXYPASSWORD String
| CURLOPT_HTTPAUTH [CURLauth]
| CURLOPT_TLSAUTH_TYPE String
| CURLOPT_TLSAUTH_USERNAME String
| CURLOPT_TLSAUTH_PASSWORD String
| CURLOPT_PROXYAUTH [CURLauth]
| CURLOPT_AUTOREFERER Bool
| CURLOPT_ACCEPT_ENCODING String
| CURLOPT_TRANSFER_ENCODING Bool
| CURLOPT_FOLLOWLOCATION Bool
| CURLOPT_UNRESTRICTED_AUTH Bool
| CURLOPT_MAXREDIRS CLong
| CURLOPT_POSTREDIR [CURLredir]
| CURLOPT_PUT Bool
| CURLOPT_POST Bool
| CURLOPT_POSTFIELDSIZE CLong
| CURLOPT_POSTFIELDSIZE_LARGE Int64
| CURLOPT_COPYPOSTFIELDS String
| CURLOPT_REFERER String
| CURLOPT_USERAGENT String
| CURLOPT_HTTPHEADER [String]
| CURLOPT_HTTP200ALIASES [String]
| CURLOPT_COOKIE String
| CURLOPT_COOKIEFILE FilePath
| CURLOPT_COOKIEJAR FilePath
| CURLOPT_COOKIESESSION Bool
| CURLOPT_COOKIELIST String
| CURLOPT_HTTPGET Bool
| CURLOPT_HTTP_VERSION CURLhttpver
| CURLOPT_IGNORE_CONTENT_LENGTH Bool
| CURLOPT_HTTP_CONTENT_DECODING Bool
| CURLOPT_HTTP_TRANSFER_DECODING Bool
| CURLOPT_MAIL_FROM String
| CURLOPT_MAIL_RCPT [String]
| CURLOPT_MAIL_AUTH String
| CURLOPT_TFTP_BLKSIZE CLong
| CURLOPT_FTPPORT String
| CURLOPT_QUOTE [String]
| CURLOPT_POSTQUOTE [String]
| CURLOPT_PREQUOTE [String]
| CURLOPT_DIRLISTONLY Bool
| CURLOPT_APPEND Bool
| CURLOPT_FTP_USE_EPRT Bool
| CURLOPT_FTP_USE_EPSV Bool
| CURLOPT_FTP_USE_PRET Bool
| CURLOPT_FTP_CREATE_MISSING_DIRS CURLftpcreate
| CURLOPT_FTP_RESPONSE_TIMEOUT CLong
| CURLOPT_FTP_ALTERNATIVE_TO_USER String
| CURLOPT_FTP_SKIP_PASV_IP Bool
| CURLOPT_FTPSSLAUTH CURLftpauth
| CURLOPT_FTP_SSL_CCC CURLftpssl
| CURLOPT_FTP_ACCOUNT String
| CURLOPT_FTP_FILEMETHOD CURLftpmethod
| CURLOPT_RTSP_REQUEST CURLrtspreq
| CURLOPT_RTSP_SESSION_ID String
| CURLOPT_RTSP_STREAM_URI String
| CURLOPT_RTSP_TRANSPORT String
| CURLOPT_RTSP_HEADER [String]
| CURLOPT_RTSP_CLIENT_CSEQ CLong
| CURLOPT_RTSP_SERVER_CSEQ CLong
| CURLOPT_TRANSFERTEXT Bool
| CURLOPT_PROXY_TRANSFER_MODE Bool
| CURLOPT_CRLF Bool
| CURLOPT_RANGE String
| CURLOPT_RESUME_FROM CLong
| CURLOPT_RESUME_FROM_LARGE Int64
| CURLOPT_CUSTOMREQUEST String
| CURLOPT_FILETIME Bool
| CURLOPT_NOBODY Bool
| CURLOPT_INFILESIZE CLong
| CURLOPT_INFILESIZE_LARGE Int64
| CURLOPT_UPLOAD Bool
| CURLOPT_MAXFILESIZE CLong
| CURLOPT_MAXFILESIZE_LARGE Int64
| CURLOPT_TIMECONDITION CURLtimecond
| CURLOPT_TIMEVALUE UTCTime
| CURLOPT_TIMEOUT CLong
| CURLOPT_TIMEOUT_MS CLong
| CURLOPT_LOW_SPEED_LIMIT CLong
| CURLOPT_LOW_SPEED_TIME CLong
| CURLOPT_MAX_SEND_SPEED_LARGE Int64
| CURLOPT_MAX_RECV_SPEED_LARGE Int64
| CURLOPT_MAXCONNECTS CLong
| CURLOPT_FRESH_CONNECT Bool
| CURLOPT_FORBID_REUSE Bool
| CURLOPT_CONNECTTIMEOUT CLong
| CURLOPT_CONNECTTIMEOUT_MS CLong
| CURLOPT_IPRESOLVE CURLipresolve
| CURLOPT_CONNECT_ONLY Bool
| CURLOPT_USE_SSL CURLusessl
| CURLOPT_RESOLVE [String]
| CURLOPT_DNS_SERVERS String
| CURLOPT_ACCEPTTIMEOUT_MS CLong
| CURLOPT_SSLCERT FilePath
| CURLOPT_SSLCERTTYPE String
| CURLOPT_SSLKEY FilePath
| CURLOPT_SSLKEYTYPE String
| CURLOPT_KEYPASSWD String
| CURLOPT_SSLENGINE String
| CURLOPT_SSLENGINE_DEFAULT Bool
| CURLOPT_SSLVERSION CURLsslver
| CURLOPT_SSL_VERIFYPEER Bool
| CURLOPT_CAINFO FilePath
| CURLOPT_ISSUERCERT FilePath
| CURLOPT_CAPATH FilePath
| CURLOPT_CRLFILE FilePath
| CURLOPT_SSL_VERIFYHOST Bool
| CURLOPT_CERTINFO Bool
| CURLOPT_RANDOM_FILE FilePath
| CURLOPT_EGDSOCKET String
| CURLOPT_SSL_CIPHER_LIST String
| CURLOPT_SSL_SESSIONID_CACHE Bool
| CURLOPT_SSL_OPTIONS [CURLsslopt]
| CURLOPT_KRBLEVEL String
| CURLOPT_GSSAPI_DELEGATION CURLgssapi
| CURLOPT_SSH_AUTH_TYPES [CURLsshauth]
| CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 String
| CURLOPT_SSH_PUBLIC_KEYFILE FilePath
| CURLOPT_SSH_PRIVATE_KEYFILE FilePath
| CURLOPT_SSH_KNOWNHOSTS FilePath
| CURLOPT_SHARE (Maybe CURLSH)
| CURLOPT_NEW_FILE_PERMS CLong
| CURLOPT_NEW_DIRECTORY_PERMS CLong
| CURLOPT_TELNETOPTIONS [String]
type CURL_write_callback = ByteString -> IO CURL_write_response
data CURL_write_response
= CURL_WRITEFUNC_OK
| CURL_WRITEFUNC_FAIL
| CURL_WRITEFUNC_PAUSE
deriving (Eq)
type CURL_read_callback = Int -> IO CURL_read_response
data CURL_read_response
= CURL_READFUNC_OK ByteString
| CURL_READFUNC_ABORT
| CURL_READFUNC_PAUSE
deriving (Eq)
type CURL_header_callback = ByteString -> IO CURL_header_response
data CURL_header_response
= CURL_HEADERFUNC_OK
| CURL_HEADERFUNC_FAIL
deriving (Eq)
data CURLC
= CURLE_UNSUPPORTED_PROTOCOL
| CURLE_FAILED_INIT
| CURLE_URL_MALFORMAT
| CURLE_NOT_BUILT_IN
| CURLE_COULDNT_RESOLVE_PROXY
| CURLE_COULDNT_RESOLVE_HOST
| CURLE_COULDNT_CONNECT
| CURLE_FTP_WEIRD_SERVER_REPLY
| CURLE_REMOTE_ACCESS_DENIED
| CURLE_FTP_ACCEPT_FAILED
| CURLE_FTP_WEIRD_PASS_REPLY
| CURLE_FTP_ACCEPT_TIMEOUT
| CURLE_FTP_WEIRD_PASV_REPLY
| CURLE_FTP_WEIRD_227_FORMAT
| CURLE_FTP_CANT_GET_HOST
| CURLE_FTP_COULDNT_SET_TYPE
| CURLE_PARTIAL_FILE
| CURLE_FTP_COULDNT_RETR_FILE
| CURLE_QUOTE_ERROR
| CURLE_HTTP_RETURNED_ERROR
| CURLE_WRITE_ERROR
| CURLE_UPLOAD_FAILED
| CURLE_READ_ERROR
| CURLE_OUT_OF_MEMORY
| CURLE_OPERATION_TIMEDOUT
| CURLE_FTP_PORT_FAILED
| CURLE_FTP_COULDNT_USE_REST
| CURLE_RANGE_ERROR
| CURLE_HTTP_POST_ERROR
| CURLE_SSL_CONNECT_ERROR
| CURLE_BAD_DOWNLOAD_RESUME
| CURLE_FILE_COULDNT_READ_FILE
| CURLE_LDAP_CANNOT_BIND
| CURLE_LDAP_SEARCH_FAILED
| CURLE_FUNCTION_NOT_FOUND
| CURLE_ABORTED_BY_CALLBACK
| CURLE_BAD_FUNCTION_ARGUMENT
| CURLE_INTERFACE_FAILED
| CURLE_TOO_MANY_REDIRECTS
| CURLE_UNKNOWN_OPTION
| CURLE_TELNET_OPTION_SYNTAX
| CURLE_PEER_FAILED_VERIFICATION
| CURLE_GOT_NOTHING
| CURLE_SSL_ENGINE_NOTFOUND
| CURLE_SSL_ENGINE_SETFAILED
| CURLE_SEND_ERROR
| CURLE_RECV_ERROR
| CURLE_SSL_CERTPROBLEM
| CURLE_SSL_CIPHER
| CURLE_SSL_CACERT
| CURLE_BAD_CONTENT_ENCODING
| CURLE_LDAP_INVALID_URL
| CURLE_FILESIZE_EXCEEDED
| CURLE_USE_SSL_FAILED
| CURLE_SEND_FAIL_REWIND
| CURLE_SSL_ENGINE_INITFAILED
| CURLE_LOGIN_DENIED
| CURLE_TFTP_NOTFOUND
| CURLE_TFTP_PERM
| CURLE_REMOTE_DISK_FULL
| CURLE_TFTP_ILLEGAL
| CURLE_TFTP_UNKNOWNID
| CURLE_REMOTE_FILE_EXISTS
| CURLE_TFTP_NOSUCHUSER
| CURLE_CONV_FAILED
| CURLE_CONV_REQD
| CURLE_SSL_CACERT_BADFILE
| CURLE_REMOTE_FILE_NOT_FOUND
| CURLE_SSH
| CURLE_SSL_SHUTDOWN_FAILED
| CURLE_AGAIN
| CURLE_SSL_CRL_BADFILE
| CURLE_SSL_ISSUER_ERROR
| CURLE_FTP_PRET_FAILED
| CURLE_RTSP_CSEQ_ERROR
| CURLE_RTSP_SESSION_ERROR
| CURLE_FTP_BAD_FILE_LIST
| CURLE_CHUNK_FAILED
| CURLE_UNKNOWN_ERROR
deriving (Show, Eq)
toCURLC :: CInt -> CURLC
toCURLC x = case x of
1 -> CURLE_UNSUPPORTED_PROTOCOL
2 -> CURLE_FAILED_INIT
3 -> CURLE_URL_MALFORMAT
4 -> CURLE_NOT_BUILT_IN
5 -> CURLE_COULDNT_RESOLVE_PROXY
6 -> CURLE_COULDNT_RESOLVE_HOST
7 -> CURLE_COULDNT_CONNECT
8 -> CURLE_FTP_WEIRD_SERVER_REPLY
9 -> CURLE_REMOTE_ACCESS_DENIED
10 -> CURLE_FTP_ACCEPT_FAILED
11 -> CURLE_FTP_WEIRD_PASS_REPLY
12 -> CURLE_FTP_ACCEPT_TIMEOUT
13 -> CURLE_FTP_WEIRD_PASV_REPLY
14 -> CURLE_FTP_WEIRD_227_FORMAT
15 -> CURLE_FTP_CANT_GET_HOST
17 -> CURLE_FTP_COULDNT_SET_TYPE
18 -> CURLE_PARTIAL_FILE
19 -> CURLE_FTP_COULDNT_RETR_FILE
21 -> CURLE_QUOTE_ERROR
22 -> CURLE_HTTP_RETURNED_ERROR
23 -> CURLE_WRITE_ERROR
25 -> CURLE_UPLOAD_FAILED
26 -> CURLE_READ_ERROR
27 -> CURLE_OUT_OF_MEMORY
28 -> CURLE_OPERATION_TIMEDOUT
30 -> CURLE_FTP_PORT_FAILED
31 -> CURLE_FTP_COULDNT_USE_REST
33 -> CURLE_RANGE_ERROR
34 -> CURLE_HTTP_POST_ERROR
35 -> CURLE_SSL_CONNECT_ERROR
36 -> CURLE_BAD_DOWNLOAD_RESUME
37 -> CURLE_FILE_COULDNT_READ_FILE
38 -> CURLE_LDAP_CANNOT_BIND
39 -> CURLE_LDAP_SEARCH_FAILED
41 -> CURLE_FUNCTION_NOT_FOUND
42 -> CURLE_ABORTED_BY_CALLBACK
43 -> CURLE_BAD_FUNCTION_ARGUMENT
45 -> CURLE_INTERFACE_FAILED
47 -> CURLE_TOO_MANY_REDIRECTS
48 -> CURLE_UNKNOWN_OPTION
49 -> CURLE_TELNET_OPTION_SYNTAX
51 -> CURLE_PEER_FAILED_VERIFICATION
52 -> CURLE_GOT_NOTHING
53 -> CURLE_SSL_ENGINE_NOTFOUND
54 -> CURLE_SSL_ENGINE_SETFAILED
55 -> CURLE_SEND_ERROR
56 -> CURLE_RECV_ERROR
58 -> CURLE_SSL_CERTPROBLEM
59 -> CURLE_SSL_CIPHER
60 -> CURLE_SSL_CACERT
61 -> CURLE_BAD_CONTENT_ENCODING
62 -> CURLE_LDAP_INVALID_URL
63 -> CURLE_FILESIZE_EXCEEDED
64 -> CURLE_USE_SSL_FAILED
65 -> CURLE_SEND_FAIL_REWIND
66 -> CURLE_SSL_ENGINE_INITFAILED
67 -> CURLE_LOGIN_DENIED
68 -> CURLE_TFTP_NOTFOUND
69 -> CURLE_TFTP_PERM
70 -> CURLE_REMOTE_DISK_FULL
71 -> CURLE_TFTP_ILLEGAL
72 -> CURLE_TFTP_UNKNOWNID
73 -> CURLE_REMOTE_FILE_EXISTS
74 -> CURLE_TFTP_NOSUCHUSER
75 -> CURLE_CONV_FAILED
76 -> CURLE_CONV_REQD
77 -> CURLE_SSL_CACERT_BADFILE
78 -> CURLE_REMOTE_FILE_NOT_FOUND
79 -> CURLE_SSH
80 -> CURLE_SSL_SHUTDOWN_FAILED
81 -> CURLE_AGAIN
82 -> CURLE_SSL_CRL_BADFILE
83 -> CURLE_SSL_ISSUER_ERROR
84 -> CURLE_FTP_PRET_FAILED
85 -> CURLE_RTSP_CSEQ_ERROR
86 -> CURLE_RTSP_SESSION_ERROR
87 -> CURLE_FTP_BAD_FILE_LIST
88 -> CURLE_CHUNK_FAILED
_ -> CURLE_UNKNOWN_ERROR
data CURLCB where
CURLCB :: CURLCBT a -> FunPtr () -> CURLCB
data CURLCBT a where
FWRITE :: CURLCBT CURL_write_callback
FREAD :: CURLCBT CURL_read_callback
FHEADER :: CURLCBT CURL_header_callback
type CURLSL = (CInt, Ptr C.CURLslist)
data CURL = CURL Unique (MVar (Ptr C.CURL)) (IORef [CURLCB]) (IORef [CURLSL])
instance Show CURL where
showsPrec p (CURL u _ _ _) = showString "CURL#" . showsPrec p (hashUnique u)
instance Eq CURL where
(CURL u1 _ _ _) == (CURL u2 _ _ _) = u1 == u2
data CURLE = CURLE CURL String String CURLC
deriving (Eq, Typeable)
instance Exception CURLE
instance Show CURLE where
showsPrec p (CURLE curl func desc code) =
showString "\n<curlhs> " . showString desc
. showString "\n<curlhs> " . showsPrec p code . showString " ("
. showString func . showString " <" . showsPrec p curl . showString ">)"