module Network.Curlhs.Setopt
( curl_easy_setopt
, freeCallbacks
) where
import Foreign.Marshal.Utils (copyBytes, fromBool)
import Foreign.C.Types (CLong)
import Foreign.Ptr (FunPtr, nullFunPtr, freeHaskellFunPtr)
import Data.Time.Clock.POSIX (utcTimeToPOSIXSeconds)
import Data.Time.Clock (UTCTime)
import Data.Bits ((.|.))
import Data.List (foldl')
import Data.IORef (IORef, atomicModifyIORef)
import qualified Data.ByteString as BS
import Data.ByteString.Unsafe (unsafeUseAsCStringLen)
import Data.ByteString (ByteString, useAsCString, packCStringLen)
import Network.Curlhs.Errors
import Network.Curlhs.Types
import Network.Curlhs.Base
freeCallbacks :: CURL -> IO ()
freeCallbacks curl = do
keepCallback (cb_write curl) Nothing
keepCallback (cb_read curl) Nothing
keepCallback :: IORef (Maybe (FunPtr a)) -> Maybe (FunPtr a) -> IO ()
keepCallback r mf =
atomicModifyIORef r (\v -> (mf, v)) >>= maybe (return ()) freeHaskellFunPtr
makeCallback :: Maybe cb -> IORef (Maybe (FunPtr a))
-> (FunPtr a -> IO CCURLcode) -> (cb -> IO (FunPtr a)) -> IO ()
makeCallback (Just cb) ref setcb wrapcb = withCODE $ do
fptr <- wrapcb cb
code <- setcb fptr
if (code == cCURLE_OK)
then keepCallback ref (Just fptr)
else freeHaskellFunPtr fptr
return code
makeCallback Nothing ref setcb _ = withCODE $ do
code <- setcb nullFunPtr
keepCallback ref Nothing
return code
curl_easy_setopt :: CURL -> [CURLoption] -> IO ()
curl_easy_setopt curl opts = flip mapM_ opts $ \opt -> case opt of
CURLOPT_WRITEFUNCTION f -> so'FWRITE curl f
CURLOPT_READFUNCTION f -> so'FREAD curl f
CURLOPT_VERBOSE x -> bool cCURLOPT_VERBOSE x
CURLOPT_HEADER x -> bool cCURLOPT_HEADER x
CURLOPT_NOPROGRESS x -> bool cCURLOPT_NOPROGRESS x
CURLOPT_NOSIGNAL x -> bool cCURLOPT_NOSIGNAL x
CURLOPT_WILDCARDMATCH x -> bool cCURLOPT_WILDCARDMATCH x
CURLOPT_FAILONERROR x -> bool cCURLOPT_FAILONERROR x
CURLOPT_URL x -> string cCURLOPT_URL x
CURLOPT_PROTOCOLS x -> enum cCURLOPT_PROTOCOLS x
CURLOPT_REDIR_PROTOCOLS x -> enum cCURLOPT_REDIR_PROTOCOLS x
CURLOPT_PROXY x -> string cCURLOPT_PROXY x
CURLOPT_PROXYPORT x -> int cCURLOPT_PROXYPORT x
CURLOPT_PROXYTYPE x -> enum cCURLOPT_PROXYTYPE x
CURLOPT_NOPROXY x -> string cCURLOPT_NOPROXY x
CURLOPT_HTTPPROXYTUNNEL x -> bool cCURLOPT_HTTPPROXYTUNNEL x
CURLOPT_SOCKS5_GSSAPI_SERVICE x -> string cCURLOPT_SOCKS5_GSSAPI_SERVICE x
CURLOPT_SOCKS5_GSSAPI_NEC x -> bool cCURLOPT_SOCKS5_GSSAPI_NEC x
CURLOPT_INTERFACE x -> string cCURLOPT_INTERFACE x
CURLOPT_LOCALPORT x -> int cCURLOPT_LOCALPORT x
CURLOPT_LOCALPORTRANGE x -> int cCURLOPT_LOCALPORTRANGE x
CURLOPT_DNS_CACHE_TIMEOUT x -> int cCURLOPT_DNS_CACHE_TIMEOUT x
CURLOPT_DNS_USE_GLOBAL_CACHE x -> bool cCURLOPT_DNS_USE_GLOBAL_CACHE x
CURLOPT_BUFFERSIZE x -> int cCURLOPT_BUFFERSIZE x
CURLOPT_PORT x -> int cCURLOPT_PORT x
CURLOPT_TCP_NODELAY x -> bool cCURLOPT_TCP_NODELAY x
CURLOPT_ADDRESS_SCOPE x -> int cCURLOPT_ADDRESS_SCOPE x
CURLOPT_TCP_KEEPALIVE x -> bool cCURLOPT_TCP_KEEPALIVE x
CURLOPT_TCP_KEEPIDLE x -> int cCURLOPT_TCP_KEEPIDLE x
CURLOPT_TCP_KEEPINTVL x -> int cCURLOPT_TCP_KEEPINTVL x
CURLOPT_NETRC x -> enum cCURLOPT_NETRC x
CURLOPT_NETRC_FILE x -> string cCURLOPT_NETRC_FILE x
CURLOPT_USERPWD x -> string cCURLOPT_USERPWD x
CURLOPT_PROXYUSERPWD x -> string cCURLOPT_PROXYUSERPWD x
CURLOPT_USERNAME x -> string cCURLOPT_USERNAME x
CURLOPT_PASSWORD x -> string cCURLOPT_PASSWORD x
CURLOPT_PROXYUSERNAME x -> string cCURLOPT_PROXYUSERNAME x
CURLOPT_PROXYPASSWORD x -> string cCURLOPT_PROXYPASSWORD x
CURLOPT_HTTPAUTH x -> enum cCURLOPT_HTTPAUTH x
CURLOPT_TLSAUTH_TYPE x -> string cCURLOPT_TLSAUTH_TYPE x
CURLOPT_TLSAUTH_USERNAME x -> string cCURLOPT_TLSAUTH_USERNAME x
CURLOPT_TLSAUTH_PASSWORD x -> string cCURLOPT_TLSAUTH_PASSWORD x
CURLOPT_PROXYAUTH x -> enum cCURLOPT_PROXYAUTH x
CURLOPT_AUTOREFERER x -> bool cCURLOPT_AUTOREFERER x
CURLOPT_ACCEPT_ENCODING x -> string cCURLOPT_ACCEPT_ENCODING x
CURLOPT_TRANSFER_ENCODING x -> bool cCURLOPT_TRANSFER_ENCODING x
CURLOPT_FOLLOWLOCATION x -> bool cCURLOPT_FOLLOWLOCATION x
CURLOPT_UNRESTRICTED_AUTH x -> bool cCURLOPT_UNRESTRICTED_AUTH x
CURLOPT_MAXREDIRS x -> int cCURLOPT_MAXREDIRS x
CURLOPT_POSTREDIR x -> enum cCURLOPT_POSTREDIR x
CURLOPT_PUT x -> bool cCURLOPT_PUT x
CURLOPT_POST x -> bool cCURLOPT_POST x
CURLOPT_POSTFIELDSIZE x -> int cCURLOPT_POSTFIELDSIZE x
CURLOPT_POSTFIELDSIZE_LARGE x -> int64 cCURLOPT_POSTFIELDSIZE_LARGE x
CURLOPT_COPYPOSTFIELDS x -> string cCURLOPT_COPYPOSTFIELDS x
CURLOPT_REFERER x -> string cCURLOPT_REFERER x
CURLOPT_USERAGENT x -> string cCURLOPT_USERAGENT x
CURLOPT_COOKIE x -> string cCURLOPT_COOKIE x
CURLOPT_COOKIEFILE x -> string cCURLOPT_COOKIEFILE x
CURLOPT_COOKIEJAR x -> string cCURLOPT_COOKIEJAR x
CURLOPT_COOKIESESSION x -> bool cCURLOPT_COOKIESESSION x
CURLOPT_COOKIELIST x -> string cCURLOPT_COOKIELIST x
CURLOPT_HTTPGET x -> bool cCURLOPT_HTTPGET x
CURLOPT_HTTP_VERSION x -> enum cCURLOPT_HTTP_VERSION x
CURLOPT_IGNORE_CONTENT_LENGTH x -> bool cCURLOPT_IGNORE_CONTENT_LENGTH x
CURLOPT_HTTP_CONTENT_DECODING x -> bool cCURLOPT_HTTP_CONTENT_DECODING x
CURLOPT_HTTP_TRANSFER_DECODING x -> bool cCURLOPT_HTTP_TRANSFER_DECODING x
CURLOPT_MAIL_FROM x -> string cCURLOPT_MAIL_FROM x
CURLOPT_MAIL_AUTH x -> string cCURLOPT_MAIL_AUTH x
CURLOPT_TFTP_BLKSIZE x -> int cCURLOPT_TFTP_BLKSIZE x
CURLOPT_FTPPORT x -> string cCURLOPT_FTPPORT x
CURLOPT_DIRLISTONLY x -> bool cCURLOPT_DIRLISTONLY x
CURLOPT_APPEND x -> bool cCURLOPT_APPEND x
CURLOPT_FTP_USE_EPRT x -> bool cCURLOPT_FTP_USE_EPRT x
CURLOPT_FTP_USE_EPSV x -> bool cCURLOPT_FTP_USE_EPSV x
CURLOPT_FTP_USE_PRET x -> bool cCURLOPT_FTP_USE_PRET x
CURLOPT_FTP_CREATE_MISSING_DIRS x -> enum cCURLOPT_FTP_CREATE_MISSING_DIRS x
CURLOPT_FTP_RESPONSE_TIMEOUT x -> int cCURLOPT_FTP_RESPONSE_TIMEOUT x
CURLOPT_FTP_ALTERNATIVE_TO_USER x -> string cCURLOPT_FTP_ALTERNATIVE_TO_USER x
CURLOPT_FTP_SKIP_PASV_IP x -> bool cCURLOPT_FTP_SKIP_PASV_IP x
CURLOPT_FTPSSLAUTH x -> enum cCURLOPT_FTPSSLAUTH x
CURLOPT_FTP_SSL_CCC x -> enum cCURLOPT_FTP_SSL_CCC x
CURLOPT_FTP_ACCOUNT x -> string cCURLOPT_FTP_ACCOUNT x
CURLOPT_FTP_FILEMETHOD x -> enum cCURLOPT_FTP_FILEMETHOD x
CURLOPT_RTSP_REQUEST x -> enum cCURLOPT_RTSP_REQUEST x
CURLOPT_RTSP_SESSION_ID x -> string cCURLOPT_RTSP_SESSION_ID x
CURLOPT_RTSP_STREAM_URI x -> string cCURLOPT_RTSP_STREAM_URI x
CURLOPT_RTSP_TRANSPORT x -> string cCURLOPT_RTSP_TRANSPORT x
CURLOPT_RTSP_CLIENT_CSEQ x -> int cCURLOPT_RTSP_CLIENT_CSEQ x
CURLOPT_RTSP_SERVER_CSEQ x -> int cCURLOPT_RTSP_SERVER_CSEQ x
CURLOPT_TRANSFERTEXT x -> bool cCURLOPT_TRANSFERTEXT x
CURLOPT_PROXY_TRANSFER_MODE x -> bool cCURLOPT_PROXY_TRANSFER_MODE x
CURLOPT_CRLF x -> bool cCURLOPT_CRLF x
CURLOPT_RANGE x -> string cCURLOPT_RANGE x
CURLOPT_RESUME_FROM x -> int cCURLOPT_RESUME_FROM x
CURLOPT_RESUME_FROM_LARGE x -> int64 cCURLOPT_RESUME_FROM_LARGE x
CURLOPT_CUSTOMREQUEST x -> string cCURLOPT_CUSTOMREQUEST x
CURLOPT_FILETIME x -> bool cCURLOPT_FILETIME x
CURLOPT_NOBODY x -> bool cCURLOPT_NOBODY x
CURLOPT_INFILESIZE x -> int cCURLOPT_INFILESIZE x
CURLOPT_INFILESIZE_LARGE x -> int64 cCURLOPT_INFILESIZE_LARGE x
CURLOPT_UPLOAD x -> bool cCURLOPT_UPLOAD x
CURLOPT_MAXFILESIZE x -> int cCURLOPT_MAXFILESIZE x
CURLOPT_MAXFILESIZE_LARGE x -> int64 cCURLOPT_MAXFILESIZE_LARGE x
CURLOPT_TIMECONDITION x -> enum cCURLOPT_TIMECONDITION x
CURLOPT_TIMEVALUE x -> time cCURLOPT_TIMEVALUE x
CURLOPT_TIMEOUT x -> int cCURLOPT_TIMEOUT x
CURLOPT_TIMEOUT_MS x -> int cCURLOPT_TIMEOUT_MS x
CURLOPT_LOW_SPEED_LIMIT x -> int cCURLOPT_LOW_SPEED_LIMIT x
CURLOPT_LOW_SPEED_TIME x -> int cCURLOPT_LOW_SPEED_TIME x
CURLOPT_MAX_SEND_SPEED_LARGE x -> int64 cCURLOPT_MAX_SEND_SPEED_LARGE x
CURLOPT_MAX_RECV_SPEED_LARGE x -> int64 cCURLOPT_MAX_RECV_SPEED_LARGE x
CURLOPT_MAXCONNECTS x -> int cCURLOPT_MAXCONNECTS x
CURLOPT_CLOSEPOLICY x -> enum cCURLOPT_CLOSEPOLICY x
CURLOPT_FRESH_CONNECT x -> bool cCURLOPT_FRESH_CONNECT x
CURLOPT_FORBID_REUSE x -> bool cCURLOPT_FORBID_REUSE x
CURLOPT_CONNECTTIMEOUT x -> int cCURLOPT_CONNECTTIMEOUT x
CURLOPT_CONNECTTIMEOUT_MS x -> int cCURLOPT_CONNECTTIMEOUT_MS x
CURLOPT_IPRESOLVE x -> enum cCURLOPT_IPRESOLVE x
CURLOPT_CONNECT_ONLY x -> bool cCURLOPT_CONNECT_ONLY x
CURLOPT_USE_SSL x -> enum cCURLOPT_USE_SSL x
CURLOPT_DNS_SERVERS x -> string cCURLOPT_DNS_SERVERS x
CURLOPT_ACCEPTTIMEOUT_MS x -> int cCURLOPT_ACCEPTTIMEOUT_MS x
CURLOPT_SSLCERT x -> string cCURLOPT_SSLCERT x
CURLOPT_SSLCERTTYPE x -> string cCURLOPT_SSLCERTTYPE x
CURLOPT_SSLKEY x -> string cCURLOPT_SSLKEY x
CURLOPT_SSLKEYTYPE x -> string cCURLOPT_SSLKEYTYPE x
CURLOPT_KEYPASSWD x -> string cCURLOPT_KEYPASSWD x
CURLOPT_SSLENGINE x -> string cCURLOPT_SSLENGINE x
CURLOPT_SSLENGINE_DEFAULT x -> bool cCURLOPT_SSLENGINE_DEFAULT x
CURLOPT_SSLVERSION x -> enum cCURLOPT_SSLVERSION x
CURLOPT_SSL_VERIFYPEER x -> bool cCURLOPT_SSL_VERIFYPEER x
CURLOPT_CAINFO x -> string cCURLOPT_CAINFO x
CURLOPT_ISSUERCERT x -> string cCURLOPT_ISSUERCERT x
CURLOPT_CAPATH x -> string cCURLOPT_CAPATH x
CURLOPT_CRLFILE x -> string cCURLOPT_CRLFILE x
CURLOPT_SSL_VERIFYHOST x -> int cCURLOPT_SSL_VERIFYHOST x
CURLOPT_CERTINFO x -> bool cCURLOPT_CERTINFO x
CURLOPT_RANDOM_FILE x -> string cCURLOPT_RANDOM_FILE x
CURLOPT_EGDSOCKET x -> string cCURLOPT_EGDSOCKET x
CURLOPT_SSL_CIPHER_LIST x -> string cCURLOPT_SSL_CIPHER_LIST x
CURLOPT_SSL_SESSIONID_CACHE x -> bool cCURLOPT_SSL_SESSIONID_CACHE x
CURLOPT_SSL_OPTIONS x -> enum cCURLOPT_SSL_OPTIONS x
CURLOPT_KRBLEVEL x -> string cCURLOPT_KRBLEVEL x
CURLOPT_GSSAPI_DELEGATION x -> enum cCURLOPT_GSSAPI_DELEGATION x
CURLOPT_SSH_AUTH_TYPES x -> enum cCURLOPT_SSH_AUTH_TYPES x
CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 x -> string cCURLOPT_SSH_HOST_PUBLIC_KEY_MD5 x
CURLOPT_SSH_PUBLIC_KEYFILE x -> string cCURLOPT_SSH_PUBLIC_KEYFILE x
CURLOPT_SSH_PRIVATE_KEYFILE x -> string cCURLOPT_SSH_PRIVATE_KEYFILE x
CURLOPT_SSH_KNOWNHOSTS x -> string cCURLOPT_SSH_KNOWNHOSTS x
CURLOPT_NEW_FILE_PERMS x -> int cCURLOPT_NEW_FILE_PERMS x
CURLOPT_NEW_DIRECTORY_PERMS x -> int cCURLOPT_NEW_DIRECTORY_PERMS x
where
string copt s = setopt'CString curl copt s
int64 copt x = setopt'Int64 curl copt (fromIntegral x)
int copt x = setopt'CLong curl copt (fromIntegral x)
bool copt x = setopt'CLong curl copt (fromBool x)
time copt x = setopt'CLong curl copt (fromUTCTime x)
enum copt x = setopt'CLong curl copt (fromCURLenum x)
setopt'CString :: CURL -> CCURLoption'CString -> ByteString -> IO ()
setopt'CString curl copt val = useAsCString val $ \ptr ->
withCODE $ ccurl_easy_setopt'CString (ccurlptr curl) copt ptr
setopt'Int64 :: CURL -> CCURLoption'Int64 -> CCURL_off_t -> IO ()
setopt'Int64 curl copt cval =
withCODE $ ccurl_easy_setopt'Int64 (ccurlptr curl) copt cval
setopt'CLong :: CURL -> CCURLoption'CLong -> CLong -> IO ()
setopt'CLong curl copt cval =
withCODE $ ccurl_easy_setopt'CLong (ccurlptr curl) copt cval
so'FWRITE :: CURL -> Maybe CURL_write_callback -> IO ()
so'FWRITE curl mcb = makeCallback mcb (cb_write curl)
(ccurl_easy_setopt'FWRITE (ccurlptr curl))
(\cb -> wrap_ccurl_write_callback (write_callback cb))
write_callback :: CURL_write_callback -> CCURL_write_callback
write_callback fwrite ptr size nmemb _ = do
stat <- packCStringLen (ptr, fromIntegral (size * nmemb)) >>= fwrite
return $ case stat of
CURL_WRITEFUNC_OK -> (size * nmemb)
CURL_WRITEFUNC_FAIL -> 0
CURL_WRITEFUNC_PAUSE -> cCURL_WRITEFUNC_PAUSE
so'FREAD :: CURL -> Maybe CURL_read_callback -> IO ()
so'FREAD curl mcb = makeCallback mcb (cb_read curl)
(ccurl_easy_setopt'FREAD (ccurlptr curl))
(\cb -> wrap_ccurl_read_callback (read_callback cb))
read_callback :: CURL_read_callback -> CCURL_read_callback
read_callback fread buff size nmemb _ = do
let buffLen = fromIntegral (size * nmemb)
stat <- fread buffLen
case stat of
CURL_READFUNC_PAUSE -> return cCURL_READFUNC_PAUSE
CURL_READFUNC_ABORT -> return cCURL_READFUNC_ABORT
CURL_READFUNC_OK bs -> unsafeUseAsCStringLen (BS.take buffLen bs)
(\(cs, cl) -> copyBytes buff cs cl >> return (fromIntegral cl))
fromUTCTime :: UTCTime -> CLong
fromUTCTime = truncate . utcTimeToPOSIXSeconds
class CURLenum a where
fromCURLenum :: a -> CLong
instance CURLenum a => CURLenum [a] where
fromCURLenum xs = foldl' (.|.) 0 $ map fromCURLenum xs
instance CURLenum CURLproto where
fromCURLenum x = case x of
CURLPROTO_ALL -> cCURLPROTO_ALL
CURLPROTO_HTTP -> cCURLPROTO_HTTP
CURLPROTO_HTTPS -> cCURLPROTO_HTTPS
CURLPROTO_FTP -> cCURLPROTO_FTP
CURLPROTO_FTPS -> cCURLPROTO_FTPS
CURLPROTO_SCP -> cCURLPROTO_SCP
CURLPROTO_SFTP -> cCURLPROTO_SFTP
CURLPROTO_TELNET -> cCURLPROTO_TELNET
CURLPROTO_LDAP -> cCURLPROTO_LDAP
CURLPROTO_LDAPS -> cCURLPROTO_LDAPS
CURLPROTO_DICT -> cCURLPROTO_DICT
CURLPROTO_FILE -> cCURLPROTO_FILE
CURLPROTO_TFTP -> cCURLPROTO_TFTP
CURLPROTO_IMAP -> cCURLPROTO_IMAP
CURLPROTO_IMAPS -> cCURLPROTO_IMAPS
CURLPROTO_POP3 -> cCURLPROTO_POP3
CURLPROTO_POP3S -> cCURLPROTO_POP3S
CURLPROTO_SMTP -> cCURLPROTO_SMTP
CURLPROTO_SMTPS -> cCURLPROTO_SMTPS
CURLPROTO_RTSP -> cCURLPROTO_RTSP
CURLPROTO_RTMP -> cCURLPROTO_RTMP
CURLPROTO_RTMPT -> cCURLPROTO_RTMPT
CURLPROTO_RTMPE -> cCURLPROTO_RTMPE
CURLPROTO_RTMPTE -> cCURLPROTO_RTMPTE
CURLPROTO_RTMPS -> cCURLPROTO_RTMPS
CURLPROTO_RTMPTS -> cCURLPROTO_RTMPTS
CURLPROTO_GOPHER -> cCURLPROTO_GOPHER
instance CURLenum CURLproxy where
fromCURLenum x = case x of
CURLPROXY_HTTP -> cCURLPROXY_HTTP
CURLPROXY_HTTP_1_0 -> cCURLPROXY_HTTP_1_0
CURLPROXY_SOCKS4 -> cCURLPROXY_SOCKS4
CURLPROXY_SOCKS5 -> cCURLPROXY_SOCKS5
CURLPROXY_SOCKS4A -> cCURLPROXY_SOCKS4A
CURLPROXY_SOCKS5_HOSTNAME -> cCURLPROXY_SOCKS5_HOSTNAME
instance CURLenum CURLnetrc where
fromCURLenum x = case x of
CURL_NETRC_IGNORED -> cCURL_NETRC_IGNORED
CURL_NETRC_OPTIONAL -> cCURL_NETRC_OPTIONAL
CURL_NETRC_REQUIRED -> cCURL_NETRC_REQUIRED
instance CURLenum CURLauth where
fromCURLenum x = case x of
CURLAUTH_BASIC -> cCURLAUTH_BASIC
CURLAUTH_DIGEST -> cCURLAUTH_DIGEST
CURLAUTH_DIGEST_IE -> cCURLAUTH_DIGEST_IE
CURLAUTH_GSSNEGOTIATE -> cCURLAUTH_GSSNEGOTIATE
CURLAUTH_NTLM -> cCURLAUTH_NTLM
CURLAUTH_NTLM_WB -> cCURLAUTH_NTLM_WB
CURLAUTH_ONLY -> cCURLAUTH_ONLY
CURLAUTH_ANY -> cCURLAUTH_ANY
CURLAUTH_ANYSAFE -> cCURLAUTH_ANYSAFE
instance CURLenum CURLtlsauth where
fromCURLenum x = case x of
CURL_TLSAUTH_SRP -> cCURL_TLSAUTH_SRP
instance CURLenum CURLredir where
fromCURLenum x = case x of
CURL_REDIR_GET_ALL -> cCURL_REDIR_GET_ALL
CURL_REDIR_POST_301 -> cCURL_REDIR_POST_301
CURL_REDIR_POST_302 -> cCURL_REDIR_POST_302
CURL_REDIR_POST_ALL -> cCURL_REDIR_POST_ALL
instance CURLenum CURLhttpver where
fromCURLenum x = case x of
CURL_HTTP_VERSION_NONE -> cCURL_HTTP_VERSION_NONE
CURL_HTTP_VERSION_1_0 -> cCURL_HTTP_VERSION_1_0
CURL_HTTP_VERSION_1_1 -> cCURL_HTTP_VERSION_1_1
instance CURLenum CURLftpcreate where
fromCURLenum x = case x of
CURLFTP_CREATE_DIR_NONE -> cCURLFTP_CREATE_DIR_NONE
CURLFTP_CREATE_DIR -> cCURLFTP_CREATE_DIR
CURLFTP_CREATE_DIR_RETRY -> cCURLFTP_CREATE_DIR_RETRY
instance CURLenum CURLftpauth where
fromCURLenum x = case x of
CURLFTPAUTH_DEFAULT -> cCURLFTPAUTH_DEFAULT
CURLFTPAUTH_SSL -> cCURLFTPAUTH_SSL
CURLFTPAUTH_TLS -> cCURLFTPAUTH_TLS
instance CURLenum CURLftpssl where
fromCURLenum x = case x of
CURLFTPSSL_CCC_NONE -> cCURLFTPSSL_CCC_NONE
CURLFTPSSL_CCC_PASSIVE -> cCURLFTPSSL_CCC_PASSIVE
CURLFTPSSL_CCC_ACTIVE -> cCURLFTPSSL_CCC_ACTIVE
instance CURLenum CURLftpmethod where
fromCURLenum x = case x of
CURLFTPMETHOD_DEFAULT -> cCURLFTPMETHOD_DEFAULT
CURLFTPMETHOD_MULTICWD -> cCURLFTPMETHOD_MULTICWD
CURLFTPMETHOD_NOCWD -> cCURLFTPMETHOD_NOCWD
CURLFTPMETHOD_SINGLECWD -> cCURLFTPMETHOD_SINGLECWD
instance CURLenum CURLrtspreq where
fromCURLenum x = case x of
CURL_RTSPREQ_OPTIONS -> cCURL_RTSPREQ_OPTIONS
CURL_RTSPREQ_DESCRIBE -> cCURL_RTSPREQ_DESCRIBE
CURL_RTSPREQ_ANNOUNCE -> cCURL_RTSPREQ_ANNOUNCE
CURL_RTSPREQ_SETUP -> cCURL_RTSPREQ_SETUP
CURL_RTSPREQ_PLAY -> cCURL_RTSPREQ_PLAY
CURL_RTSPREQ_PAUSE -> cCURL_RTSPREQ_PAUSE
CURL_RTSPREQ_TEARDOWN -> cCURL_RTSPREQ_TEARDOWN
CURL_RTSPREQ_GET_PARAMETER -> cCURL_RTSPREQ_GET_PARAMETER
CURL_RTSPREQ_SET_PARAMETER -> cCURL_RTSPREQ_SET_PARAMETER
CURL_RTSPREQ_RECORD -> cCURL_RTSPREQ_RECORD
CURL_RTSPREQ_RECEIVE -> cCURL_RTSPREQ_RECEIVE
instance CURLenum CURLtimecond where
fromCURLenum x = case x of
CURL_TIMECOND_NONE -> cCURL_TIMECOND_NONE
CURL_TIMECOND_IFMODSINCE -> cCURL_TIMECOND_IFMODSINCE
CURL_TIMECOND_IFUNMODSINCE -> cCURL_TIMECOND_IFUNMODSINCE
CURL_TIMECOND_LASTMOD -> cCURL_TIMECOND_LASTMOD
instance CURLenum CURLclosepol where
fromCURLenum x = case x of
CURLCLOSEPOLICY_NONE -> cCURLCLOSEPOLICY_NONE
CURLCLOSEPOLICY_OLDEST -> cCURLCLOSEPOLICY_OLDEST
CURLCLOSEPOLICY_LEAST_RECENTLY_USED -> cCURLCLOSEPOLICY_LEAST_RECENTLY_USED
CURLCLOSEPOLICY_LEAST_TRAFFIC -> cCURLCLOSEPOLICY_LEAST_TRAFFIC
CURLCLOSEPOLICY_SLOWEST -> cCURLCLOSEPOLICY_SLOWEST
CURLCLOSEPOLICY_CALLBACK -> cCURLCLOSEPOLICY_CALLBACK
instance CURLenum CURLipresolve where
fromCURLenum x = case x of
CURL_IPRESOLVE_WHATEVER -> cCURL_IPRESOLVE_WHATEVER
CURL_IPRESOLVE_V4 -> cCURL_IPRESOLVE_V4
CURL_IPRESOLVE_V6 -> cCURL_IPRESOLVE_V6
instance CURLenum CURLusessl where
fromCURLenum x = case x of
CURLUSESSL_NONE -> cCURLUSESSL_NONE
CURLUSESSL_TRY -> cCURLUSESSL_TRY
CURLUSESSL_CONTROL -> cCURLUSESSL_CONTROL
CURLUSESSL_ALL -> cCURLUSESSL_ALL
instance CURLenum CURLsslver where
fromCURLenum x = case x of
CURL_SSLVERSION_DEFAULT -> cCURL_SSLVERSION_DEFAULT
CURL_SSLVERSION_TLSv1 -> cCURL_SSLVERSION_TLSv1
CURL_SSLVERSION_SSLv2 -> cCURL_SSLVERSION_SSLv2
CURL_SSLVERSION_SSLv3 -> cCURL_SSLVERSION_SSLv3
instance CURLenum CURLsslopt where
fromCURLenum x = case x of
CURLSSLOPT_ALLOW_BEAST -> cCURLSSLOPT_ALLOW_BEAST
instance CURLenum CURLgssapi where
fromCURLenum x = case x of
CURLGSSAPI_DELEGATION_NONE -> cCURLGSSAPI_DELEGATION_NONE
CURLGSSAPI_DELEGATION_POLICY_FLAG -> cCURLGSSAPI_DELEGATION_POLICY_FLAG
CURLGSSAPI_DELEGATION_FLAG -> cCURLGSSAPI_DELEGATION_FLAG
instance CURLenum CURLsshauth where
fromCURLenum x = case x of
CURLSSH_AUTH_ANY -> cCURLSSH_AUTH_ANY
CURLSSH_AUTH_NONE -> cCURLSSH_AUTH_NONE
CURLSSH_AUTH_PUBLICKEY -> cCURLSSH_AUTH_PUBLICKEY
CURLSSH_AUTH_PASSWORD -> cCURLSSH_AUTH_PASSWORD
CURLSSH_AUTH_HOST -> cCURLSSH_AUTH_HOST
CURLSSH_AUTH_KEYBOARD -> cCURLSSH_AUTH_KEYBOARD
CURLSSH_AUTH_DEFAULT -> cCURLSSH_AUTH_DEFAULT