curl

package module
v0.0.0-...-b592b23 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 11, 2025 License: Apache-2.0 Imports: 14 Imported by: 1

README

go-curl-impersonate

go-curl-impersonate is a GoLang interface to libcurl-impersonate, a special build of the multiprotocol file transfer library that can impersonate major web browsers. Similar to the HTTP support in net/http, go-curl-impersonate can be used to fetch objects from a Go program. While go-curl-impersonate can provide simple fetches, it also exposes most of the functionality of libcurl, including:

  • Browser Impersonation: Perform TLS and HTTP handshakes identical to real browsers.
  • Speed - libcurl is very fast.
  • Multiple protocols (not just HTTP).
  • SSL, authentication and proxy support.
  • Support for libcurl's callbacks.

This said, libcurl API can be less easy to learn than net/http.

LICENSE

go-curl-impersonate is licensed under the Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.html).

Current Development Status

  • currently unstable
  • websocket support soon
  • READ, WRITE, HEADER, PROGRESS function callback
  • a Multipart Form supports file uploading
  • Most curl_easy_setopt option
  • partly implement share & multi interface
  • new callback function prototype

Requirements

  • Any version of Go
  • libcurl-impersonate binaries are included in the libs directory
  • Python 3 (used only by configure scripts)

How to Install

$ go get -u github.com/BridgeSenseDev/go-curl-impersonate

Current Status

  • Linux x64
    • passed go1 (ArchLinux)
  • Windows x86
    • passed go1 (win7, mingw-gcc 4.5.2, curl 7.22.0)
  • Mac OS
    • passed go1 (Mac OS X 10.7.3, curl 7.21.4)

NOTE: Above information is outdated ("help wanted")

Sample Program

Following comes from examples/https_impersonate.go and demonstrates impersonation of tls and http handshakes on browserleaks. Simply type go run ./examples/https_impersonate.go to execute.

package main

import (
   "fmt"
   curl "github.com/BridgeSenseDev/go-curl-impersonate"
   "io"
   "os"
)

func writeData(ptr []byte, userdata interface{}) bool {
   writer, ok := userdata.(io.Writer)
   if !ok {
      fmt.Println("WriteData: userdata is not an io.Writer")
      return false
   }
   _, err := writer.Write(ptr)
   return err == nil
}

func main() {
   easy := curl.EasyInit()
   if easy == nil {
      fmt.Println("EasyInit failed")
      return
   }
   defer easy.Cleanup()

   err := easy.Setopt(curl.OPT_URL, "https://tls.browserleaks.com/json")
   if err != nil {
      fmt.Printf("Setopt URL failed: %v\n", err)
      return
   }

   easy.Setopt(curl.OPT_VERBOSE, true)

   err = easy.Setopt(curl.OPT_ACCEPT_ENCODING, "")
   if err != nil {
      fmt.Printf("Setopt OPT_ACCEPT_ENCODING failed: %v\n", err)
      return
   }

   err = easy.Impersonate("chrome136", true)
   if err != nil {
      fmt.Printf("Impersonate failed: %v\n", err)
   }

   easy.Setopt(curl.OPT_WRITEFUNCTION, writeData)
   easy.Setopt(curl.OPT_WRITEDATA, os.Stdout)

   fmt.Println("Performing request...")
   err = easy.Perform()
   if err != nil {
      fmt.Printf("Perform failed: %v\n", err)
   } else {
      fmt.Println("\nRequest performed successfully.")
   }
}

See also the examples directory!

Acknowledgements

  • curl-cffi: Python binding for curl-impersonate fork via cffi. Inspiration and blueprint for this package.
  • go-curl: The original go bindings for libcurl, from which this package is forked.
  • curl-impersonate: A special build of curl that can impersonate Chrome & Firefox
  • curl: A command line tool and library for transferring data with URL syntax,

Documentation

Overview

libcurl go bingding

Index

Constants

View Source
const (
	E_ABORTED_BY_CALLBACK      = C.CURLE_ABORTED_BY_CALLBACK
	E_AGAIN                    = C.CURLE_AGAIN
	E_AUTH_ERROR               = C.CURLE_AUTH_ERROR
	E_BAD_CONTENT_ENCODING     = C.CURLE_BAD_CONTENT_ENCODING
	E_BAD_DOWNLOAD_RESUME      = C.CURLE_BAD_DOWNLOAD_RESUME
	E_BAD_FUNCTION_ARGUMENT    = C.CURLE_BAD_FUNCTION_ARGUMENT
	E_CHUNK_FAILED             = C.CURLE_CHUNK_FAILED
	E_COULDNT_CONNECT          = C.CURLE_COULDNT_CONNECT
	E_COULDNT_RESOLVE_HOST     = C.CURLE_COULDNT_RESOLVE_HOST
	E_COULDNT_RESOLVE_PROXY    = C.CURLE_COULDNT_RESOLVE_PROXY
	E_ECH_REQUIRED             = C.CURLE_ECH_REQUIRED
	E_FAILED_INIT              = C.CURLE_FAILED_INIT
	E_FILESIZE_EXCEEDED        = C.CURLE_FILESIZE_EXCEEDED
	E_FILE_COULDNT_READ_FILE   = C.CURLE_FILE_COULDNT_READ_FILE
	E_FTP_ACCEPT_FAILED        = C.CURLE_FTP_ACCEPT_FAILED
	E_FTP_ACCEPT_TIMEOUT       = C.CURLE_FTP_ACCEPT_TIMEOUT
	E_FTP_BAD_FILE_LIST        = C.CURLE_FTP_BAD_FILE_LIST
	E_FTP_CANT_GET_HOST        = C.CURLE_FTP_CANT_GET_HOST
	E_FTP_COULDNT_RETR_FILE    = C.CURLE_FTP_COULDNT_RETR_FILE
	E_FTP_COULDNT_SET_TYPE     = C.CURLE_FTP_COULDNT_SET_TYPE
	E_FTP_COULDNT_USE_REST     = C.CURLE_FTP_COULDNT_USE_REST
	E_FTP_PORT_FAILED          = C.CURLE_FTP_PORT_FAILED
	E_FTP_PRET_FAILED          = C.CURLE_FTP_PRET_FAILED
	E_FTP_WEIRD_227_FORMAT     = C.CURLE_FTP_WEIRD_227_FORMAT
	E_FTP_WEIRD_PASS_REPLY     = C.CURLE_FTP_WEIRD_PASS_REPLY
	E_FTP_WEIRD_PASV_REPLY     = C.CURLE_FTP_WEIRD_PASV_REPLY
	E_GOT_NOTHING              = C.CURLE_GOT_NOTHING
	E_HTTP2                    = C.CURLE_HTTP2
	E_HTTP2_STREAM             = C.CURLE_HTTP2_STREAM
	E_HTTP3                    = C.CURLE_HTTP3
	E_HTTP_RETURNED_ERROR      = C.CURLE_HTTP_RETURNED_ERROR
	E_INTERFACE_FAILED         = C.CURLE_INTERFACE_FAILED
	E_LDAP_CANNOT_BIND         = C.CURLE_LDAP_CANNOT_BIND
	E_LDAP_SEARCH_FAILED       = C.CURLE_LDAP_SEARCH_FAILED
	E_LOGIN_DENIED             = C.CURLE_LOGIN_DENIED
	E_NOT_BUILT_IN             = C.CURLE_NOT_BUILT_IN
	E_NO_CONNECTION_AVAILABLE  = C.CURLE_NO_CONNECTION_AVAILABLE
	E_OBSOLETE20               = C.CURLE_OBSOLETE20
	E_OBSOLETE24               = C.CURLE_OBSOLETE24
	E_OBSOLETE29               = C.CURLE_OBSOLETE29
	E_OBSOLETE32               = C.CURLE_OBSOLETE32
	E_OBSOLETE34               = C.CURLE_OBSOLETE34
	E_OBSOLETE40               = C.CURLE_OBSOLETE40
	E_OBSOLETE41               = C.CURLE_OBSOLETE41
	E_OBSOLETE44               = C.CURLE_OBSOLETE44
	E_OBSOLETE46               = C.CURLE_OBSOLETE46
	E_OBSOLETE50               = C.CURLE_OBSOLETE50
	E_OBSOLETE51               = C.CURLE_OBSOLETE51
	E_OBSOLETE57               = C.CURLE_OBSOLETE57
	E_OBSOLETE62               = C.CURLE_OBSOLETE62
	E_OBSOLETE75               = C.CURLE_OBSOLETE75
	E_OBSOLETE76               = C.CURLE_OBSOLETE76
	E_OK                       = C.CURLE_OK
	E_OPERATION_TIMEDOUT       = C.CURLE_OPERATION_TIMEDOUT
	E_OUT_OF_MEMORY            = C.CURLE_OUT_OF_MEMORY
	E_PARTIAL_FILE             = C.CURLE_PARTIAL_FILE
	E_PEER_FAILED_VERIFICATION = C.CURLE_PEER_FAILED_VERIFICATION
	E_PROXY                    = C.CURLE_PROXY
	E_QUIC_CONNECT_ERROR       = C.CURLE_QUIC_CONNECT_ERROR
	E_QUOTE_ERROR              = C.CURLE_QUOTE_ERROR
	E_RANGE_ERROR              = C.CURLE_RANGE_ERROR
	E_READ_ERROR               = C.CURLE_READ_ERROR
	E_RECURSIVE_API_CALL       = C.CURLE_RECURSIVE_API_CALL
	E_RECV_ERROR               = C.CURLE_RECV_ERROR
	E_REMOTE_ACCESS_DENIED     = C.CURLE_REMOTE_ACCESS_DENIED
	E_REMOTE_DISK_FULL         = C.CURLE_REMOTE_DISK_FULL
	E_REMOTE_FILE_EXISTS       = C.CURLE_REMOTE_FILE_EXISTS
	E_REMOTE_FILE_NOT_FOUND    = C.CURLE_REMOTE_FILE_NOT_FOUND
	E_RTSP_CSEQ_ERROR          = C.CURLE_RTSP_CSEQ_ERROR
	E_RTSP_SESSION_ERROR       = C.CURLE_RTSP_SESSION_ERROR
	E_SEND_ERROR               = C.CURLE_SEND_ERROR
	E_SEND_FAIL_REWIND         = C.CURLE_SEND_FAIL_REWIND
	E_SETOPT_OPTION_SYNTAX     = C.CURLE_SETOPT_OPTION_SYNTAX
	E_SSH                      = C.CURLE_SSH
	E_SSL_CACERT_BADFILE       = C.CURLE_SSL_CACERT_BADFILE
	E_SSL_CERTPROBLEM          = C.CURLE_SSL_CERTPROBLEM
	E_SSL_CIPHER               = C.CURLE_SSL_CIPHER
	E_SSL_CLIENTCERT           = C.CURLE_SSL_CLIENTCERT
	E_SSL_CONNECT_ERROR        = C.CURLE_SSL_CONNECT_ERROR
	E_SSL_CRL_BADFILE          = C.CURLE_SSL_CRL_BADFILE
	E_SSL_ENGINE_INITFAILED    = C.CURLE_SSL_ENGINE_INITFAILED
	E_SSL_ENGINE_NOTFOUND      = C.CURLE_SSL_ENGINE_NOTFOUND
	E_SSL_ENGINE_SETFAILED     = C.CURLE_SSL_ENGINE_SETFAILED
	E_SSL_INVALIDCERTSTATUS    = C.CURLE_SSL_INVALIDCERTSTATUS
	E_SSL_ISSUER_ERROR         = C.CURLE_SSL_ISSUER_ERROR
	E_SSL_PINNEDPUBKEYNOTMATCH = C.CURLE_SSL_PINNEDPUBKEYNOTMATCH
	E_SSL_SHUTDOWN_FAILED      = C.CURLE_SSL_SHUTDOWN_FAILED
	E_TFTP_ILLEGAL             = C.CURLE_TFTP_ILLEGAL
	E_TFTP_NOSUCHUSER          = C.CURLE_TFTP_NOSUCHUSER
	E_TFTP_NOTFOUND            = C.CURLE_TFTP_NOTFOUND
	E_TFTP_PERM                = C.CURLE_TFTP_PERM
	E_TFTP_UNKNOWNID           = C.CURLE_TFTP_UNKNOWNID
	E_TOO_LARGE                = C.CURLE_TOO_LARGE
	E_TOO_MANY_REDIRECTS       = C.CURLE_TOO_MANY_REDIRECTS
	E_UNKNOWN_OPTION           = C.CURLE_UNKNOWN_OPTION
	E_UNRECOVERABLE_POLL       = C.CURLE_UNRECOVERABLE_POLL
	E_UNSUPPORTED_PROTOCOL     = C.CURLE_UNSUPPORTED_PROTOCOL
	E_UPLOAD_FAILED            = C.CURLE_UPLOAD_FAILED
	E_URL_MALFORMAT            = C.CURLE_URL_MALFORMAT
	E_USE_SSL_FAILED           = C.CURLE_USE_SSL_FAILED
	E_WEIRD_SERVER_REPLY       = C.CURLE_WEIRD_SERVER_REPLY
	E_WRITE_ERROR              = C.CURLE_WRITE_ERROR
)

