module Network.Curlhs.Types where
import Foreign.Ptr (Ptr, FunPtr)
import Data.ByteString (ByteString)
import Data.Typeable (Typeable)
import Data.IORef (IORef)
import Data.Time (UTCTime)
import Data.Int (Int64)
import Control.Exception (Exception)
import Network.Curlhs.Base
data CURL = CURL
{ ccurlptr :: Ptr CCURL
, cb_write :: IORef (Maybe (FunPtr CCURL_write_callback))
, cb_read :: IORef (Maybe (FunPtr CCURL_read_callback ))
}
data CURLcode
= CURLE_OK
| 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
deriving (Eq, Show, Typeable)
instance Exception CURLcode
data CURL_version_info_data = CURL_version_info_data
{ curl_version_info_data_version :: String
, curl_version_info_data_version_num :: Int
, curl_version_info_data_host :: String
, curl_version_info_data_features :: [CURL_version]
, curl_version_info_data_ssl_version :: Maybe String
, curl_version_info_data_ssl_version_num :: Int
, curl_version_info_data_libz_version :: Maybe String
, curl_version_info_data_protocols :: [String]
, curl_version_info_data_ares :: Maybe String
, curl_version_info_data_ares_num :: Int
, curl_version_info_data_libidn :: Maybe String
, curl_version_info_data_iconv_ver_num :: Int
, curl_version_info_data_libssh_version :: Maybe String
} deriving (Show)
data CURL_version
= CURL_VERSION_IPV6
| CURL_VERSION_KERBEROS4
| CURL_VERSION_SSL
| CURL_VERSION_LIBZ
| CURL_VERSION_NTLM
| CURL_VERSION_GSSNEGOTIATE
| CURL_VERSION_DEBUG
| CURL_VERSION_ASYNCHDNS
| CURL_VERSION_SPNEGO
| CURL_VERSION_LARGEFILE
| CURL_VERSION_IDN
| CURL_VERSION_SSPI
| CURL_VERSION_CONV
| CURL_VERSION_CURLDEBUG
| CURL_VERSION_TLSAUTH_SRP
| CURL_VERSION_NTLM_WB
deriving (Eq, Show)
data CURLinfo = CURLinfo
{ curlinfo_effective_url :: String
, curlinfo_response_code :: Maybe Int
, curlinfo_http_connectcode :: Maybe Int
, curlinfo_filetime :: Maybe UTCTime
, curlinfo_total_time :: Double
, curlinfo_namelookup_time :: Double
, curlinfo_connect_time :: Double
, curlinfo_appconnect_time :: Double
, curlinfo_pretransfer_time :: Double
, curlinfo_starttransfer_time :: Double
, curlinfo_redirect_time :: Double
, curlinfo_redirect_count :: Int
, curlinfo_redirect_url :: Maybe String
, curlinfo_size_upload :: Double
, curlinfo_size_download :: Double
, curlinfo_speed_download :: Double
, curlinfo_speed_upload :: Double
, curlinfo_header_size :: Int
, curlinfo_request_size :: Int
, curlinfo_ssl_verifyresult :: Int
, curlinfo_ssl_engines :: [String]
, curlinfo_content_length_download :: Maybe Double
, curlinfo_content_length_upload :: Maybe Double
, curlinfo_content_type :: Maybe String
, curlinfo_httpauth_avail :: [CURLauth]
, curlinfo_proxyauth_avail :: [CURLauth]
, curlinfo_os_errno :: Int
, curlinfo_num_connects :: Int
, curlinfo_primary_ip :: String
, curlinfo_primary_port :: Int
, curlinfo_local_ip :: String
, curlinfo_local_port :: Int
, curlinfo_cookielist :: [String]
, curlinfo_lastsocket :: Maybe Int
, curlinfo_ftp_entry_path :: Maybe String
, curlinfo_certinfo :: [[String]]
, curlinfo_condition_unmet :: Bool
, curlinfo_rtsp_session_id :: Maybe String
, curlinfo_rtsp_client_cseq :: Int
, curlinfo_rtsp_server_cseq :: Int
, curlinfo_rtsp_cseq_recv :: Int
} deriving (Show)
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_FAILONERROR Bool
| CURLOPT_URL ByteString
| CURLOPT_PROTOCOLS [CURLproto]
| CURLOPT_REDIR_PROTOCOLS [CURLproto]
| CURLOPT_PROXY ByteString
| CURLOPT_PROXYPORT Int
| CURLOPT_PROXYTYPE CURLproxy
| CURLOPT_NOPROXY ByteString
| CURLOPT_HTTPPROXYTUNNEL Bool
| CURLOPT_SOCKS5_GSSAPI_SERVICE ByteString
| CURLOPT_SOCKS5_GSSAPI_NEC Bool
| CURLOPT_INTERFACE ByteString
| CURLOPT_LOCALPORT Int
| CURLOPT_LOCALPORTRANGE Int
| CURLOPT_DNS_CACHE_TIMEOUT Int
| CURLOPT_DNS_USE_GLOBAL_CACHE Bool
| CURLOPT_BUFFERSIZE Int
| CURLOPT_PORT Int
| CURLOPT_TCP_NODELAY Bool
| CURLOPT_ADDRESS_SCOPE Int
| CURLOPT_TCP_KEEPALIVE Bool
| CURLOPT_TCP_KEEPIDLE Int
| CURLOPT_TCP_KEEPINTVL Int
| CURLOPT_NETRC CURLnetrc
| CURLOPT_NETRC_FILE ByteString
| CURLOPT_USERPWD ByteString
| CURLOPT_PROXYUSERPWD ByteString
| CURLOPT_USERNAME ByteString
| CURLOPT_PASSWORD ByteString
| CURLOPT_PROXYUSERNAME ByteString
| CURLOPT_PROXYPASSWORD ByteString
| CURLOPT_HTTPAUTH [CURLauth]
| CURLOPT_TLSAUTH_TYPE ByteString
| CURLOPT_TLSAUTH_USERNAME ByteString
| CURLOPT_TLSAUTH_PASSWORD ByteString
| CURLOPT_PROXYAUTH [CURLauth]
| CURLOPT_AUTOREFERER Bool
| CURLOPT_ACCEPT_ENCODING ByteString
| CURLOPT_TRANSFER_ENCODING Bool
| CURLOPT_FOLLOWLOCATION Bool
| CURLOPT_UNRESTRICTED_AUTH Bool
| CURLOPT_MAXREDIRS Int
| CURLOPT_POSTREDIR [CURLredir]
| CURLOPT_PUT Bool
| CURLOPT_POST Bool
| CURLOPT_POSTFIELDSIZE Int
| CURLOPT_POSTFIELDSIZE_LARGE Int64
| CURLOPT_COPYPOSTFIELDS ByteString
| CURLOPT_REFERER ByteString
| CURLOPT_USERAGENT ByteString
| CURLOPT_COOKIE ByteString
| CURLOPT_COOKIEFILE ByteString
| CURLOPT_COOKIEJAR ByteString
| CURLOPT_COOKIESESSION Bool
| CURLOPT_COOKIELIST ByteString
| 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 ByteString
| CURLOPT_MAIL_AUTH ByteString
| CURLOPT_TFTP_BLKSIZE Int
| CURLOPT_FTPPORT ByteString
| 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 Int
| CURLOPT_FTP_ALTERNATIVE_TO_USER ByteString
| CURLOPT_FTP_SKIP_PASV_IP Bool
| CURLOPT_FTPSSLAUTH CURLftpauth
| CURLOPT_FTP_SSL_CCC CURLftpssl
| CURLOPT_FTP_ACCOUNT ByteString
| CURLOPT_FTP_FILEMETHOD CURLftpmethod
| CURLOPT_RTSP_REQUEST CURLrtspreq
| CURLOPT_RTSP_SESSION_ID ByteString
| CURLOPT_RTSP_STREAM_URI ByteString
| CURLOPT_RTSP_TRANSPORT ByteString
| CURLOPT_RTSP_CLIENT_CSEQ Int
| CURLOPT_RTSP_SERVER_CSEQ Int
| CURLOPT_TRANSFERTEXT Bool
| CURLOPT_PROXY_TRANSFER_MODE Bool
| CURLOPT_CRLF Bool
| CURLOPT_RANGE ByteString
| CURLOPT_RESUME_FROM Int
| CURLOPT_RESUME_FROM_LARGE Int64
| CURLOPT_CUSTOMREQUEST ByteString
| CURLOPT_FILETIME Bool
| CURLOPT_NOBODY Bool
| CURLOPT_INFILESIZE Int
| CURLOPT_INFILESIZE_LARGE Int64
| CURLOPT_UPLOAD Bool
| CURLOPT_MAXFILESIZE Int
| CURLOPT_MAXFILESIZE_LARGE Int64
| CURLOPT_TIMECONDITION CURLtimecond
| CURLOPT_TIMEVALUE UTCTime
| CURLOPT_TIMEOUT Int
| CURLOPT_TIMEOUT_MS Int
| CURLOPT_LOW_SPEED_LIMIT Int
| CURLOPT_LOW_SPEED_TIME Int
| CURLOPT_MAX_SEND_SPEED_LARGE Int64
| CURLOPT_MAX_RECV_SPEED_LARGE Int64
| CURLOPT_MAXCONNECTS Int
| CURLOPT_CLOSEPOLICY CURLclosepol
| CURLOPT_FRESH_CONNECT Bool
| CURLOPT_FORBID_REUSE Bool
| CURLOPT_CONNECTTIMEOUT Int
| CURLOPT_CONNECTTIMEOUT_MS Int
| CURLOPT_IPRESOLVE CURLipresolve
| CURLOPT_CONNECT_ONLY Bool
| CURLOPT_USE_SSL CURLusessl
| CURLOPT_DNS_SERVERS ByteString
| CURLOPT_ACCEPTTIMEOUT_MS Int
| CURLOPT_SSLCERT ByteString
| CURLOPT_SSLCERTTYPE ByteString
| CURLOPT_SSLKEY ByteString
| CURLOPT_SSLKEYTYPE ByteString
| CURLOPT_KEYPASSWD ByteString
| CURLOPT_SSLENGINE ByteString
| CURLOPT_SSLENGINE_DEFAULT Bool
| CURLOPT_SSLVERSION CURLsslver
| CURLOPT_SSL_VERIFYPEER Bool
| CURLOPT_CAINFO ByteString
| CURLOPT_ISSUERCERT ByteString
| CURLOPT_CAPATH ByteString
| CURLOPT_CRLFILE ByteString
| CURLOPT_SSL_VERIFYHOST Int
| CURLOPT_CERTINFO Bool
| CURLOPT_RANDOM_FILE ByteString
| CURLOPT_EGDSOCKET ByteString
| CURLOPT_SSL_CIPHER_LIST ByteString
| CURLOPT_SSL_SESSIONID_CACHE Bool
| CURLOPT_SSL_OPTIONS CURLsslopt
| CURLOPT_KRBLEVEL ByteString
| CURLOPT_GSSAPI_DELEGATION CURLgssapi
| CURLOPT_SSH_AUTH_TYPES [CURLsshauth]
| CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 ByteString
| CURLOPT_SSH_PUBLIC_KEYFILE ByteString
| CURLOPT_SSH_PRIVATE_KEYFILE ByteString
| CURLOPT_SSH_KNOWNHOSTS ByteString
| CURLOPT_NEW_FILE_PERMS Int
| CURLOPT_NEW_DIRECTORY_PERMS Int
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
deriving (Eq, Show)
data CURLproxy
= CURLPROXY_HTTP
| CURLPROXY_HTTP_1_0
| CURLPROXY_SOCKS4
| CURLPROXY_SOCKS5
| CURLPROXY_SOCKS4A
| CURLPROXY_SOCKS5_HOSTNAME
deriving (Eq, Show)
data CURLnetrc
= CURL_NETRC_IGNORED
| CURL_NETRC_OPTIONAL
| CURL_NETRC_REQUIRED
deriving (Eq, Show)
data CURLauth
= CURLAUTH_BASIC
| CURLAUTH_DIGEST
| CURLAUTH_DIGEST_IE
| CURLAUTH_GSSNEGOTIATE
| CURLAUTH_NTLM
| CURLAUTH_NTLM_WB
| CURLAUTH_ONLY
| CURLAUTH_ANY
| CURLAUTH_ANYSAFE
deriving (Eq, Show)
data CURLtlsauth
= CURL_TLSAUTH_SRP
deriving (Eq, Show)
data CURLredir
= CURL_REDIR_GET_ALL
| CURL_REDIR_POST_301
| CURL_REDIR_POST_302
| CURL_REDIR_POST_ALL
deriving (Eq, Show)
data CURLhttpver
= CURL_HTTP_VERSION_NONE
| CURL_HTTP_VERSION_1_0
| CURL_HTTP_VERSION_1_1
deriving (Eq, Show)
data CURLftpcreate
= CURLFTP_CREATE_DIR_NONE
| CURLFTP_CREATE_DIR
| CURLFTP_CREATE_DIR_RETRY
deriving (Eq, Show)
data CURLftpauth
= CURLFTPAUTH_DEFAULT
| CURLFTPAUTH_SSL
| CURLFTPAUTH_TLS
deriving (Eq, Show)
data CURLftpssl
= CURLFTPSSL_CCC_NONE
| CURLFTPSSL_CCC_PASSIVE
| CURLFTPSSL_CCC_ACTIVE
deriving (Eq, Show)
data CURLftpmethod
= CURLFTPMETHOD_DEFAULT
| CURLFTPMETHOD_MULTICWD
| CURLFTPMETHOD_NOCWD
| CURLFTPMETHOD_SINGLECWD
deriving (Eq, Show)
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
deriving (Eq, Show)
data CURLtimecond
= CURL_TIMECOND_NONE
| CURL_TIMECOND_IFMODSINCE
| CURL_TIMECOND_IFUNMODSINCE
| CURL_TIMECOND_LASTMOD
deriving (Eq, Show)
data CURLclosepol
= CURLCLOSEPOLICY_NONE
| CURLCLOSEPOLICY_OLDEST
| CURLCLOSEPOLICY_LEAST_RECENTLY_USED
| CURLCLOSEPOLICY_LEAST_TRAFFIC
| CURLCLOSEPOLICY_SLOWEST
| CURLCLOSEPOLICY_CALLBACK
deriving (Eq, Show)
data CURLipresolve
= CURL_IPRESOLVE_WHATEVER
| CURL_IPRESOLVE_V4
| CURL_IPRESOLVE_V6
deriving (Eq, Show)
data CURLusessl
= CURLUSESSL_NONE
| CURLUSESSL_TRY
| CURLUSESSL_CONTROL
| CURLUSESSL_ALL
deriving (Eq, Show)
data CURLsslver
= CURL_SSLVERSION_DEFAULT
| CURL_SSLVERSION_TLSv1
| CURL_SSLVERSION_SSLv2
| CURL_SSLVERSION_SSLv3
deriving (Eq, Show)
data CURLsslopt
= CURLSSLOPT_ALLOW_BEAST
deriving (Eq, Show)
data CURLgssapi
= CURLGSSAPI_DELEGATION_NONE
| CURLGSSAPI_DELEGATION_POLICY_FLAG
| CURLGSSAPI_DELEGATION_FLAG
deriving (Eq, Show)
data CURLsshauth
= CURLSSH_AUTH_ANY
| CURLSSH_AUTH_NONE
| CURLSSH_AUTH_PUBLICKEY
| CURLSSH_AUTH_PASSWORD
| CURLSSH_AUTH_HOST
| CURLSSH_AUTH_KEYBOARD
| CURLSSH_AUTH_DEFAULT
deriving (Eq, Show)
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)