f0.gg-kreedzsrv/amxmodx/scripting/include/curl.inc
2021-07-25 14:20:46 +02:00

204 lines
9.2 KiB
PHP

#if defined _curl_included
#endinput
#endif
#define _curl_included
#include <curl_consts>
#if AMXX_VERSION_NUM >= 175
#pragma reqlib curl
#if !defined AMXMODX_NOAUTOLOAD
#pragma loadlib curl
#endif
#else
#pragma library curl
#endif
enum _:curl_off_t {
curl_off_left,
curl_off_right
};
enum curl_slist
{
SList_Empty
};
/**
* This function converts the given input string to a URL encoded string.
* All input characters that are not a-z, A-Z, 0-9, '-', '.', '_' or '~' are converted to their "URL escaped" version
* (%NN where NN is a two-digit hexadecimal number).
* see also https://curl.haxx.se/libcurl/c/curl_easy_escape.html
*
* @param handle Curl handle
* @param url URL for encoding
* @param buffer Buffer to copy encoded url
* @param maxlen Maximum size of the buffer
*
* @noreturn
* @error If passed curl handle is not a valid
*/
native curl_easy_escape(const CURL:handle, const url[], buffer[], const maxlen);
/**
* This function converts the given URL encoded input string to a "plain string".
* All input characters that are URL encoded (%XX where XX is a two-digit hexadecimal number) are converted to their binary versions.
* see also https://curl.haxx.se/libcurl/c/curl_easy_unescape.html
*
* @param handle Curl handle
* @param url URL for decoding
* @param buffer Buffer to copy decoded url
* @param maxlen Maximum size of the buffer
*
* @noreturn
* @error If passed curl handle is not a valid
*/
native curl_easy_unescape(const CURL: handle, const url[], buffer[], const maxlen);
/**
* This function must be the first function to call, and it returns a CURL easy handle that you must
* use as input to other functions in the easy interface. This call MUST have a corresponding call to curl_easy_cleanup
* when the operation is complete.
* see also https://curl.haxx.se/libcurl/c/curl_easy_init.html
*
* @return Curl handle
*/
native CURL: curl_easy_init();
/**
* Invoke this function after curl_easy_init and all the curl_easy_setopt calls are made, and will perform the transfer as described in the options.
* It must be called with the same curl handle as input as the curl_easy_init call returned.
* You can do any amount of calls to curl_easy_perform while using the same curl handle. If you intend to transfer more than one file, you are even
* encouraged to do so. libcurl will then attempt to re-use the same connection for the following transfers, thus making the operations faster,
* less CPU intense and using less network resources. Just note that you will have to use curl_easy_setopt between the invokes to set options
* for the following curl_easy_perform.
* see also https://curl.haxx.se/libcurl/c/curl_easy_perform.html
*
* @param handle Curl handle
* @param callback The forward to call after request completed
* @param data Any data to pass to the callback forward
* @param len Maximum size of the data
*
* @noreturn
* @error If passed curl handle is not a valid or or undefined callback function
*/
native curl_easy_perform(const CURL: handle, const callback[], const data[] = {}, const len = 0);
/**
* This function is used to tell libcurl how to behave. By setting the appropriate options, the application can change libcurl's behavior.
* All options are set with an option followed by a parameter. That parameter can be a long, a function pointer, an object pointer or a curl_off_t,
* depending on what the specific option expects. Read this manual carefully as bad input values may cause libcurl to behave badly!
* You can only set one option in each function call. A typical application uses many curl_easy_setopt calls in the setup phase.
* Options set with this function call are valid for all forthcoming transfers performed using this handle. The options are not in any way reset between
* transfers, so if you want subsequent transfers with different options, you must change them between the transfers. You can optionally reset all options
* back to internal default with curl_easy_reset.
* see also https://curl.haxx.se/libcurl/c/curl_easy_setopt.html
*
* @param handle Curl handle
* @param option Necessary option (see CURLoption enum)
*
* @return If the operation was successful, CURLE_OK is returned. Otherwise an appropriate error code will be returned.
* @error If passed curl handle is not a valid or or undefined option
*/
native CURLcode: curl_easy_setopt(const CURL: handle, const CURLoption: option, any: ...);
/**
* This function must be the last function to call for an easy session. It is the opposite of the curl_easy_init function and must be called
* with the same handle as input that a curl_easy_init call returned.
* This might close all connections this handle has used and possibly has kept open until now - unless it was attached to a multi handle while
* doing the transfers. Don't call this function if you intend to transfer more files, re-using handles is a key to good performance with libcurl.
* see also https://curl.haxx.se/libcurl/c/curl_easy_cleanup.html
*
* @param handle Curl handle
*
* @noreturn
* @error If passed curl handle is not a valid
*/
native curl_easy_cleanup(const CURL: handle);
/**
* Re-initializes all options previously set on a specified CURL handle to the default values. This puts back the handle to the same state as it
* was in when it was just created with curl_easy_init.
* It does not change the following information kept in the handle: live connections, the Session ID cache, the DNS cache, the cookies and shares.
* see also https://curl.haxx.se/libcurl/c/curl_easy_reset.html
*
* @param handle Curl handle
*
* @noreturn
* @error If passed curl handle is not a valid
*/
native curl_easy_reset(const CURL: handle);
/**
* Request internal information from the curl session with this function. The third argument MUST be a buffer for value (num, string, float)
* The data pointed-to will be filled in accordingly and can be relied upon only if the function returns CURLE_OK. Use this function AFTER
* a performed transfer if you want to get transfer related data.
* see also https://curl.haxx.se/libcurl/c/curl_easy_getinfo.html
*
* @param handle Curl handle
* @param info Necessary info (see CURLINFO enum)
*
* @return If the operation was successful, CURLE_OK is returned. Otherwise an appropriate error code will be returned.
* @error If passed curl handle is not a valid or or undefined info
*/
native CURLcode: curl_easy_getinfo(const CURL: handle, const CURLINFO: info, any: ...);
/**
* The function receives a text description of the specified error code.
*
* @param code Error code (see CURLcode enum)
* @param buffer Buffer to copy error description
* @param maxlen Maximum size of the buffer
*
* @noreturn
*/
native curl_easy_strerror(const CURLcode: code, buffer[], const maxlen);
/**
* @deprecated This function does not catch all cases.
* #pragma deprecated This function is deprecated. Do not use!
*/
native CURLFORMcode: curl_formadd(&curl_httppost: first, &curl_httppost: last, any: ...);
/**
* @deprecated This function does not catch all cases.
* #pragma deprecated This function is deprecated. Do not use!
*/
native curl_formfree(&curl_httppost: first);
/**
* This function appends a string to a linked list of strings.
* The existing list should be passed as the first argument and the new list is returned from this function.
* Pass in SList_Empty (0) in the list argument to create a new list. The specified string has been appended when this function returns.
* see also https://curl.haxx.se/libcurl/c/curl_slist_append.html
*
* @param list Existing list
* @param string Some string
*
* @return A null pointer is returned if anything went wrong, otherwise the new list pointer is returned.
* To avoid overwriting an existing non-empty list on failure, the new list should be returned to a
* temporary variable which can be tested for SList_Empty (0) before updating the original list pointer
*/
native curl_slist: curl_slist_append(curl_slist: list, string[]);
/**
* This function removes all traces of a previously built curl_slist linked list.
* see also https://curl.haxx.se/libcurl/c/curl_slist_free_all.html
*
* @param list Existing list
*
* @noreturn
*/
native curl_slist_free_all(curl_slist: list);
/**
* Returns a human readable string with the version number of libcurl and some of its important components (like OpenSSL version).
* see also https://curl.haxx.se/libcurl/c/curl_version.html
*
* @param buffer Buffer to copy string with the version number
* @param maxlen Maximum size of the buffer
*
* @noreturn
*/
native curl_version(buffer[], const maxlen);