CURLcode

View Source
const (
	GLOBAL_SSL     = C.CURL_GLOBAL_SSL
	GLOBAL_WIN32   = C.CURL_GLOBAL_WIN32
	GLOBAL_ALL     = C.CURL_GLOBAL_ALL
	GLOBAL_NOTHING = C.CURL_GLOBAL_NOTHING
	GLOBAL_DEFAULT = C.CURL_GLOBAL_DEFAULT
)

for GlobalInit(flag)

View Source
const (
	M_CALL_MULTI_PERFORM = C.CURLM_CALL_MULTI_PERFORM
	//        M_OK                 = C.CURLM_OK
	M_BAD_HANDLE      = C.CURLM_BAD_HANDLE
	M_BAD_EASY_HANDLE = C.CURLM_BAD_EASY_HANDLE
	M_OUT_OF_MEMORY   = C.CURLM_OUT_OF_MEMORY
	M_INTERNAL_ERROR  = C.CURLM_INTERNAL_ERROR
	M_BAD_SOCKET      = C.CURLM_BAD_SOCKET
	M_UNKNOWN_OPTION  = C.CURLM_UNKNOWN_OPTION
)

CURLMcode

View Source
const (
	MOPT_SOCKETFUNCTION = C.CURLMOPT_SOCKETFUNCTION
	MOPT_SOCKETDATA     = C.CURLMOPT_SOCKETDATA
	MOPT_PIPELINING     = C.CURLMOPT_PIPELINING
	MOPT_TIMERFUNCTION  = C.CURLMOPT_TIMERFUNCTION
	MOPT_TIMERDATA      = C.CURLMOPT_TIMERDATA
	MOPT_MAXCONNECTS    = C.CURLMOPT_MAXCONNECTS
)

for multi.Setopt(flag, ...)

View Source
const (
	//        SHE_OK         = C.CURLSHE_OK
	SHE_BAD_OPTION = C.CURLSHE_BAD_OPTION
	SHE_IN_USE     = C.CURLSHE_IN_USE
	SHE_INVALID    = C.CURLSHE_INVALID
	SHE_NOMEM      = C.CURLSHE_NOMEM
)

CURLSHcode

View Source
const (
	SHOPT_SHARE      = C.CURLSHOPT_SHARE
	SHOPT_UNSHARE    = C.CURLSHOPT_UNSHARE
	SHOPT_LOCKFUNC   = C.CURLSHOPT_LOCKFUNC
	SHOPT_UNLOCKFUNC = C.CURLSHOPT_UNLOCKFUNC
	SHOPT_USERDATA   = C.CURLSHOPT_USERDATA
)

for share.Setopt(flat, ...)

View Source
const (
	LOCK_DATA_SHARE       = C.CURL_LOCK_DATA_SHARE
	LOCK_DATA_COOKIE      = C.CURL_LOCK_DATA_COOKIE
	LOCK_DATA_DNS         = C.CURL_LOCK_DATA_DNS
	LOCK_DATA_SSL_SESSION = C.CURL_LOCK_DATA_SSL_SESSION
	LOCK_DATA_CONNECT     = C.CURL_LOCK_DATA_CONNECT
)

for share.Setopt(SHOPT_SHARE/SHOPT_UNSHARE, flag)

View Source
const (
	VERSION_FIRST  = C.CURLVERSION_FIRST
	VERSION_SECOND = C.CURLVERSION_SECOND
	VERSION_THIRD  = C.CURLVERSION_THIRD
	// VERSION_FOURTH = C.CURLVERSION_FOURTH
	VERSION_LAST = C.CURLVERSION_LAST
	VERSION_NOW  = C.CURLVERSION_NOW
)

for VersionInfo(flag)

View Source
const (
	VERSION_IPV6         = C.CURL_VERSION_IPV6
	VERSION_KERBEROS4    = C.CURL_VERSION_KERBEROS4
	VERSION_SSL          = C.CURL_VERSION_SSL
	VERSION_LIBZ         = C.CURL_VERSION_LIBZ
	VERSION_NTLM         = C.CURL_VERSION_NTLM
	VERSION_GSSNEGOTIATE = C.CURL_VERSION_GSSNEGOTIATE
	VERSION_DEBUG        = C.CURL_VERSION_DEBUG
	VERSION_ASYNCHDNS    = C.CURL_VERSION_ASYNCHDNS
	VERSION_SPNEGO       = C.CURL_VERSION_SPNEGO
	VERSION_LARGEFILE    = C.CURL_VERSION_LARGEFILE
	VERSION_IDN          = C.CURL_VERSION_IDN
	VERSION_SSPI         = C.CURL_VERSION_SSPI
	VERSION_CONV         = C.CURL_VERSION_CONV
	VERSION_CURLDEBUG    = C.CURL_VERSION_CURLDEBUG
	VERSION_TLSAUTH_SRP  = C.CURL_VERSION_TLSAUTH_SRP
	VERSION_NTLM_WB      = C.CURL_VERSION_NTLM_WB
)

for VersionInfo(...).Features mask flag

View Source
const (
	READFUNC_ABORT = C.CURL_READFUNC_ABORT
	READFUNC_PAUSE = C.CURL_READFUNC_PAUSE
)

for OPT_READFUNCTION, return a int flag

View Source
const (
	HTTP_VERSION_NONE = C.CURL_HTTP_VERSION_NONE
	HTTP_VERSION_1_0  = C.CURL_HTTP_VERSION_1_0
	HTTP_VERSION_1_1  = C.CURL_HTTP_VERSION_1_1
)

for easy.Setopt(OPT_HTTP_VERSION, flag)

View Source
const (
	PROXY_HTTP     = C.CURLPROXY_HTTP     /* added in 7.10, new in 7.19.4 default is to use CONNECT HTTP/1.1 */
	PROXY_HTTP_1_0 = C.CURLPROXY_HTTP_1_0 /* added in 7.19.4, force to use CONNECT HTTP/1.0  */
	PROXY_SOCKS4   = C.CURLPROXY_SOCKS4   /* support added in 7.15.2, enum existed already in 7.10 */
	PROXY_SOCKS5   = C.CURLPROXY_SOCKS5   /* added in 7.10 */
	PROXY_SOCKS4A  = C.CURLPROXY_SOCKS4A  /* added in 7.18.0 */
	// Use the SOCKS5 protocol but pass along the host name rather than the IP address.
	PROXY_SOCKS5_HOSTNAME = C.CURLPROXY_SOCKS5_HOSTNAME
)

for easy.Setopt(OPT_PROXYTYPE, flag)

View Source
const (
	SSLVERSION_DEFAULT = C.CURL_SSLVERSION_DEFAULT
	SSLVERSION_TLSv1   = C.CURL_SSLVERSION_TLSv1
	SSLVERSION_SSLv2   = C.CURL_SSLVERSION_SSLv2
	SSLVERSION_SSLv3   = C.CURL_SSLVERSION_SSLv3
)

for easy.Setopt(OPT_SSLVERSION, flag)

View Source
const (
	TIMECOND_NONE         = C.CURL_TIMECOND_NONE
	TIMECOND_IFMODSINCE   = C.CURL_TIMECOND_IFMODSINCE
	TIMECOND_IFUNMODSINCE = C.CURL_TIMECOND_IFUNMODSINCE
	TIMECOND_LASTMOD      = C.CURL_TIMECOND_LASTMOD
)

for easy.Setopt(OPT_TIMECONDITION, flag)

View Source
const (
	NETRC_IGNORED  = C.CURL_NETRC_IGNORED
	NETRC_OPTIONAL = C.CURL_NETRC_OPTIONAL
	NETRC_REQUIRED = C.CURL_NETRC_REQUIRED
)

for easy.Setopt(OPT_NETRC, flag)

View Source
const (
	FTP_CREATE_DIR_NONE  = C.CURLFTP_CREATE_DIR_NONE
	FTP_CREATE_DIR       = C.CURLFTP_CREATE_DIR
	FTP_CREATE_DIR_RETRY = C.CURLFTP_CREATE_DIR_RETRY
)

for easy.Setopt(OPT_FTP_CREATE_MISSING_DIRS, flag)

View Source
const (
	IPRESOLVE_WHATEVER = C.CURL_IPRESOLVE_WHATEVER
	IPRESOLVE_V4       = C.CURL_IPRESOLVE_V4
	IPRESOLVE_V6       = C.CURL_IPRESOLVE_V6
)

for easy.Setopt(OPT_IPRESOLVE, flag)

View Source
const (
	PAUSE_RECV      = C.CURLPAUSE_RECV
	PAUSE_RECV_CONT = C.CURLPAUSE_RECV_CONT
	PAUSE_SEND      = C.CURLPAUSE_SEND
	PAUSE_SEND_CONT = C.CURLPAUSE_SEND_CONT
	PAUSE_ALL       = C.CURLPAUSE_ALL
	PAUSE_CONT      = C.CURLPAUSE_CONT
)

for easy.Pause(flat)

View Source
const (
	CURLMSG_NONE = C.CURLMSG_NONE
	CURLMSG_DONE = C.CURLMSG_DONE
	CURLMSG_LAST = C.CURLMSG_LAST
)

for multi.Info_read()

View Source
const (
	SSLOPT_ALLOW_BEAST = 1
)

for easy.Setopt(OPT_SSL_OPTIONS, flag)

Variables

This section is empty.

Functions

func CheckLoad

func CheckLoad() error

func CurlEasyCleanup

func CurlEasyCleanup(handle unsafe.Pointer)

func CurlEasyDuph

func CurlEasyDuph(handle unsafe.Pointer) unsafe.Pointer

func CurlEasyEscape

func CurlEasyEscape(handle unsafe.Pointer, url unsafe.Pointer, length int) unsafe.Pointer

func CurlEasyInit

func CurlEasyInit() unsafe.Pointer

func CurlEasyReset

func CurlEasyReset(handle unsafe.Pointer)

func CurlEasyStrerror

func CurlEasyStrerror(e CurlCode) string

func CurlEasyUnescape

func CurlEasyUnescape(handle unsafe.Pointer, url unsafe.Pointer, inlength int, outlength unsafe.Pointer) unsafe.Pointer

func CurlFormFree

func CurlFormFree(form CurlHttpFormPost)

func CurlFormaddNameContentLength

func CurlFormaddNameContentLength(httppost unsafe.Pointer, last_post unsafe.Pointer, name unsafe.Pointer, content unsafe.Pointer, length int) uint32

func CurlFormaddNameContentLengthType

func CurlFormaddNameContentLengthType(httppost unsafe.Pointer, last_post unsafe.Pointer, name unsafe.Pointer, content unsafe.Pointer, length int, ctype unsafe.Pointer) uint32

func CurlFormaddNameFileType

func CurlFormaddNameFileType(httppost unsafe.Pointer, last_post unsafe.Pointer, name unsafe.Pointer, filename unsafe.Pointer, ctype unsafe.Pointer) uint32

func CurlFree

func CurlFree(ptr unsafe.Pointer)

func CurlGetDate

func CurlGetDate(date unsafe.Pointer, unused unsafe.Pointer) int64

func CurlGlobalCleanup

func CurlGlobalCleanup()

func CurlMsgGetEasyHandle

func CurlMsgGetEasyHandle(cm CurlMsg) unsafe.Pointer

func CurlMsgGetWhatever

func CurlMsgGetWhatever(cm CurlMsg) unsafe.Pointer

func CurlMultiStrerror

func CurlMultiStrerror(e MultiCode) string

func CurlShareStrerror

func CurlShareStrerror(e ShareCode) string

func CurlSlistFreeAll

func CurlSlistFreeAll(slist CurlSlist)

func GetCurlFormaddOk

func GetCurlFormaddOk() uint32

func GetCurlInfoDouble

func GetCurlInfoDouble() uint32

func GetCurlInfoLong

func GetCurlInfoLong() uint32

func GetCurlInfoSList

func GetCurlInfoSList() uint32

func GetCurlInfoString

func GetCurlInfoString() uint32

func GetCurlInfoTypeMask

func GetCurlInfoTypeMask() uint32

func GetCurlReadfuncAbort

func GetCurlReadfuncAbort() C.size_t

func GetCurlReadfuncPause

func GetCurlReadfuncPause() C.size_t

func GetCurlVersion

func GetCurlVersion() string

func GetCurlVersionInfo

func GetCurlVersionInfo(ver uint32) unsafe.Pointer

func GetCurlWritefuncPause

func GetCurlWritefuncPause() C.size_t

func GetHeaderCallbackFuncptr

func GetHeaderCallbackFuncptr() unsafe.Pointer

func GetProgressCallbackFuncptr

func GetProgressCallbackFuncptr() unsafe.Pointer

func GetReadCallbackFuncptr

func GetReadCallbackFuncptr() unsafe.Pointer

func GetWriteCallbackFuncptr

func GetWriteCallbackFuncptr() unsafe.Pointer

func Getdate

func Getdate(date string) *time.Time

curl_getdate - Convert a date string to number of seconds since January 1, 1970 In golang, we convert it to a *time.Time

func GlobalCleanup

func GlobalCleanup()

curl_global_cleanup - global libcurl cleanup

func GlobalInit

func GlobalInit(flags int64) error

curl_global_init - Global libcurl initialisation

func GoHeaderFunctionTrampoline

func GoHeaderFunctionTrampoline(buffer *C.char, size C.size_t, nitems C.size_t, userdata unsafe.Pointer) C.size_t

func GoProgressFunctionTrampoline

func GoProgressFunctionTrampoline(clientp unsafe.Pointer, dltotal C.curl_off_t, dlnow C.curl_off_t, ultotal C.curl_off_t, ulnow C.curl_off_t) C.int

func GoReadFunctionTrampoline

func GoReadFunctionTrampoline(buffer *C.char, size C.size_t, nitems C.size_t, instream unsafe.Pointer) C.size_t

func GoWriteFunctionTrampoline

func GoWriteFunctionTrampoline(buffer *C.char, size C.size_t, nitems C.size_t, userdata unsafe.Pointer) C.size_t

func PrintCurlVersionInfo

func PrintCurlVersionInfo(infoPtr unsafe.Pointer)

func SetLogLevel

func SetLogLevel(levelName string)

SetLogLevel changes the log level which determines the granularity of the messages that are logged. Available log levels are: "DEBUG", "INFO", "WARN", "ERROR" and "DEFAULT_LOG_LEVEL".

func Version

func Version() string

curl_version - returns the libcurl version string

Types

type CSizeT

type CSizeT uintptr

type CURL

type CURL struct {
	// contains filtered or unexported fields
}

curl_easy interface

func EasyInit

func EasyInit() *CURL

curl_easy_init - Start a libcurl easy session

func (*CURL) Cleanup

func (curl *CURL) Cleanup()

curl_easy_cleanup - End a libcurl easy session

func (*CURL) Duphandle

func (curl *CURL) Duphandle() *CURL

curl_easy_duphandle - Clone a libcurl session handle

func (*CURL) Escape

func (curl *CURL) Escape(url string) string

curl_easy_escape - URL encodes the given string

func (*CURL) GetHandle

func (curl *CURL) GetHandle() unsafe.Pointer

func (*CURL) Getinfo

func (curl *CURL) Getinfo(infoConstant uint32) (any, error)

func (*CURL) Impersonate

func (curl *CURL) Impersonate(target string, defaultHeaders bool) error

func (*CURL) MallocFreeAfter

func (curl *CURL) MallocFreeAfter(from int)

func (*CURL) MallocGetPos

func (curl *CURL) MallocGetPos() int

func (*CURL) Pause

func (curl *CURL) Pause(bitmask int) error

curl_easy_pause - pause and unpause a connection

func (*CURL) Perform

func (curl *CURL) Perform() error

curl_easy_perform - Perform a file transfer

func (*CURL) Recv

func (curl *CURL) Recv(buffer []byte) (int, error)

curl_easy_recv - receives raw data on an "easy" connection

func (*CURL) Reset

func (curl *CURL) Reset()

curl_easy_reset - reset all options of a libcurl session handle

func (*CURL) Send

func (curl *CURL) Send(buffer []byte) (int, error)

curl_easy_send - sends raw data over an "easy" connection

func (*CURL) Setopt

func (curl *CURL) Setopt(opt EasyOpt, param any) error

curl_easy_setopt - set options for a curl easy handle WARNING: a function pointer is &fun, but function addr is reflect.ValueOf(fun).Pointer()

func (*CURL) Unescape

func (curl *CURL) Unescape(url string) string

curl_easy_unescape - URL decodes the given string

type CURLM

type CURLM struct {
	// contains filtered or unexported fields
}

func MultiInit

func MultiInit() *CURLM

func (*CURLM) AddHandle

func (mcurl *CURLM) AddHandle(easy *CURL) error

func (*CURLM) Cleanup

func (mcurl *CURLM) Cleanup() error

func (*CURLM) Info_read

func (mcurl *CURLM) Info_read() (*CURLMessage, int)

Info_read uses the wrapper that returns CurlMsg (unsafe.Pointer)

func (*CURLM) Perform

func (mcurl *CURLM) Perform() (int, error)

func (*CURLM) RemoveHandle

func (mcurl *CURLM) RemoveHandle(easy *CURL) error

func (*CURLM) Setopt

func (mcurl *CURLM) Setopt(opt int, param any) error

func (*CURLM) Timeout

func (mcurl *CURLM) Timeout() (int, error)

func (*CURLM) Wait

func (mcurl *CURLM) Wait(extraFds unsafe.Pointer, extraNumFds int, timeoutMs int, numFdsReady *C.int) error

Wait calls curl_multi_wait. For simplicity, extraFds (should be *C.struct_curl_waitfd) and extraNumFds are currently not used from Go, pass nil and 0. numFdsReady must be a pointer to C.int, and will be populated with the number of file descriptors with activity.

type CURLMessage

type CURLMessage struct {
	Msg         CurlMultiMsgTag
	Easy_handle *CURL
	DoneResult  Code
	PointerVal  unsafe.Pointer
}

type CURLSH

type CURLSH struct {
	// contains filtered or unexported fields
}

func ShareInit

func ShareInit() *CURLSH

func (*CURLSH) Cleanup

func (shcurl *CURLSH) Cleanup() error

func (*CURLSH) Setopt

func (shcurl *CURLSH) Setopt(opt int, param any) error

type Code

type Code uint32

func CurlMsgGetResult

func CurlMsgGetResult(cm CurlMsg) Code

type CurlCode

type CurlCode uint32

func CurlEasyGetinfoDouble

func CurlEasyGetinfoDouble(handle unsafe.Pointer, info uint32, p unsafe.Pointer) CurlCode

func CurlEasyGetinfoLong

func CurlEasyGetinfoLong(handle unsafe.Pointer, info uint32, p unsafe.Pointer) CurlCode

func CurlEasyGetinfoSlist

func CurlEasyGetinfoSlist(handle unsafe.Pointer, info uint32, p unsafe.Pointer) CurlCode

func CurlEasyGetinfoString

func CurlEasyGetinfoString(handle unsafe.Pointer, info uint32, p unsafe.Pointer) CurlCode

func CurlEasyImpersonate

func CurlEasyImpersonate(handle unsafe.Pointer, target unsafe.Pointer, defaultHeaders int) CurlCode

func CurlEasyPause

func CurlEasyPause(handle unsafe.Pointer, bitmask int) CurlCode

func CurlEasyPerform

func CurlEasyPerform(handle unsafe.Pointer) CurlCode

func CurlEasyRecv

func CurlEasyRecv(handle unsafe.Pointer, buf unsafe.Pointer, buflen int, n unsafe.Pointer) CurlCode

func CurlEasySend

func CurlEasySend(handle unsafe.Pointer, buf unsafe.Pointer, buflen int, n unsafe.Pointer) CurlCode

func CurlEasySetoptFunction

func CurlEasySetoptFunction(handle unsafe.Pointer, opt int, funcPtr unsafe.Pointer) CurlCode

func CurlEasySetoptLong

func CurlEasySetoptLong(handle unsafe.Pointer, opt int, val int64) CurlCode

func CurlEasySetoptOffT

func CurlEasySetoptOffT(handle unsafe.Pointer, opt int, val int64) CurlCode

func CurlEasySetoptPointer

func CurlEasySetoptPointer(handle unsafe.Pointer, opt int, val unsafe.Pointer) CurlCode

func CurlEasySetoptSlist

func CurlEasySetoptSlist(handle unsafe.Pointer, opt int, val CurlSlist) CurlCode

func CurlEasySetoptString

func CurlEasySetoptString(handle unsafe.Pointer, opt int, val unsafe.Pointer) CurlCode

func CurlGlobalInit

func CurlGlobalInit(flags int64) CurlCode

type CurlError

type CurlError uint32

func (CurlError) Error

func (e CurlError) Error() string

type CurlHttpFormPost

type CurlHttpFormPost unsafe.Pointer

type CurlInfo

type CurlInfo uint32

type CurlMsg

type CurlMsg unsafe.Pointer

func CurlMultiInfoRead

func CurlMultiInfoRead(mhandle MultiHandle, msgsInQueue unsafe.Pointer) CurlMsg

type CurlMultiMsgTag

type CurlMultiMsgTag uint32

func CurlMsgGetMsg

func CurlMsgGetMsg(cm CurlMsg) CurlMultiMsgTag

func GetCurlmsgDone

func GetCurlmsgDone() CurlMultiMsgTag

func (CurlMultiMsgTag) String

func (t CurlMultiMsgTag) String() string

Add String method for CurlMultiMsgTag for better logging

type CurlSlist

type CurlSlist unsafe.Pointer

func CurlSlistAppend

func CurlSlistAppend(slist CurlSlist, str unsafe.Pointer) CurlSlist

type CurlVersion

type CurlVersion uint32

type CurlVersionInfoDataLayout

type CurlVersionInfoDataLayout struct {
	Age           uint32
	Version       uintptr
	VersionNum    uint32
	Host          uintptr
	Features      int32
	SslVersion    uintptr
	SslVersionNum int32
	LibzVersion   uintptr
	Protocols     uintptr

	Ares    uintptr
	AresNum int32

	Libidn uintptr

	IconvVerNum int32

	LibsshVersion uintptr

	BrotliVersionNum uint32
	BrotliVersion    uintptr

	Nghttp2VersionNum uint32
	Nghttp2Version    uintptr

	QuicVersion uintptr

	CAInfo uintptr
	CAPath uintptr

	ZstdVersionNum uint32
	ZstdVersion    uintptr

	HyperVersion uintptr

	GsKitVersion uintptr

	MesalinkVersion uintptr
}

type EasyOpt

type EasyOpt int

EasyOpt is the type for easy.Setopt(flag, ...) option constants.

const (
	OPT_ABSTRACT_UNIX_SOCKET       EasyOpt = C.CURLOPT_ABSTRACT_UNIX_SOCKET
	OPT_ACCEPTTIMEOUT_MS           EasyOpt = C.CURLOPT_ACCEPTTIMEOUT_MS
	OPT_ACCEPT_ENCODING            EasyOpt = C.CURLOPT_ACCEPT_ENCODING
	OPT_ADDRESS_SCOPE              EasyOpt = C.CURLOPT_ADDRESS_SCOPE
	OPT_ALTSVC                     EasyOpt = C.CURLOPT_ALTSVC
	OPT_ALTSVC_CTRL                EasyOpt = C.CURLOPT_ALTSVC_CTRL
	OPT_APPEND                     EasyOpt = C.CURLOPT_APPEND
	OPT_AUTOREFERER                EasyOpt = C.CURLOPT_AUTOREFERER
	OPT_AWS_SIGV4                  EasyOpt = C.CURLOPT_AWS_SIGV4
	OPT_BUFFERSIZE                 EasyOpt = C.CURLOPT_BUFFERSIZE
	OPT_CAINFO                     EasyOpt = C.CURLOPT_CAINFO
	OPT_CAINFO_BLOB                EasyOpt = C.CURLOPT_CAINFO_BLOB
	OPT_CAPATH                     EasyOpt = C.CURLOPT_CAPATH
	OPT_CA_CACHE_TIMEOUT           EasyOpt = C.CURLOPT_CA_CACHE_TIMEOUT
	OPT_CERTINFO                   EasyOpt = C.CURLOPT_CERTINFO
	OPT_CHUNK_BGN_FUNCTION         EasyOpt = C.CURLOPT_CHUNK_BGN_FUNCTION
	OPT_CHUNK_DATA                 EasyOpt = C.CURLOPT_CHUNK_DATA
	OPT_CHUNK_END_FUNCTION         EasyOpt = C.CURLOPT_CHUNK_END_FUNCTION
	OPT_CLOSEPOLICY                EasyOpt = C.CURLOPT_CLOSEPOLICY
	OPT_CLOSESOCKETDATA            EasyOpt = C.CURLOPT_CLOSESOCKETDATA
	OPT_CLOSESOCKETFUNCTION        EasyOpt = C.CURLOPT_CLOSESOCKETFUNCTION
	OPT_CONNECTTIMEOUT             EasyOpt = C.CURLOPT_CONNECTTIMEOUT
	OPT_CONNECTTIMEOUT_MS          EasyOpt = C.CURLOPT_CONNECTTIMEOUT_MS
	OPT_CONNECT_ONLY               EasyOpt = C.CURLOPT_CONNECT_ONLY
	OPT_CONNECT_TO                 EasyOpt = C.CURLOPT_CONNECT_TO
	OPT_COOKIE                     EasyOpt = C.CURLOPT_COOKIE
	OPT_COOKIEFILE                 EasyOpt = C.CURLOPT_COOKIEFILE
	OPT_COOKIEJAR                  EasyOpt = C.CURLOPT_COOKIEJAR
	OPT_COOKIELIST                 EasyOpt = C.CURLOPT_COOKIELIST
	OPT_COOKIESESSION              EasyOpt = C.CURLOPT_COOKIESESSION
	OPT_COPYPOSTFIELDS             EasyOpt = C.CURLOPT_COPYPOSTFIELDS
	OPT_CRLF                       EasyOpt = C.CURLOPT_CRLF
	OPT_CRLFILE                    EasyOpt = C.CURLOPT_CRLFILE
	OPT_CURLU                      EasyOpt = C.CURLOPT_CURLU
	OPT_CUSTOMREQUEST              EasyOpt = C.CURLOPT_CUSTOMREQUEST
	OPT_DEBUGDATA                  EasyOpt = C.CURLOPT_DEBUGDATA
	OPT_DEBUGFUNCTION              EasyOpt = C.CURLOPT_DEBUGFUNCTION
	OPT_DEFAULT_PROTOCOL           EasyOpt = C.CURLOPT_DEFAULT_PROTOCOL
	OPT_DIRLISTONLY                EasyOpt = C.CURLOPT_DIRLISTONLY
	OPT_DISALLOW_USERNAME_IN_URL   EasyOpt = C.CURLOPT_DISALLOW_USERNAME_IN_URL
	OPT_DNS_CACHE_TIMEOUT          EasyOpt = C.CURLOPT_DNS_CACHE_TIMEOUT
	OPT_DNS_INTERFACE              EasyOpt = C.CURLOPT_DNS_INTERFACE
	OPT_DNS_LOCAL_IP4              EasyOpt = C.CURLOPT_DNS_LOCAL_IP4
	OPT_DNS_LOCAL_IP6              EasyOpt = C.CURLOPT_DNS_LOCAL_IP6
	OPT_DNS_SERVERS                EasyOpt = C.CURLOPT_DNS_SERVERS
	OPT_DNS_SHUFFLE_ADDRESSES      EasyOpt = C.CURLOPT_DNS_SHUFFLE_ADDRESSES
	OPT_DOH_SSL_VERIFYHOST         EasyOpt = C.CURLOPT_DOH_SSL_VERIFYHOST
	OPT_DOH_SSL_VERIFYPEER         EasyOpt = C.CURLOPT_DOH_SSL_VERIFYPEER
	OPT_DOH_SSL_VERIFYSTATUS       EasyOpt = C.CURLOPT_DOH_SSL_VERIFYSTATUS
	OPT_DOH_URL                    EasyOpt = C.CURLOPT_DOH_URL
	OPT_ENCODING                   EasyOpt = C.CURLOPT_ENCODING
	OPT_ERRORBUFFER                EasyOpt = C.CURLOPT_ERRORBUFFER
	OPT_EXPECT_100_TIMEOUT_MS      EasyOpt = C.CURLOPT_EXPECT_100_TIMEOUT_MS
	OPT_FAILONERROR                EasyOpt = C.CURLOPT_FAILONERROR
	OPT_FILE                       EasyOpt = C.CURLOPT_FILE
	OPT_FILETIME                   EasyOpt = C.CURLOPT_FILETIME
	OPT_FNMATCH_DATA               EasyOpt = C.CURLOPT_FNMATCH_DATA
	OPT_FNMATCH_FUNCTION           EasyOpt = C.CURLOPT_FNMATCH_FUNCTION
	OPT_FOLLOWLOCATION             EasyOpt = C.CURLOPT_FOLLOWLOCATION
	OPT_FORBID_REUSE               EasyOpt = C.CURLOPT_FORBID_REUSE
	OPT_FRESH_CONNECT              EasyOpt = C.CURLOPT_FRESH_CONNECT
	OPT_FTPAPPEND                  EasyOpt = C.CURLOPT_FTPAPPEND
	OPT_FTPLISTONLY                EasyOpt = C.CURLOPT_FTPLISTONLY
	OPT_FTPPORT                    EasyOpt = C.CURLOPT_FTPPORT
	OPT_FTPSSLAUTH                 EasyOpt = C.CURLOPT_FTPSSLAUTH
	OPT_FTP_ACCOUNT                EasyOpt = C.CURLOPT_FTP_ACCOUNT
	OPT_FTP_ALTERNATIVE_TO_USER    EasyOpt = C.CURLOPT_FTP_ALTERNATIVE_TO_USER
	OPT_FTP_CREATE_MISSING_DIRS    EasyOpt = C.CURLOPT_FTP_CREATE_MISSING_DIRS
	OPT_FTP_FILEMETHOD             EasyOpt = C.CURLOPT_FTP_FILEMETHOD
	OPT_FTP_RESPONSE_TIMEOUT       EasyOpt = C.CURLOPT_FTP_RESPONSE_TIMEOUT
	OPT_FTP_SKIP_PASV_IP           EasyOpt = C.CURLOPT_FTP_SKIP_PASV_IP
	OPT_FTP_SSL                    EasyOpt = C.CURLOPT_FTP_SSL
	OPT_FTP_SSL_CCC                EasyOpt = C.CURLOPT_FTP_SSL_CCC
	OPT_FTP_USE_EPRT               EasyOpt = C.CURLOPT_FTP_USE_EPRT
	OPT_FTP_USE_EPSV               EasyOpt = C.CURLOPT_FTP_USE_EPSV
	OPT_FTP_USE_PRET               EasyOpt = C.CURLOPT_FTP_USE_PRET
	OPT_GSSAPI_DELEGATION          EasyOpt = C.CURLOPT_GSSAPI_DELEGATION
	OPT_HAPPY_EYEBALLS_TIMEOUT_MS  EasyOpt = C.CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS
	OPT_HAPROXYPROTOCOL            EasyOpt = C.CURLOPT_HAPROXYPROTOCOL
	OPT_HAPROXY_CLIENT_IP          EasyOpt = C.CURLOPT_HAPROXY_CLIENT_IP
	OPT_HEADER                     EasyOpt = C.CURLOPT_HEADER
	OPT_HEADERDATA                 EasyOpt = C.CURLOPT_HEADERDATA
	OPT_HEADERFUNCTION             EasyOpt = C.CURLOPT_HEADERFUNCTION
	OPT_HEADEROPT                  EasyOpt = C.CURLOPT_HEADEROPT
	OPT_HSTS                       EasyOpt = C.CURLOPT_HSTS
	OPT_HSTSREADDATA               EasyOpt = C.CURLOPT_HSTSREADDATA
	OPT_HSTSREADFUNCTION           EasyOpt = C.CURLOPT_HSTSREADFUNCTION
	OPT_HSTSWRITEDATA              EasyOpt = C.CURLOPT_HSTSWRITEDATA
	OPT_HSTSWRITEFUNCTION          EasyOpt = C.CURLOPT_HSTSWRITEFUNCTION
	OPT_HSTS_CTRL                  EasyOpt = C.CURLOPT_HSTS_CTRL
	OPT_HTTP09_ALLOWED             EasyOpt = C.CURLOPT_HTTP09_ALLOWED
	OPT_HTTP200ALIASES             EasyOpt = C.CURLOPT_HTTP200ALIASES
	OPT_HTTPAUTH                   EasyOpt = C.CURLOPT_HTTPAUTH
	OPT_HTTPGET                    EasyOpt = C.CURLOPT_HTTPGET
	OPT_HTTPHEADER                 EasyOpt = C.CURLOPT_HTTPHEADER
	OPT_HTTPPROXYTUNNEL            EasyOpt = C.CURLOPT_HTTPPROXYTUNNEL
	OPT_HTTP_CONTENT_DECODING      EasyOpt = C.CURLOPT_HTTP_CONTENT_DECODING
	OPT_HTTP_TRANSFER_DECODING     EasyOpt = C.CURLOPT_HTTP_TRANSFER_DECODING
	OPT_HTTP_VERSION               EasyOpt = C.CURLOPT_HTTP_VERSION
	OPT_IGNORE_CONTENT_LENGTH      EasyOpt = C.CURLOPT_IGNORE_CONTENT_LENGTH
	OPT_INFILE                     EasyOpt = C.CURLOPT_INFILE
	OPT_INFILESIZE                 EasyOpt = C.CURLOPT_INFILESIZE
	OPT_INFILESIZE_LARGE           EasyOpt = C.CURLOPT_INFILESIZE_LARGE
	OPT_INTERFACE                  EasyOpt = C.CURLOPT_INTERFACE
	OPT_INTERLEAVEDATA             EasyOpt = C.CURLOPT_INTERLEAVEDATA
	OPT_INTERLEAVEFUNCTION         EasyOpt = C.CURLOPT_INTERLEAVEFUNCTION
	OPT_IPRESOLVE                  EasyOpt = C.CURLOPT_IPRESOLVE
	OPT_ISSUERCERT                 EasyOpt = C.CURLOPT_ISSUERCERT
	OPT_ISSUERCERT_BLOB            EasyOpt = C.CURLOPT_ISSUERCERT_BLOB
	OPT_KEEP_SENDING_ON_ERROR      EasyOpt = C.CURLOPT_KEEP_SENDING_ON_ERROR
	OPT_KEYPASSWD                  EasyOpt = C.CURLOPT_KEYPASSWD
	OPT_KRB4LEVEL                  EasyOpt = C.CURLOPT_KRB4LEVEL
	OPT_KRBLEVEL                   EasyOpt = C.CURLOPT_KRBLEVEL
	OPT_LOCALPORT                  EasyOpt = C.CURLOPT_LOCALPORT
	OPT_LOCALPORTRANGE             EasyOpt = C.CURLOPT_LOCALPORTRANGE
	OPT_LOGIN_OPTIONS              EasyOpt = C.CURLOPT_LOGIN_OPTIONS
	OPT_LOW_SPEED_LIMIT            EasyOpt = C.CURLOPT_LOW_SPEED_LIMIT
	OPT_LOW_SPEED_TIME             EasyOpt = C.CURLOPT_LOW_SPEED_TIME
	OPT_MAIL_AUTH                  EasyOpt = C.CURLOPT_MAIL_AUTH
	OPT_MAIL_FROM                  EasyOpt = C.CURLOPT_MAIL_FROM
	OPT_MAIL_RCPT                  EasyOpt = C.CURLOPT_MAIL_RCPT
	OPT_MAIL_RCPT_ALLLOWFAILS      EasyOpt = C.CURLOPT_MAIL_RCPT_ALLLOWFAILS
	OPT_MAIL_RCPT_ALLOWFAILS       EasyOpt = C.CURLOPT_MAIL_RCPT_ALLOWFAILS
	OPT_MAXAGE_CONN                EasyOpt = C.CURLOPT_MAXAGE_CONN
	OPT_MAXCONNECTS                EasyOpt = C.CURLOPT_MAXCONNECTS
	OPT_MAXFILESIZE                EasyOpt = C.CURLOPT_MAXFILESIZE
	OPT_MAXFILESIZE_LARGE          EasyOpt = C.CURLOPT_MAXFILESIZE_LARGE
	OPT_MAXLIFETIME_CONN           EasyOpt = C.CURLOPT_MAXLIFETIME_CONN
	OPT_MAXREDIRS                  EasyOpt = C.CURLOPT_MAXREDIRS
	OPT_MAX_RECV_SPEED_LARGE       EasyOpt = C.CURLOPT_MAX_RECV_SPEED_LARGE
	OPT_MAX_SEND_SPEED_LARGE       EasyOpt = C.CURLOPT_MAX_SEND_SPEED_LARGE
	OPT_MIMEPOST                   EasyOpt = C.CURLOPT_MIMEPOST
	OPT_MIME_OPTIONS               EasyOpt = C.CURLOPT_MIME_OPTIONS
	OPT_NETRC                      EasyOpt = C.CURLOPT_NETRC
	OPT_NETRC_FILE                 EasyOpt = C.CURLOPT_NETRC_FILE
	OPT_NEW_DIRECTORY_PERMS        EasyOpt = C.CURLOPT_NEW_DIRECTORY_PERMS
	OPT_NEW_FILE_PERMS             EasyOpt = C.CURLOPT_NEW_FILE_PERMS
	OPT_NOBODY                     EasyOpt = C.CURLOPT_NOBODY
	OPT_NOPROGRESS                 EasyOpt = C.CURLOPT_NOPROGRESS
	OPT_NOPROXY                    EasyOpt = C.CURLOPT_NOPROXY
	OPT_NOSIGNAL                   EasyOpt = C.CURLOPT_NOSIGNAL
	OPT_OBSOLETE40                 EasyOpt = C.CURLOPT_OBSOLETE40
	OPT_OBSOLETE72                 EasyOpt = C.CURLOPT_OBSOLETE72
	OPT_OPENSOCKETDATA             EasyOpt = C.CURLOPT_OPENSOCKETDATA
	OPT_OPENSOCKETFUNCTION         EasyOpt = C.CURLOPT_OPENSOCKETFUNCTION
	OPT_PASSWORD                   EasyOpt = C.CURLOPT_PASSWORD
	OPT_PATH_AS_IS                 EasyOpt = C.CURLOPT_PATH_AS_IS
	OPT_PINNEDPUBLICKEY            EasyOpt = C.CURLOPT_PINNEDPUBLICKEY
	OPT_PIPEWAIT                   EasyOpt = C.CURLOPT_PIPEWAIT
	OPT_PORT                       EasyOpt = C.CURLOPT_PORT
	OPT_POST                       EasyOpt = C.CURLOPT_POST
	OPT_POST301                    EasyOpt = C.CURLOPT_POST301
	OPT_POSTFIELDS                 EasyOpt = C.CURLOPT_POSTFIELDS
	OPT_POSTFIELDSIZE              EasyOpt = C.CURLOPT_POSTFIELDSIZE
	OPT_POSTFIELDSIZE_LARGE        EasyOpt = C.CURLOPT_POSTFIELDSIZE_LARGE
	OPT_POSTQUOTE                  EasyOpt = C.CURLOPT_POSTQUOTE
	OPT_POSTREDIR                  EasyOpt = C.CURLOPT_POSTREDIR
	OPT_PREQUOTE                   EasyOpt = C.CURLOPT_PREQUOTE
	OPT_PREREQDATA                 EasyOpt = C.CURLOPT_PREREQDATA
	OPT_PREREQFUNCTION             EasyOpt = C.CURLOPT_PREREQFUNCTION
	OPT_PRE_PROXY                  EasyOpt = C.CURLOPT_PRE_PROXY
	OPT_PRIVATE                    EasyOpt = C.CURLOPT_PRIVATE
	OPT_PROGRESSDATA               EasyOpt = C.CURLOPT_PROGRESSDATA
	OPT_PROTOCOLS_STR              EasyOpt = C.CURLOPT_PROTOCOLS_STR
	OPT_PROXY                      EasyOpt = C.CURLOPT_PROXY
	OPT_PROXYAUTH                  EasyOpt = C.CURLOPT_PROXYAUTH
	OPT_PROXYHEADER                EasyOpt = C.CURLOPT_PROXYHEADER
	OPT_PROXYPASSWORD              EasyOpt = C.CURLOPT_PROXYPASSWORD
	OPT_PROXYPORT                  EasyOpt = C.CURLOPT_PROXYPORT
	OPT_PROXYTYPE                  EasyOpt = C.CURLOPT_PROXYTYPE
	OPT_PROXYUSERNAME              EasyOpt = C.CURLOPT_PROXYUSERNAME
	OPT_PROXYUSERPWD               EasyOpt = C.CURLOPT_PROXYUSERPWD
	OPT_PROXY_CAINFO               EasyOpt = C.CURLOPT_PROXY_CAINFO
	OPT_PROXY_CAINFO_BLOB          EasyOpt = C.CURLOPT_PROXY_CAINFO_BLOB
	OPT_PROXY_CAPATH               EasyOpt = C.CURLOPT_PROXY_CAPATH
	OPT_PROXY_CRLFILE              EasyOpt = C.CURLOPT_PROXY_CRLFILE
	OPT_PROXY_ISSUERCERT           EasyOpt = C.CURLOPT_PROXY_ISSUERCERT
	OPT_PROXY_ISSUERCERT_BLOB      EasyOpt = C.CURLOPT_PROXY_ISSUERCERT_BLOB
	OPT_PROXY_KEYPASSWD            EasyOpt = C.CURLOPT_PROXY_KEYPASSWD
	OPT_PROXY_PINNEDPUBLICKEY      EasyOpt = C.CURLOPT_PROXY_PINNEDPUBLICKEY
	OPT_PROXY_SERVICE_NAME         EasyOpt = C.CURLOPT_PROXY_SERVICE_NAME
	OPT_PROXY_SSLCERT              EasyOpt = C.CURLOPT_PROXY_SSLCERT
	OPT_PROXY_SSLCERTTYPE          EasyOpt = C.CURLOPT_PROXY_SSLCERTTYPE
	OPT_PROXY_SSLCERT_BLOB         EasyOpt = C.CURLOPT_PROXY_SSLCERT_BLOB
	OPT_PROXY_SSLKEY               EasyOpt = C.CURLOPT_PROXY_SSLKEY
	OPT_PROXY_SSLKEYTYPE           EasyOpt = C.CURLOPT_PROXY_SSLKEYTYPE
	OPT_PROXY_SSLKEY_BLOB          EasyOpt = C.CURLOPT_PROXY_SSLKEY_BLOB
	OPT_PROXY_SSLVERSION           EasyOpt = C.CURLOPT_PROXY_SSLVERSION
	OPT_PROXY_SSL_CIPHER_LIST      EasyOpt = C.CURLOPT_PROXY_SSL_CIPHER_LIST
	OPT_PROXY_SSL_OPTIONS          EasyOpt = C.CURLOPT_PROXY_SSL_OPTIONS
	OPT_PROXY_SSL_VERIFYHOST       EasyOpt = C.CURLOPT_PROXY_SSL_VERIFYHOST
	OPT_PROXY_SSL_VERIFYPEER       EasyOpt = C.CURLOPT_PROXY_SSL_VERIFYPEER
	OPT_PROXY_TLS13_CIPHERS        EasyOpt = C.CURLOPT_PROXY_TLS13_CIPHERS
	OPT_PROXY_TLSAUTH_PASSWORD     EasyOpt = C.CURLOPT_PROXY_TLSAUTH_PASSWORD
	OPT_PROXY_TLSAUTH_TYPE         EasyOpt = C.CURLOPT_PROXY_TLSAUTH_TYPE
	OPT_PROXY_TLSAUTH_USERNAME     EasyOpt = C.CURLOPT_PROXY_TLSAUTH_USERNAME
	OPT_PROXY_TRANSFER_MODE        EasyOpt = C.CURLOPT_PROXY_TRANSFER_MODE
	OPT_QUICK_EXIT                 EasyOpt = C.CURLOPT_QUICK_EXIT
	OPT_QUOTE                      EasyOpt = C.CURLOPT_QUOTE
	OPT_RANGE                      EasyOpt = C.CURLOPT_RANGE
	OPT_READDATA                   EasyOpt = C.CURLOPT_READDATA
	OPT_READFUNCTION               EasyOpt = C.CURLOPT_READFUNCTION
	OPT_REDIR_PROTOCOLS_STR        EasyOpt = C.CURLOPT_REDIR_PROTOCOLS_STR
	OPT_REFERER                    EasyOpt = C.CURLOPT_REFERER
	OPT_REQUEST_TARGET             EasyOpt = C.CURLOPT_REQUEST_TARGET
	OPT_RESOLVE                    EasyOpt = C.CURLOPT_RESOLVE
	OPT_RESOLVER_START_DATA        EasyOpt = C.CURLOPT_RESOLVER_START_DATA
	OPT_RESOLVER_START_FUNCTION    EasyOpt = C.CURLOPT_RESOLVER_START_FUNCTION
	OPT_RESUME_FROM                EasyOpt = C.CURLOPT_RESUME_FROM
	OPT_RESUME_FROM_LARGE          EasyOpt = C.CURLOPT_RESUME_FROM_LARGE
	OPT_RTSPHEADER                 EasyOpt = C.CURLOPT_RTSPHEADER
	OPT_RTSP_CLIENT_CSEQ           EasyOpt = C.CURLOPT_RTSP_CLIENT_CSEQ
	OPT_RTSP_REQUEST               EasyOpt = C.CURLOPT_RTSP_REQUEST
	OPT_RTSP_SERVER_CSEQ           EasyOpt = C.CURLOPT_RTSP_SERVER_CSEQ
	OPT_RTSP_SESSION_ID            EasyOpt = C.CURLOPT_RTSP_SESSION_ID
	OPT_RTSP_STREAM_URI            EasyOpt = C.CURLOPT_RTSP_STREAM_URI
	OPT_RTSP_TRANSPORT             EasyOpt = C.CURLOPT_RTSP_TRANSPORT
	OPT_SASL_AUTHZID               EasyOpt = C.CURLOPT_SASL_AUTHZID
	OPT_SASL_IR                    EasyOpt = C.CURLOPT_SASL_IR
	OPT_SEEKDATA                   EasyOpt = C.CURLOPT_SEEKDATA
	OPT_SEEKFUNCTION               EasyOpt = C.CURLOPT_SEEKFUNCTION
	OPT_SERVER_RESPONSE_TIMEOUT    EasyOpt = C.CURLOPT_SERVER_RESPONSE_TIMEOUT
	OPT_SERVER_RESPONSE_TIMEOUT_MS EasyOpt = C.CURLOPT_SERVER_RESPONSE_TIMEOUT_MS
	OPT_SERVICE_NAME               EasyOpt = C.CURLOPT_SERVICE_NAME
	OPT_SHARE                      EasyOpt = C.CURLOPT_SHARE
	OPT_SOCKOPTDATA                EasyOpt = C.CURLOPT_SOCKOPTDATA
	OPT_SOCKOPTFUNCTION            EasyOpt = C.CURLOPT_SOCKOPTFUNCTION
	OPT_SOCKS5_AUTH                EasyOpt = C.CURLOPT_SOCKS5_AUTH
	OPT_SOCKS5_GSSAPI_NEC          EasyOpt = C.CURLOPT_SOCKS5_GSSAPI_NEC
	OPT_SSH_AUTH_TYPES             EasyOpt = C.CURLOPT_SSH_AUTH_TYPES
	OPT_SSH_COMPRESSION            EasyOpt = C.CURLOPT_SSH_COMPRESSION
	OPT_SSH_HOSTKEYDATA            EasyOpt = C.CURLOPT_SSH_HOSTKEYDATA
	OPT_SSH_HOSTKEYFUNCTION        EasyOpt = C.CURLOPT_SSH_HOSTKEYFUNCTION
	OPT_SSH_HOST_PUBLIC_KEY_MD5    EasyOpt = C.CURLOPT_SSH_HOST_PUBLIC_KEY_MD5
	OPT_SSH_HOST_PUBLIC_KEY_SHA256 EasyOpt = C.CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256
	OPT_SSH_KEYDATA                EasyOpt = C.CURLOPT_SSH_KEYDATA
	OPT_SSH_KEYFUNCTION            EasyOpt = C.CURLOPT_SSH_KEYFUNCTION
	OPT_SSH_KNOWNHOSTS             EasyOpt = C.CURLOPT_SSH_KNOWNHOSTS
	OPT_SSH_PRIVATE_KEYFILE        EasyOpt = C.CURLOPT_SSH_PRIVATE_KEYFILE
	OPT_SSH_PUBLIC_KEYFILE         EasyOpt = C.CURLOPT_SSH_PUBLIC_KEYFILE
	OPT_SSLCERT                    EasyOpt = C.CURLOPT_SSLCERT
	OPT_SSLCERTPASSWD              EasyOpt = C.CURLOPT_SSLCERTPASSWD
	OPT_SSLCERTTYPE                EasyOpt = C.CURLOPT_SSLCERTTYPE
	OPT_SSLCERT_BLOB               EasyOpt = C.CURLOPT_SSLCERT_BLOB
	OPT_SSLENGINE                  EasyOpt = C.CURLOPT_SSLENGINE
	OPT_SSLENGINE_DEFAULT          EasyOpt = C.CURLOPT_SSLENGINE_DEFAULT
	OPT_SSLKEY                     EasyOpt = C.CURLOPT_SSLKEY
	OPT_SSLKEYPASSWD               EasyOpt = C.CURLOPT_SSLKEYPASSWD
	OPT_SSLKEYTYPE                 EasyOpt = C.CURLOPT_SSLKEYTYPE
	OPT_SSLKEY_BLOB                EasyOpt = C.CURLOPT_SSLKEY_BLOB
	OPT_SSLVERSION                 EasyOpt = C.CURLOPT_SSLVERSION
	OPT_SSL_CIPHER_LIST            EasyOpt = C.CURLOPT_SSL_CIPHER_LIST
	OPT_SSL_CTX_DATA               EasyOpt = C.CURLOPT_SSL_CTX_DATA
	OPT_SSL_CTX_FUNCTION           EasyOpt = C.CURLOPT_SSL_CTX_FUNCTION
	OPT_SSL_EC_CURVES              EasyOpt = C.CURLOPT_SSL_EC_CURVES
	OPT_SSL_ENABLE_ALPN            EasyOpt = C.CURLOPT_SSL_ENABLE_ALPN
	OPT_SSL_FALSESTART             EasyOpt = C.CURLOPT_SSL_FALSESTART
	OPT_SSL_OPTIONS                EasyOpt = C.CURLOPT_SSL_OPTIONS
	OPT_SSL_SESSIONID_CACHE        EasyOpt = C.CURLOPT_SSL_SESSIONID_CACHE
	OPT_SSL_VERIFYHOST             EasyOpt = C.CURLOPT_SSL_VERIFYHOST
	OPT_SSL_VERIFYPEER             EasyOpt = C.CURLOPT_SSL_VERIFYPEER
	OPT_SSL_VERIFYSTATUS           EasyOpt = C.CURLOPT_SSL_VERIFYSTATUS
	OPT_STDERR                     EasyOpt = C.CURLOPT_STDERR
	OPT_STREAM_DEPENDS             EasyOpt = C.CURLOPT_STREAM_DEPENDS
	OPT_STREAM_DEPENDS_E           EasyOpt = C.CURLOPT_STREAM_DEPENDS_E
	OPT_STREAM_WEIGHT              EasyOpt = C.CURLOPT_STREAM_WEIGHT
	OPT_SUPPRESS_CONNECT_HEADERS   EasyOpt = C.CURLOPT_SUPPRESS_CONNECT_HEADERS
	OPT_TCP_FASTOPEN               EasyOpt = C.CURLOPT_TCP_FASTOPEN
	OPT_TCP_KEEPALIVE              EasyOpt = C.CURLOPT_TCP_KEEPALIVE
	OPT_TCP_KEEPIDLE               EasyOpt = C.CURLOPT_TCP_KEEPIDLE
	OPT_TCP_KEEPINTVL              EasyOpt = C.CURLOPT_TCP_KEEPINTVL
	OPT_TCP_NODELAY                EasyOpt = C.CURLOPT_TCP_NODELAY
	OPT_TELNETOPTIONS              EasyOpt = C.CURLOPT_TELNETOPTIONS
	OPT_TFTP_BLKSIZE               EasyOpt = C.CURLOPT_TFTP_BLKSIZE
	OPT_TFTP_NO_OPTIONS            EasyOpt = C.CURLOPT_TFTP_NO_OPTIONS
	OPT_TIMECONDITION              EasyOpt = C.CURLOPT_TIMECONDITION
	OPT_TIMEOUT                    EasyOpt = C.CURLOPT_TIMEOUT
	OPT_TIMEOUT_MS                 EasyOpt = C.CURLOPT_TIMEOUT_MS
	OPT_TIMEVALUE                  EasyOpt = C.CURLOPT_TIMEVALUE
	OPT_TIMEVALUE_LARGE            EasyOpt = C.CURLOPT_TIMEVALUE_LARGE
	OPT_TLS13_CIPHERS              EasyOpt = C.CURLOPT_TLS13_CIPHERS
	OPT_TLSAUTH_PASSWORD           EasyOpt = C.CURLOPT_TLSAUTH_PASSWORD
	OPT_TLSAUTH_TYPE               EasyOpt = C.CURLOPT_TLSAUTH_TYPE
	OPT_TLSAUTH_USERNAME           EasyOpt = C.CURLOPT_TLSAUTH_USERNAME
	OPT_TRAILERDATA                EasyOpt = C.CURLOPT_TRAILERDATA
	OPT_TRAILERFUNCTION            EasyOpt = C.CURLOPT_TRAILERFUNCTION
	OPT_TRANSFERTEXT               EasyOpt = C.CURLOPT_TRANSFERTEXT
	OPT_TRANSFER_ENCODING          EasyOpt = C.CURLOPT_TRANSFER_ENCODING
	OPT_UNIX_SOCKET_PATH           EasyOpt = C.CURLOPT_UNIX_SOCKET_PATH
	OPT_UNRESTRICTED_AUTH          EasyOpt = C.CURLOPT_UNRESTRICTED_AUTH
	OPT_UPKEEP_INTERVAL_MS         EasyOpt = C.CURLOPT_UPKEEP_INTERVAL_MS
	OPT_UPLOAD                     EasyOpt = C.CURLOPT_UPLOAD
	OPT_UPLOAD_BUFFERSIZE          EasyOpt = C.CURLOPT_UPLOAD_BUFFERSIZE
	OPT_URL                        EasyOpt = C.CURLOPT_URL
	OPT_USERAGENT                  EasyOpt = C.CURLOPT_USERAGENT
	OPT_USERNAME                   EasyOpt = C.CURLOPT_USERNAME
	OPT_USERPWD                    EasyOpt = C.CURLOPT_USERPWD
	OPT_USE_SSL                    EasyOpt = C.CURLOPT_USE_SSL
	OPT_VERBOSE                    EasyOpt = C.CURLOPT_VERBOSE
	OPT_WILDCARDMATCH              EasyOpt = C.CURLOPT_WILDCARDMATCH
	OPT_WRITEDATA                  EasyOpt = C.CURLOPT_WRITEDATA
	OPT_WRITEFUNCTION              EasyOpt = C.CURLOPT_WRITEFUNCTION
	OPT_WRITEHEADER                EasyOpt = C.CURLOPT_WRITEHEADER
	OPT_WRITEINFO                  EasyOpt = C.CURLOPT_WRITEINFO
	OPT_WS_OPTIONS                 EasyOpt = C.CURLOPT_WS_OPTIONS
	OPT_XFERINFODATA               EasyOpt = C.CURLOPT_XFERINFODATA
	OPT_XFERINFOFUNCTION           EasyOpt = C.CURLOPT_XFERINFOFUNCTION
	OPT_XOAUTH2_BEARER             EasyOpt = C.CURLOPT_XOAUTH2_BEARER
)

EasyOpt constants

type FdSetPlaceholder

type FdSetPlaceholder unsafe.Pointer

type Form

type Form struct {
	// contains filtered or unexported fields
}

A multipart/formdata HTTP POST form

func NewForm

func NewForm() *Form

func (*Form) Add

func (form *Form) Add(name string, content any) error

func (*Form) AddFile

func (form *Form) AddFile(name, filename string) error

func (*Form) AddWithType

func (form *Form) AddWithType(name string, content any, contentType string) error

func (*Form) Free

func (form *Form) Free()

type Info

type Info int

Info is the type for easy.Getinfo(flag) option constants.

const (
	INFO_CERTINFO     Info = C.CURLINFO_CERTINFO
	INFO_DATA_IN      Info = C.CURLINFO_DATA_IN
	INFO_DATA_OUT     Info = C.CURLINFO_DATA_OUT
	INFO_DOUBLE       Info = C.CURLINFO_DOUBLE
	INFO_END          Info = C.CURLINFO_END
	INFO_HEADER_IN    Info = C.CURLINFO_HEADER_IN
	INFO_HEADER_OUT   Info = C.CURLINFO_HEADER_OUT
	INFO_HTTP_CODE    Info = C.CURLINFO_HTTP_CODE
	INFO_LONG         Info = C.CURLINFO_LONG
	INFO_MASK         Info = C.CURLINFO_MASK
	INFO_OFF_T        Info = C.CURLINFO_OFF_T
	INFO_PTR          Info = C.CURLINFO_PTR
	INFO_SLIST        Info = C.CURLINFO_SLIST
	INFO_SOCKET       Info = C.CURLINFO_SOCKET
	INFO_SSL_DATA_IN  Info = C.CURLINFO_SSL_DATA_IN
	INFO_SSL_DATA_OUT Info = C.CURLINFO_SSL_DATA_OUT
	INFO_STRING       Info = C.CURLINFO_STRING
	INFO_TEXT         Info = C.CURLINFO_TEXT
	INFO_TYPEMASK     Info = C.CURLINFO_TYPEMASK
)

Info constants

type MultiCode

type MultiCode uint32

func CurlMultiAddHandle

func CurlMultiAddHandle(mhandle MultiHandle, easyHandle unsafe.Pointer) MultiCode

func CurlMultiCleanup

func CurlMultiCleanup(mhandle MultiHandle) MultiCode

func CurlMultiFdset

func CurlMultiFdset(mhandle MultiHandle, readFdSet FdSetPlaceholder, writeFdSet FdSetPlaceholder, excFdSet FdSetPlaceholder, maxFd unsafe.Pointer) MultiCode

func CurlMultiPerform

func CurlMultiPerform(mhandle MultiHandle, runningHandles unsafe.Pointer) MultiCode

func CurlMultiRemoveHandle

func CurlMultiRemoveHandle(mhandle MultiHandle, easyHandle unsafe.Pointer) MultiCode

func CurlMultiSetoptLong

func CurlMultiSetoptLong(mhandle MultiHandle, option MultiOption, parameter int64) MultiCode

func CurlMultiSetoptPointer

func CurlMultiSetoptPointer(mhandle MultiHandle, option MultiOption, parameter unsafe.Pointer) MultiCode

func CurlMultiTimeout

func CurlMultiTimeout(mhandle MultiHandle, timeoutMs unsafe.Pointer) MultiCode

func CurlMultiWait

func CurlMultiWait(mhandle MultiHandle, extraFds unsafe.Pointer, numExtraFds int, timeoutMs int, numFdsReady unsafe.Pointer) MultiCode

func GetCurlmOk

func GetCurlmOk() MultiCode

func (MultiCode) Error

func (e MultiCode) Error() string

CurlMultiError Error method and newCurlMultiError remain the same

type MultiHandle

type MultiHandle unsafe.Pointer

func CurlMultiInit

func CurlMultiInit() MultiHandle

type MultiOption

type MultiOption uint32

type ShareCode

type ShareCode uint32

func CurlShareCleanup

func CurlShareCleanup(shandle ShareHandle) ShareCode

func CurlShareSetoptLong

func CurlShareSetoptLong(shandle ShareHandle, option ShareOption, parameter int64) ShareCode

func CurlShareSetoptPointer

func CurlShareSetoptPointer(shandle ShareHandle, option ShareOption, parameter unsafe.Pointer) ShareCode

func GetCurlshOk

func GetCurlshOk() ShareCode

func (ShareCode) Error

func (e ShareCode) Error() string

CurlShareError is now an alias for ShareCode (uint32) from others.go. The Error() method allows it to be used as an `error`.

type ShareHandle

type ShareHandle unsafe.Pointer

func CurlShareInit

func CurlShareInit() ShareHandle

type ShareOption

type ShareOption uint32

type TimeTPlaceholder

type TimeTPlaceholder int64

type VersionInfoData

type VersionInfoData struct {
	Age CurlVersion
	// age >= 0
	Version       string
	VersionNum    uint
	Host          string
	Features      int
	SslVersion    string
	SslVersionNum int
	LibzVersion   string
	Protocols     []string
	// age >= 1
	Ares    string
	AresNum int
	// age >= 2
	Libidn string
	// age >= 3
	IconvVerNum   int
	LibsshVersion string
	BrotliVerNum  uint32
	BrotliVersion string
}

func VersionInfo

func VersionInfo(ver CurlVersion) *VersionInfoData

curl_version_info - returns run-time libcurl version info

Directories

Path Synopsis
A sample program to show how to use PROGRESS callback to calculate downloading percentage and speed
A sample program to show how to use PROGRESS callback to calculate downloading percentage and speed

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL