1196 lines
57 KiB
C++
1196 lines
57 KiB
C++
// CkRestW.h: interface for the CkRestW class.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
// This header is generated for Chilkat 11.3.0
|
|
|
|
#ifndef _CkRestW_H
|
|
#define _CkRestW_H
|
|
|
|
#include "chilkatDefs.h"
|
|
#include "CkString.h"
|
|
#include "CkClassWithCallbacksW.h"
|
|
|
|
class CkStringBuilderW;
|
|
class CkTaskW;
|
|
class CkBinDataW;
|
|
class CkByteData;
|
|
class CkStreamW;
|
|
class CkJsonObjectW;
|
|
class CkUrlW;
|
|
class CkAuthAwsW;
|
|
class CkAuthAzureSASW;
|
|
class CkAuthAzureStorageW;
|
|
class CkSecureStringW;
|
|
class CkAuthGoogleW;
|
|
class CkOAuth1W;
|
|
class CkOAuth2W;
|
|
class CkSocketW;
|
|
class CkBaseProgressW;
|
|
|
|
|
|
|
|
#if !defined(__sun__) && !defined(__sun)
|
|
#pragma pack (push, 8)
|
|
#endif
|
|
|
|
|
|
// CLASS: CkRestW
|
|
class CK_VISIBLE_PUBLIC CkRestW : public CkClassWithCallbacksW
|
|
{
|
|
private:
|
|
bool m_cbOwned;
|
|
|
|
private:
|
|
|
|
// Don't allow assignment or copying these objects.
|
|
CkRestW(const CkRestW &);
|
|
CkRestW &operator=(const CkRestW &);
|
|
|
|
public:
|
|
CkRestW(void);
|
|
virtual ~CkRestW(void);
|
|
|
|
|
|
|
|
static CkRestW *createNew(void);
|
|
|
|
|
|
CkRestW(bool bCallbackOwned);
|
|
static CkRestW *createNew(bool bCallbackOwned);
|
|
|
|
|
|
void CK_VISIBLE_PRIVATE inject(void *impl);
|
|
|
|
// May be called when finished with the object to free/dispose of any
|
|
// internal resources held by the object.
|
|
void dispose(void);
|
|
|
|
CkBaseProgressW *get_EventCallbackObject(void) const;
|
|
void put_EventCallbackObject(CkBaseProgressW *progress);
|
|
|
|
|
|
// BEGIN PUBLIC INTERFACE
|
|
|
|
// ----------------------
|
|
// Properties
|
|
// ----------------------
|
|
// If this property is set to false, then no MIME header folding will be
|
|
// automatically applied to any request header. The default is true. This
|
|
// property is provided to satisfy certain providers, such as Quickbooks, that
|
|
// require all MIME headers to be single unfolded lines regardless of length.
|
|
bool get_AllowHeaderFolding(void);
|
|
// If this property is set to false, then no MIME header folding will be
|
|
// automatically applied to any request header. The default is true. This
|
|
// property is provided to satisfy certain providers, such as Quickbooks, that
|
|
// require all MIME headers to be single unfolded lines regardless of length.
|
|
void put_AllowHeaderFolding(bool newVal);
|
|
|
|
// Controls whether non us-ascii HTTP request headers are automatically Q/B
|
|
// encoded. The default value is true.
|
|
//
|
|
// Q/B encoded headers explicitly indicate the charset and byte representation, and
|
|
// appear as such: =?utf-8?Q?...?= or =?utf-8?B?...?=, where the charset may be
|
|
// utf-8 or any other possible charset.
|
|
//
|
|
// If this property is set to false, then no Q/B encoding is applied to any
|
|
// request header.
|
|
//
|
|
bool get_AllowHeaderQB(void);
|
|
// Controls whether non us-ascii HTTP request headers are automatically Q/B
|
|
// encoded. The default value is true.
|
|
//
|
|
// Q/B encoded headers explicitly indicate the charset and byte representation, and
|
|
// appear as such: =?utf-8?Q?...?= or =?utf-8?B?...?=, where the charset may be
|
|
// utf-8 or any other possible charset.
|
|
//
|
|
// If this property is set to false, then no Q/B encoding is applied to any
|
|
// request header.
|
|
//
|
|
void put_AllowHeaderQB(bool newVal);
|
|
|
|
// The value of the Authorization HTTP request header (if needed).
|
|
void get_Authorization(CkString &str);
|
|
// The value of the Authorization HTTP request header (if needed).
|
|
const wchar_t *authorization(void);
|
|
// The value of the Authorization HTTP request header (if needed).
|
|
void put_Authorization(const wchar_t *newVal);
|
|
|
|
// If the Connect method fails, this property can be checked to determine the
|
|
// reason for failure.
|
|
//
|
|
// Possible values are:0 = success
|
|
//
|
|
// Normal (non-SSL) sockets:
|
|
// 1 = empty hostname
|
|
// 2 = DNS lookup failed
|
|
// 3 = DNS timeout
|
|
// 4 = Aborted by application.
|
|
// 5 = Internal failure.
|
|
// 6 = Connect Timed Out
|
|
// 7 = Connect Rejected (or failed for some other reason)
|
|
// 99 = Chilkat not unlocked / trial expired.
|
|
//
|
|
// SSL/TLS:
|
|
// 100 = TLS internal error.
|
|
// 101 = Failed to send client hello.
|
|
// 102 = Unexpected handshake message.
|
|
// 103 = Failed to read server hello.
|
|
// 104 = No server certificate.
|
|
// 105 = Unexpected TLS protocol version.
|
|
// 106 = Server certificate verify failed (the server certificate is expired or the cert's signature verification failed).
|
|
// 107 = Unacceptable TLS protocol version.
|
|
// 109 = Failed to read handshake messages.
|
|
// 110 = Failed to send client certificate handshake message.
|
|
// 111 = Failed to send client key exchange handshake message.
|
|
// 112 = Client certificate's private key not accessible.
|
|
// 113 = Failed to send client cert verify handshake message.
|
|
// 114 = Failed to send change cipher spec handshake message.
|
|
// 115 = Failed to send finished handshake message.
|
|
// 116 = Server's Finished message is invalid.
|
|
//
|
|
int get_ConnectFailReason(void);
|
|
|
|
// The maximum amount of time to wait for the connection to be accepted by the HTTP
|
|
// server.
|
|
int get_ConnectTimeoutMs(void);
|
|
// The maximum amount of time to wait for the connection to be accepted by the HTTP
|
|
// server.
|
|
void put_ConnectTimeoutMs(int newVal);
|
|
|
|
// If true then all calls to Send* or FullRequest* methods will not actually send
|
|
// a request. Instead, the request will be written to a memory buffer which can
|
|
// then be retrieved by calling GetLastDebugRequest.
|
|
bool get_DebugMode(void);
|
|
// If true then all calls to Send* or FullRequest* methods will not actually send
|
|
// a request. Instead, the request will be written to a memory buffer which can
|
|
// then be retrieved by calling GetLastDebugRequest.
|
|
void put_DebugMode(bool newVal);
|
|
|
|
// The interval in milliseconds between each AbortCheck event callback, which
|
|
// enables an application to abort certain method calls before they complete. By
|
|
// default, HeartbeatMs is set to 0 , meaning no AbortCheck event callbacks will
|
|
// trigger.
|
|
//
|
|
// References:
|
|
// 1: #AbortCheck
|
|
int get_HeartbeatMs(void);
|
|
// The interval in milliseconds between each AbortCheck event callback, which
|
|
// enables an application to abort certain method calls before they complete. By
|
|
// default, HeartbeatMs is set to 0 , meaning no AbortCheck event callbacks will
|
|
// trigger.
|
|
//
|
|
// References:
|
|
// 1: #AbortCheck
|
|
void put_HeartbeatMs(int newVal);
|
|
|
|
// The value of the Host HTTP request header.
|
|
void get_Host(CkString &str);
|
|
// The value of the Host HTTP request header.
|
|
const wchar_t *host(void);
|
|
// The value of the Host HTTP request header.
|
|
void put_Host(const wchar_t *newVal);
|
|
|
|
// The maximum amount of time to wait for additional incoming data when receiving,
|
|
// or the max time to wait to send additional data. The default value is 30000 (30
|
|
// seconds). This is not an overall max timeout. Rather, it is the maximum time to
|
|
// wait when receiving or sending has halted.
|
|
int get_IdleTimeoutMs(void);
|
|
// The maximum amount of time to wait for additional incoming data when receiving,
|
|
// or the max time to wait to send additional data. The default value is 30000 (30
|
|
// seconds). This is not an overall max timeout. Rather, it is the maximum time to
|
|
// wait when receiving or sending has halted.
|
|
void put_IdleTimeoutMs(int newVal);
|
|
|
|
// This property holds the redirect URL from the most recent response. If the last
|
|
// response was not a redirect, the property is empty. The redirect URL corresponds
|
|
// to the Location header in the HTTP response.
|
|
void get_LastRedirectUrl(CkString &str);
|
|
// This property holds the redirect URL from the most recent response. If the last
|
|
// response was not a redirect, the property is empty. The redirect URL corresponds
|
|
// to the Location header in the HTTP response.
|
|
const wchar_t *lastRedirectUrl(void);
|
|
|
|
// The full MIME header (not including the HTTP start line which contains the
|
|
// status code and status text), of the last request sent.
|
|
void get_LastRequestHeader(CkString &str);
|
|
// The full MIME header (not including the HTTP start line which contains the
|
|
// status code and status text), of the last request sent.
|
|
const wchar_t *lastRequestHeader(void);
|
|
|
|
// The full start line of the last request sent. (The start line begins with the
|
|
// HTTP verb, such as GET, POST, etc., is followed by the URI path, and ends with
|
|
// the HTTP version.)
|
|
void get_LastRequestStartLine(CkString &str);
|
|
// The full start line of the last request sent. (The start line begins with the
|
|
// HTTP verb, such as GET, POST, etc., is followed by the URI path, and ends with
|
|
// the HTTP version.)
|
|
const wchar_t *lastRequestStartLine(void);
|
|
|
|
// The number of response header fields. The first response header field is at
|
|
// index 0.
|
|
int get_NumResponseHeaders(void);
|
|
|
|
// This property is for multipart requests, specifying the target MIME part for
|
|
// operations like AddHeader, RemoveHeader, SetMultipartBodyBinary,
|
|
// SetMultipartBodyString, SetMultipartBodyStream, and others. An empty string ( )
|
|
// targets the top-level header. 1 refers to the first sub-part, 2 to the second
|
|
// sub-part, and so on. For deeper nesting, uncommon as it is, use the format
|
|
// {part}.{part}.{part}... For instance, 1.2 targets the second sub-part within the
|
|
// first sub-part.
|
|
void get_PartSelector(CkString &str);
|
|
// This property is for multipart requests, specifying the target MIME part for
|
|
// operations like AddHeader, RemoveHeader, SetMultipartBodyBinary,
|
|
// SetMultipartBodyString, SetMultipartBodyStream, and others. An empty string ( )
|
|
// targets the top-level header. 1 refers to the first sub-part, 2 to the second
|
|
// sub-part, and so on. For deeper nesting, uncommon as it is, use the format
|
|
// {part}.{part}.{part}... For instance, 1.2 targets the second sub-part within the
|
|
// first sub-part.
|
|
const wchar_t *partSelector(void);
|
|
// This property is for multipart requests, specifying the target MIME part for
|
|
// operations like AddHeader, RemoveHeader, SetMultipartBodyBinary,
|
|
// SetMultipartBodyString, SetMultipartBodyStream, and others. An empty string ( )
|
|
// targets the top-level header. 1 refers to the first sub-part, 2 to the second
|
|
// sub-part, and so on. For deeper nesting, uncommon as it is, use the format
|
|
// {part}.{part}.{part}... For instance, 1.2 targets the second sub-part within the
|
|
// first sub-part.
|
|
void put_PartSelector(const wchar_t *newVal);
|
|
|
|
// This property only applies to the FullRequest* methods, which are methods that
|
|
// both send an HTTP request and receive the response. (It also only applies to
|
|
// programming languages that support event callbacks.) It determines whether
|
|
// percentage completion is tracked for the sending of the HTTP request, or for the
|
|
// downloading the HTTP response. The default value is false, which is to measure
|
|
// the percent completion when receiving the response.
|
|
//
|
|
// For example: If the REST request is to download a file, then this property
|
|
// should remain at the default value of false. If the REST request is to upload
|
|
// a file (using a Full* method), then set this property to true. Also note if a
|
|
// server sends an HTTP response in the chunked encoding, it is not possible to
|
|
// measure percent completion because the HTTP client has no way of knowing the
|
|
// total size of the HTTP response.
|
|
//
|
|
bool get_PercentDoneOnSend(void);
|
|
// This property only applies to the FullRequest* methods, which are methods that
|
|
// both send an HTTP request and receive the response. (It also only applies to
|
|
// programming languages that support event callbacks.) It determines whether
|
|
// percentage completion is tracked for the sending of the HTTP request, or for the
|
|
// downloading the HTTP response. The default value is false, which is to measure
|
|
// the percent completion when receiving the response.
|
|
//
|
|
// For example: If the REST request is to download a file, then this property
|
|
// should remain at the default value of false. If the REST request is to upload
|
|
// a file (using a Full* method), then set this property to true. Also note if a
|
|
// server sends an HTTP response in the chunked encoding, it is not possible to
|
|
// measure percent completion because the HTTP client has no way of knowing the
|
|
// total size of the HTTP response.
|
|
//
|
|
void put_PercentDoneOnSend(bool newVal);
|
|
|
|
// The full response MIME header (not including the HTTP start line which contains
|
|
// the status code and status text).
|
|
void get_ResponseHeader(CkString &str);
|
|
// The full response MIME header (not including the HTTP start line which contains
|
|
// the status code and status text).
|
|
const wchar_t *responseHeader(void);
|
|
|
|
// The response status code.
|
|
int get_ResponseStatusCode(void);
|
|
|
|
// The status message corresponding to the response status code.
|
|
void get_ResponseStatusText(CkString &str);
|
|
// The status message corresponding to the response status code.
|
|
const wchar_t *responseStatusText(void);
|
|
|
|
// If true, then methods that upload data are sent non-chunked if possible. For
|
|
// example, if the FullRequestStream method is called where the stream is a file
|
|
// stream, then the size of the content is known and the HTTP request will be sent
|
|
// using a Content-Length header instead of using a Transfer-Encoding: chunked
|
|
// upload. If false, then the chunked transfer encoding is used. The default
|
|
// value of this property is true.
|
|
bool get_StreamNonChunked(void);
|
|
// If true, then methods that upload data are sent non-chunked if possible. For
|
|
// example, if the FullRequestStream method is called where the stream is a file
|
|
// stream, then the size of the content is known and the HTTP request will be sent
|
|
// using a Content-Length header instead of using a Transfer-Encoding: chunked
|
|
// upload. If false, then the chunked transfer encoding is used. The default
|
|
// value of this property is true.
|
|
void put_StreamNonChunked(bool newVal);
|
|
|
|
// This is a catch-all property to be used for uncommon needs. This property
|
|
// defaults to the empty string and should typically remain empty. Can be set to a
|
|
// list of the following comma separated keywords:
|
|
// * AllowDuplicateQueryParams - Affects the AddQueryParam method. If the query
|
|
// parameter to be added already exists, it is not replaced and instead an
|
|
// additional param with the same name is added.
|
|
// * AllowInsecureBasicAuth - Introduced in v9.5.0.80. Allows HTTP Basic
|
|
// authentication over non-TLS connections. (HTTP Basic authentication puts the
|
|
// login:password in the Authorization header field in base64 encoding. If
|
|
// transmitted over an insecure connection, it is potentially visible to anything
|
|
// sniffing the traffic. By default, Chilkat disallows HTTP Basic authentication
|
|
// except for SSL/TLS connections, SSH tunneled connections, or connections to
|
|
// localhost.)
|
|
// * DisableTls13 Disables TLS 1.3 so that only TLS 1.2 or lower is used.
|
|
// * ProtectFromVpn - Introduced in v9.5.0.80. On Android systems, will bypass
|
|
// any VPN that may be installed or active.
|
|
void get_UncommonOptions(CkString &str);
|
|
// This is a catch-all property to be used for uncommon needs. This property
|
|
// defaults to the empty string and should typically remain empty. Can be set to a
|
|
// list of the following comma separated keywords:
|
|
// * AllowDuplicateQueryParams - Affects the AddQueryParam method. If the query
|
|
// parameter to be added already exists, it is not replaced and instead an
|
|
// additional param with the same name is added.
|
|
// * AllowInsecureBasicAuth - Introduced in v9.5.0.80. Allows HTTP Basic
|
|
// authentication over non-TLS connections. (HTTP Basic authentication puts the
|
|
// login:password in the Authorization header field in base64 encoding. If
|
|
// transmitted over an insecure connection, it is potentially visible to anything
|
|
// sniffing the traffic. By default, Chilkat disallows HTTP Basic authentication
|
|
// except for SSL/TLS connections, SSH tunneled connections, or connections to
|
|
// localhost.)
|
|
// * DisableTls13 Disables TLS 1.3 so that only TLS 1.2 or lower is used.
|
|
// * ProtectFromVpn - Introduced in v9.5.0.80. On Android systems, will bypass
|
|
// any VPN that may be installed or active.
|
|
const wchar_t *uncommonOptions(void);
|
|
// This is a catch-all property to be used for uncommon needs. This property
|
|
// defaults to the empty string and should typically remain empty. Can be set to a
|
|
// list of the following comma separated keywords:
|
|
// * AllowDuplicateQueryParams - Affects the AddQueryParam method. If the query
|
|
// parameter to be added already exists, it is not replaced and instead an
|
|
// additional param with the same name is added.
|
|
// * AllowInsecureBasicAuth - Introduced in v9.5.0.80. Allows HTTP Basic
|
|
// authentication over non-TLS connections. (HTTP Basic authentication puts the
|
|
// login:password in the Authorization header field in base64 encoding. If
|
|
// transmitted over an insecure connection, it is potentially visible to anything
|
|
// sniffing the traffic. By default, Chilkat disallows HTTP Basic authentication
|
|
// except for SSL/TLS connections, SSH tunneled connections, or connections to
|
|
// localhost.)
|
|
// * DisableTls13 Disables TLS 1.3 so that only TLS 1.2 or lower is used.
|
|
// * ProtectFromVpn - Introduced in v9.5.0.80. On Android systems, will bypass
|
|
// any VPN that may be installed or active.
|
|
void put_UncommonOptions(const wchar_t *newVal);
|
|
|
|
|
|
|
|
// ----------------------
|
|
// Methods
|
|
// ----------------------
|
|
// Adds an HTTP request header. If the header field already exists, then it is
|
|
// replaced.
|
|
bool AddHeader(const wchar_t *name, const wchar_t *value);
|
|
|
|
// Computes the Amazon MWS signature using the mwsSecretKey and adds the Signature
|
|
// parameter to the request. This method should be called for all Amazon
|
|
// Marketplace Web Service (Amazon MWS) HTTP requests. It should be called after
|
|
// all request parameters have been added.
|
|
//
|
|
// Important: The Chilkat v9.5.0.75 release accidentally breaks Amazon MWS (not
|
|
// AWS) authentication. If you need MWS with 9.5.0.75, send email to
|
|
// support@chilkatsoft.com for a hotfix, or revert back to v9.5.0.73, or update to
|
|
// a version after 9.5.0.75.
|
|
//
|
|
// The domain should be the domain of the request, such as one of the following:
|
|
// * mws.amazonservices.com
|
|
// * mws-eu.amazonservices.com
|
|
// * mws.amazonservices.in
|
|
// * mws.amazonservices.com.cn
|
|
// * mws.amazonservices.jp
|
|
//
|
|
// The httpVerb should be the HTTP verb, such as GET , POST , etc. The uriPath is the URI
|
|
// path, such as /Feeds/2009-01-01 . In general, the httpVerb and uriPath should be
|
|
// identical to the 1st two args passed to methods such as
|
|
// FullRequestFormUrlEncoded.
|
|
//
|
|
// Note: This method also automatically adds or replaces the existing Timestamp
|
|
// parameter to the current system date/time.
|
|
//
|
|
bool AddMwsSignature(const wchar_t *httpVerb, const wchar_t *uriPath, const wchar_t *domain, const wchar_t *mwsSecretKey);
|
|
|
|
// Adds or replaces a path parameter. A path parameter is a string that will be
|
|
// replaced in any uriPath string passed to a method. For example, if name is
|
|
// fileId and value is 1R_70heIyzIAu1_u0prXbYcaIiJRVkgBl , then a uriPath argument
|
|
// of /drive/v3/files/fileId will be transformed to
|
|
// /drive/v3/files/1R_70heIyzIAu1_u0prXbYcaIiJRVkgBl in a method call.
|
|
bool AddPathParam(const wchar_t *name, const wchar_t *value);
|
|
|
|
// Adds a query parameter. If the query parameter already exists, then it is
|
|
// replaced.
|
|
//
|
|
// To allow duplicates, you can add the keyword AllowDuplicateQueryParams to the
|
|
// UncommonOptions property value. In other words, if the query parameter already
|
|
// exists, it is not replaced and instead an additional param with the same name is
|
|
// added.
|
|
//
|
|
bool AddQueryParam(const wchar_t *name, const wchar_t *value);
|
|
|
|
// Adds the query parameters from the queryString. The queryString is a query string of the
|
|
// format field1=value1&field2=value2&field3=value3... where each value is URL
|
|
// encoded.
|
|
bool AddQueryParams(const wchar_t *queryString);
|
|
|
|
// Adds a query parameter. If the query parameter already exists, then it is
|
|
// replaced. The parameter value is passed in a StringBuilder object.
|
|
bool AddQueryParamSb(const wchar_t *name, CkStringBuilderW &value);
|
|
|
|
// Removes all HTTP request headers.
|
|
bool ClearAllHeaders(void);
|
|
|
|
// Removes all sub-parts from a request. This is useful when preparing the REST
|
|
// object to send a new request after a multipart request has just been sent.
|
|
bool ClearAllParts(void);
|
|
|
|
// Clears all path parameters.
|
|
bool ClearAllPathParams(void);
|
|
|
|
// Clears all query parameters.
|
|
bool ClearAllQueryParams(void);
|
|
|
|
// Clears all authentication settings.
|
|
bool ClearAuth(void);
|
|
|
|
// Clears the response body stream.
|
|
void ClearResponseBodyStream(void);
|
|
|
|
// Establishes an initial connection to a REST server. The hostname can be a domain
|
|
// name or an IP address. Both IPv4 and IPv6 addresses are supported. The port is
|
|
// the port, which is typically 80 or 443. If SSL/TLS is required, then tls should
|
|
// be set to true. The autoReconnect indicates whether connection should automatically be
|
|
// established as needed for subsequent REST requests.
|
|
//
|
|
// Note: This method is for simple connections that do not require any proxies
|
|
// (HTTP or SOCKS), or SSH tunneling. If a proxy, SSH tunnel, or any other advanced
|
|
// socket feature is required, the Chilkat Socket API can be used to establish the
|
|
// connection. The UseConnection method can then be called to use the
|
|
// pre-established socket connection.
|
|
//
|
|
// text-danger>IMPORTANT: The hostname argument should be just the domain or IP
|
|
// address. It is NOT the full URL. If your URL is
|
|
// https://www.example.com/something/123 , then pass www.example.com in the 1st
|
|
// argument.
|
|
//
|
|
bool Connect(const wchar_t *hostname, int port, bool tls, bool autoReconnect);
|
|
|
|
// Creates an asynchronous task to call the Connect method with the arguments
|
|
// provided.
|
|
// The caller is responsible for deleting the object returned by this method.
|
|
CkTaskW *ConnectAsync(const wchar_t *hostname, int port, bool tls, bool autoReconnect);
|
|
|
|
// Closes the connection with the HTTP server if one is open. This method can be
|
|
// called to ensure the connection is closed. The maxWaitMs is the maximum time in
|
|
// milliseconds to wait for a clean close. If the connection is through an SSH
|
|
// tunnel, this closes the logical channel within the SSH tunnel, and not the
|
|
// connection with the SSH server itself.
|
|
bool Disconnect(int maxWaitMs);
|
|
|
|
// Creates an asynchronous task to call the Disconnect method with the arguments
|
|
// provided.
|
|
// The caller is responsible for deleting the object returned by this method.
|
|
CkTaskW *DisconnectAsync(int maxWaitMs);
|
|
|
|
// Sends a complete REST request (header + binary body) and receives the full
|
|
// response. The binary body of the request is passed in binData. The response body is
|
|
// returned in responseBody (replacing whatever contents responseBody may have previously held).
|
|
//
|
|
// Note: If your application wishes to receive percent-done callbacks, make sure
|
|
// the PercentDoneOnSend property is set to indicate whether percent-done applies
|
|
// to sending or receiving.
|
|
//
|
|
// text-danger>IMPORTANT: The uriPath argument should be just the path part of the
|
|
// URL. It is NOT the full URL. If your URL is
|
|
// https://www.example.com/something/123?xyz=1 , then the uriPath is
|
|
// /something/123?xyz=1 .
|
|
//
|
|
bool FullRequestBd(const wchar_t *httpVerb, const wchar_t *uriPath, CkBinDataW &binData, CkStringBuilderW &responseBody);
|
|
|
|
// Creates an asynchronous task to call the FullRequestBd method with the arguments
|
|
// provided.
|
|
// The caller is responsible for deleting the object returned by this method.
|
|
CkTaskW *FullRequestBdAsync(const wchar_t *httpVerb, const wchar_t *uriPath, CkBinDataW &binData, CkStringBuilderW &responseBody);
|
|
|
|
// Sends a complete REST request (header + body) and receives the full response. It
|
|
// is assumed that the request body is binary, and the response body is a string
|
|
// (such as JSON or XML). The response body is returned.
|
|
//
|
|
// This method is the equivalent of making the following calls in sequence:
|
|
// SendReqBinaryBody, ReadResponseHeader, ReadRespBodyString.
|
|
//
|
|
// Note: If your application wishes to receive percent-done callbacks, make sure
|
|
// the PercentDoneOnSend property is set to indicate whether percent-done applies
|
|
// to sending or receiving.
|
|
//
|
|
// text-danger>IMPORTANT: The uriPath argument should be just the path part of the
|
|
// URL. It is NOT the full URL. If your URL is
|
|
// https://www.example.com/something/123?xyz=1 , then the uriPath is
|
|
// /something/123?xyz=1 .
|
|
//
|
|
bool FullRequestBinary(const wchar_t *httpVerb, const wchar_t *uriPath, CkByteData &bodyBytes, CkString &outStr);
|
|
// Sends a complete REST request (header + body) and receives the full response. It
|
|
// is assumed that the request body is binary, and the response body is a string
|
|
// (such as JSON or XML). The response body is returned.
|
|
//
|
|
// This method is the equivalent of making the following calls in sequence:
|
|
// SendReqBinaryBody, ReadResponseHeader, ReadRespBodyString.
|
|
//
|
|
// Note: If your application wishes to receive percent-done callbacks, make sure
|
|
// the PercentDoneOnSend property is set to indicate whether percent-done applies
|
|
// to sending or receiving.
|
|
//
|
|
// text-danger>IMPORTANT: The uriPath argument should be just the path part of the
|
|
// URL. It is NOT the full URL. If your URL is
|
|
// https://www.example.com/something/123?xyz=1 , then the uriPath is
|
|
// /something/123?xyz=1 .
|
|
//
|
|
const wchar_t *fullRequestBinary(const wchar_t *httpVerb, const wchar_t *uriPath, CkByteData &bodyBytes);
|
|
|
|
// Creates an asynchronous task to call the FullRequestBinary method with the
|
|
// arguments provided.
|
|
// The caller is responsible for deleting the object returned by this method.
|
|
CkTaskW *FullRequestBinaryAsync(const wchar_t *httpVerb, const wchar_t *uriPath, CkByteData &bodyBytes);
|
|
|
|
// Sends a complete application/x-www-form-urlencoded HTTP request and receives the
|
|
// full response. The request body is composed of the URL encoded query params. It
|
|
// is assumed that the response body is a string (such as JSON or XML). The
|
|
// response body is returned.
|
|
//
|
|
// This method is the equivalent of making the following calls in sequence:
|
|
// SendReqFormUrlEncoded, ReadResponseHeader, ReadRespBodyString.
|
|
//
|
|
// Note: If your application wishes to receive percent-done callbacks, make sure
|
|
// the PercentDoneOnSend property is set to indicate whether percent-done applies
|
|
// to sending or receiving.
|
|
//
|
|
// text-danger>IMPORTANT: The uriPath argument should be just the path part of the
|
|
// URL. It is NOT the full URL. If your URL is
|
|
// https://www.example.com/something/123?xyz=1 , then the uriPath is
|
|
// /something/123?xyz=1 .
|
|
//
|
|
bool FullRequestFormUrlEncoded(const wchar_t *httpVerb, const wchar_t *uriPath, CkString &outStr);
|
|
// Sends a complete application/x-www-form-urlencoded HTTP request and receives the
|
|
// full response. The request body is composed of the URL encoded query params. It
|
|
// is assumed that the response body is a string (such as JSON or XML). The
|
|
// response body is returned.
|
|
//
|
|
// This method is the equivalent of making the following calls in sequence:
|
|
// SendReqFormUrlEncoded, ReadResponseHeader, ReadRespBodyString.
|
|
//
|
|
// Note: If your application wishes to receive percent-done callbacks, make sure
|
|
// the PercentDoneOnSend property is set to indicate whether percent-done applies
|
|
// to sending or receiving.
|
|
//
|
|
// text-danger>IMPORTANT: The uriPath argument should be just the path part of the
|
|
// URL. It is NOT the full URL. If your URL is
|
|
// https://www.example.com/something/123?xyz=1 , then the uriPath is
|
|
// /something/123?xyz=1 .
|
|
//
|
|
const wchar_t *fullRequestFormUrlEncoded(const wchar_t *httpVerb, const wchar_t *uriPath);
|
|
|
|
// Creates an asynchronous task to call the FullRequestFormUrlEncoded method with
|
|
// the arguments provided.
|
|
// The caller is responsible for deleting the object returned by this method.
|
|
CkTaskW *FullRequestFormUrlEncodedAsync(const wchar_t *httpVerb, const wchar_t *uriPath);
|
|
|
|
// Sends a complete multipart REST request (header + multipart body) and receives
|
|
// the full response. It is assumed that the response body is a string (such as
|
|
// JSON or XML). The response body is returned.
|
|
//
|
|
// This method is the equivalent of making the following calls in sequence:
|
|
// SendReqMultipart, ReadResponseHeader, ReadRespBodyString.
|
|
//
|
|
// Note: If your application wishes to receive percent-done callbacks, make sure
|
|
// the PercentDoneOnSend property is set to indicate whether percent-done applies
|
|
// to sending or receiving.
|
|
//
|
|
// text-danger>IMPORTANT: The uriPath argument should be just the path part of the
|
|
// URL. It is NOT the full URL. If your URL is
|
|
// https://www.example.com/something/123?xyz=1 , then the uriPath is
|
|
// /something/123?xyz=1 .
|
|
//
|
|
bool FullRequestMultipart(const wchar_t *httpVerb, const wchar_t *uriPath, CkString &outStr);
|
|
// Sends a complete multipart REST request (header + multipart body) and receives
|
|
// the full response. It is assumed that the response body is a string (such as
|
|
// JSON or XML). The response body is returned.
|
|
//
|
|
// This method is the equivalent of making the following calls in sequence:
|
|
// SendReqMultipart, ReadResponseHeader, ReadRespBodyString.
|
|
//
|
|
// Note: If your application wishes to receive percent-done callbacks, make sure
|
|
// the PercentDoneOnSend property is set to indicate whether percent-done applies
|
|
// to sending or receiving.
|
|
//
|
|
// text-danger>IMPORTANT: The uriPath argument should be just the path part of the
|
|
// URL. It is NOT the full URL. If your URL is
|
|
// https://www.example.com/something/123?xyz=1 , then the uriPath is
|
|
// /something/123?xyz=1 .
|
|
//
|
|
const wchar_t *fullRequestMultipart(const wchar_t *httpVerb, const wchar_t *uriPath);
|
|
|
|
// Creates an asynchronous task to call the FullRequestMultipart method with the
|
|
// arguments provided.
|
|
// The caller is responsible for deleting the object returned by this method.
|
|
CkTaskW *FullRequestMultipartAsync(const wchar_t *httpVerb, const wchar_t *uriPath);
|
|
|
|
// Sends a complete REST request and receives the full response. It is assumed that
|
|
// the response body is a string (such as JSON or XML). The response body is
|
|
// returned.
|
|
//
|
|
// This method is the equivalent of making the following calls in sequence:
|
|
// SendReqNoBody, ReadResponseHeader, ReadRespBodyString.
|
|
//
|
|
// text-danger>IMPORTANT: The uriPath argument should be just the path part of the
|
|
// URL. It is NOT the full URL. If your URL is
|
|
// https://www.example.com/something/123?xyz=1 , then the uriPath is
|
|
// /something/123?xyz=1 .
|
|
//
|
|
bool FullRequestNoBody(const wchar_t *httpVerb, const wchar_t *uriPath, CkString &outStr);
|
|
// Sends a complete REST request and receives the full response. It is assumed that
|
|
// the response body is a string (such as JSON or XML). The response body is
|
|
// returned.
|
|
//
|
|
// This method is the equivalent of making the following calls in sequence:
|
|
// SendReqNoBody, ReadResponseHeader, ReadRespBodyString.
|
|
//
|
|
// text-danger>IMPORTANT: The uriPath argument should be just the path part of the
|
|
// URL. It is NOT the full URL. If your URL is
|
|
// https://www.example.com/something/123?xyz=1 , then the uriPath is
|
|
// /something/123?xyz=1 .
|
|
//
|
|
const wchar_t *fullRequestNoBody(const wchar_t *httpVerb, const wchar_t *uriPath);
|
|
|
|
// Creates an asynchronous task to call the FullRequestNoBody method with the
|
|
// arguments provided.
|
|
// The caller is responsible for deleting the object returned by this method.
|
|
CkTaskW *FullRequestNoBodyAsync(const wchar_t *httpVerb, const wchar_t *uriPath);
|
|
|
|
// The same as FullRequestNoBody, except returns the response body in the binData.
|
|
// This method is useful for downloading binary files.
|
|
//
|
|
// text-danger>IMPORTANT: The uriPath argument should be just the path part of the
|
|
// URL. It is NOT the full URL. If your URL is
|
|
// https://www.example.com/something/123?xyz=1 , then the uriPath is
|
|
// /something/123?xyz=1 .
|
|
//
|
|
bool FullRequestNoBodyBd(const wchar_t *httpVerb, const wchar_t *uriPath, CkBinDataW &binData);
|
|
|
|
// Creates an asynchronous task to call the FullRequestNoBodyBd method with the
|
|
// arguments provided.
|
|
// The caller is responsible for deleting the object returned by this method.
|
|
CkTaskW *FullRequestNoBodyBdAsync(const wchar_t *httpVerb, const wchar_t *uriPath, CkBinDataW &binData);
|
|
|
|
// The same as FullRequestNoBody, except returns the response body in the sb.
|
|
//
|
|
// text-danger>IMPORTANT: The uriPath argument should be just the path part of the
|
|
// URL. It is NOT the full URL. If your URL is
|
|
// https://www.example.com/something/123?xyz=1 , then the uriPath is
|
|
// /something/123?xyz=1 .
|
|
//
|
|
bool FullRequestNoBodySb(const wchar_t *httpVerb, const wchar_t *uriPath, CkStringBuilderW &sb);
|
|
|
|
// Creates an asynchronous task to call the FullRequestNoBodySb method with the
|
|
// arguments provided.
|
|
// The caller is responsible for deleting the object returned by this method.
|
|
CkTaskW *FullRequestNoBodySbAsync(const wchar_t *httpVerb, const wchar_t *uriPath, CkStringBuilderW &sb);
|
|
|
|
// Sends a complete REST request (header + body string) and receives the full
|
|
// response. The body of the request is passed in requestBody. The response body is
|
|
// returned in responseBody (replacing whatever contents responseBody may have previously held).
|
|
//
|
|
// Note: If your application wishes to receive percent-done callbacks, make sure
|
|
// the PercentDoneOnSend property is set to indicate whether percent-done applies
|
|
// to sending or receiving.
|
|
//
|
|
// text-danger>IMPORTANT: The uriPath argument should be just the path part of the
|
|
// URL. It is NOT the full URL. If your URL is
|
|
// https://www.example.com/something/123?xyz=1 , then the uriPath is
|
|
// /something/123?xyz=1 .
|
|
//
|
|
bool FullRequestSb(const wchar_t *httpVerb, const wchar_t *uriPath, CkStringBuilderW &requestBody, CkStringBuilderW &responseBody);
|
|
|
|
// Creates an asynchronous task to call the FullRequestSb method with the arguments
|
|
// provided.
|
|
// The caller is responsible for deleting the object returned by this method.
|
|
CkTaskW *FullRequestSbAsync(const wchar_t *httpVerb, const wchar_t *uriPath, CkStringBuilderW &requestBody, CkStringBuilderW &responseBody);
|
|
|
|
// Sends a complete REST request and receives the full response. It is assumed that
|
|
// the response body is a string (such as JSON or XML). The response body is
|
|
// returned.
|
|
//
|
|
// This method is the equivalent of making the following calls in sequence:
|
|
// SendReqStream, ReadResponseHeader, ReadRespBodyString.
|
|
//
|
|
// Note: If your application wishes to receive percent-done callbacks, make sure
|
|
// the PercentDoneOnSend property is set to indicate whether percent-done applies
|
|
// to sending or receiving.
|
|
//
|
|
// text-danger>IMPORTANT: The uriPath argument should be just the path part of the
|
|
// URL. It is NOT the full URL. If your URL is
|
|
// https://www.example.com/something/123?xyz=1 , then the uriPath is
|
|
// /something/123?xyz=1 .
|
|
//
|
|
bool FullRequestStream(const wchar_t *httpVerb, const wchar_t *uriPath, CkStreamW &stream, CkString &outStr);
|
|
// Sends a complete REST request and receives the full response. It is assumed that
|
|
// the response body is a string (such as JSON or XML). The response body is
|
|
// returned.
|
|
//
|
|
// This method is the equivalent of making the following calls in sequence:
|
|
// SendReqStream, ReadResponseHeader, ReadRespBodyString.
|
|
//
|
|
// Note: If your application wishes to receive percent-done callbacks, make sure
|
|
// the PercentDoneOnSend property is set to indicate whether percent-done applies
|
|
// to sending or receiving.
|
|
//
|
|
// text-danger>IMPORTANT: The uriPath argument should be just the path part of the
|
|
// URL. It is NOT the full URL. If your URL is
|
|
// https://www.example.com/something/123?xyz=1 , then the uriPath is
|
|
// /something/123?xyz=1 .
|
|
//
|
|
const wchar_t *fullRequestStream(const wchar_t *httpVerb, const wchar_t *uriPath, CkStreamW &stream);
|
|
|
|
// Creates an asynchronous task to call the FullRequestStream method with the
|
|
// arguments provided.
|
|
// The caller is responsible for deleting the object returned by this method.
|
|
CkTaskW *FullRequestStreamAsync(const wchar_t *httpVerb, const wchar_t *uriPath, CkStreamW &stream);
|
|
|
|
// Sends a complete REST request (header + body string) and receives the full
|
|
// response. It is assumed that both the request and response bodies are strings
|
|
// (such as JSON or XML). The response body is returned.
|
|
//
|
|
// This method is the equivalent of making the following calls in sequence:
|
|
// SendReqStringBody, ReadResponseHeader, ReadRespBodyString.
|
|
//
|
|
// Note: If your application wishes to receive percent-done callbacks, make sure
|
|
// the PercentDoneOnSend property is set to indicate whether percent-done applies
|
|
// to sending or receiving.
|
|
//
|
|
// text-danger>IMPORTANT: The uriPath argument should be just the path part of the
|
|
// URL. It is NOT the full URL. If your URL is
|
|
// https://www.example.com/something/123?xyz=1 , then the uriPath is
|
|
// /something/123?xyz=1 .
|
|
//
|
|
bool FullRequestString(const wchar_t *httpVerb, const wchar_t *uriPath, const wchar_t *bodyText, CkString &outStr);
|
|
// Sends a complete REST request (header + body string) and receives the full
|
|
// response. It is assumed that both the request and response bodies are strings
|
|
// (such as JSON or XML). The response body is returned.
|
|
//
|
|
// This method is the equivalent of making the following calls in sequence:
|
|
// SendReqStringBody, ReadResponseHeader, ReadRespBodyString.
|
|
//
|
|
// Note: If your application wishes to receive percent-done callbacks, make sure
|
|
// the PercentDoneOnSend property is set to indicate whether percent-done applies
|
|
// to sending or receiving.
|
|
//
|
|
// text-danger>IMPORTANT: The uriPath argument should be just the path part of the
|
|
// URL. It is NOT the full URL. If your URL is
|
|
// https://www.example.com/something/123?xyz=1 , then the uriPath is
|
|
// /something/123?xyz=1 .
|
|
//
|
|
const wchar_t *fullRequestString(const wchar_t *httpVerb, const wchar_t *uriPath, const wchar_t *bodyText);
|
|
|
|
// Creates an asynchronous task to call the FullRequestString method with the
|
|
// arguments provided.
|
|
// The caller is responsible for deleting the object returned by this method.
|
|
CkTaskW *FullRequestStringAsync(const wchar_t *httpVerb, const wchar_t *uriPath, const wchar_t *bodyText);
|
|
|
|
// Returns the fully composed HTTP request that would've been sent had the
|
|
// DebugMode been turned off. The request is returned in bd.
|
|
bool GetLastDebugRequest(CkBinDataW &bd);
|
|
|
|
// Provides information about what transpired in the last method called on this
|
|
// object instance. For many methods, there is no information. However, for some
|
|
// methods, details about what occurred can be obtained by getting the LastJsonData
|
|
// right after the method call returns.
|
|
void GetLastJsonData(CkJsonObjectW &json);
|
|
|
|
// This method is deprecated. Call GetLastJsonData instead.
|
|
//
|
|
// Provides information about what transpired in the last method called on this
|
|
// object instance. For many methods, there is no information. However, for some
|
|
// methods, details about what occurred can be obtained by getting the LastJsonData
|
|
// right after the method call returns.
|
|
//
|
|
// The caller is responsible for deleting the object returned by this method.
|
|
CkJsonObjectW *LastJsonData(void);
|
|
|
|
// Loads the caller of the task's async method.
|
|
bool LoadTaskCaller(CkTaskW &task);
|
|
|
|
// Reads the response body. Should only be called after ReadResponseHeader has been
|
|
// called, and should only be called when it is already known that the response
|
|
// body is binary, such as for JPG images or other non-text binary file types. The
|
|
// response body is received into responseBody (replacing whatever contents responseBody may have
|
|
// previously held).
|
|
bool ReadRespBd(CkBinDataW &responseBody);
|
|
|
|
// Creates an asynchronous task to call the ReadRespBd method with the arguments
|
|
// provided.
|
|
// The caller is responsible for deleting the object returned by this method.
|
|
CkTaskW *ReadRespBdAsync(CkBinDataW &responseBody);
|
|
|
|
// Reads the response body. Should only be called after ReadResponseHeader has been
|
|
// called, and should only be called when it is already known that the response
|
|
// body is binary, such as for JPG images or other non-text binary file types.
|
|
bool ReadRespBodyBinary(CkByteData &outBytes);
|
|
|
|
// Creates an asynchronous task to call the ReadRespBodyBinary method with the
|
|
// arguments provided.
|
|
// The caller is responsible for deleting the object returned by this method.
|
|
CkTaskW *ReadRespBodyBinaryAsync(void);
|
|
|
|
// Reads the response body to the stream. If autoSetStreamCharset is true, then the stream's
|
|
// StringCharset property will automatically get set based on the charset, if any,
|
|
// indicated in the response header. If the response is binary, then autoSetStreamCharset is
|
|
// ignored.
|
|
bool ReadRespBodyStream(CkStreamW &stream, bool autoSetStreamCharset);
|
|
|
|
// Creates an asynchronous task to call the ReadRespBodyStream method with the
|
|
// arguments provided.
|
|
// The caller is responsible for deleting the object returned by this method.
|
|
CkTaskW *ReadRespBodyStreamAsync(CkStreamW &stream, bool autoSetStreamCharset);
|
|
|
|
// Reads the response body. Should only be called after ReadResponseHeader has been
|
|
// called, and should only be called when it is already known that the response
|
|
// body will be a string (such as XML, JSON, etc.)
|
|
bool ReadRespBodyString(CkString &outStr);
|
|
// Reads the response body. Should only be called after ReadResponseHeader has been
|
|
// called, and should only be called when it is already known that the response
|
|
// body will be a string (such as XML, JSON, etc.)
|
|
const wchar_t *readRespBodyString(void);
|
|
|
|
// Creates an asynchronous task to call the ReadRespBodyString method with the
|
|
// arguments provided.
|
|
// The caller is responsible for deleting the object returned by this method.
|
|
CkTaskW *ReadRespBodyStringAsync(void);
|
|
|
|
// Reads the a chunk of the response. The received data is appended to bd. Will
|
|
// not return until at least minSize bytes are received. The last chunk of the
|
|
// response may be less than minSize bytes, or even 0 bytes.
|
|
//
|
|
// Returns one of the following values:
|
|
// * -1 - Failed. Check the contents of the LastErrorText for more information.
|
|
// * 0 - Successfully returned the remaining bytes of the response.
|
|
// * 1 - Returned a chunk of response bytes. The response is not yet finished.
|
|
//
|
|
int ReadRespChunkBd(int minSize, CkBinDataW &bd);
|
|
|
|
// Creates an asynchronous task to call the ReadRespChunkBd method with the
|
|
// arguments provided.
|
|
// The caller is responsible for deleting the object returned by this method.
|
|
CkTaskW *ReadRespChunkBdAsync(int minSize, CkBinDataW &bd);
|
|
|
|
// Reads the HTTP response header. If the HTTP response includes a body, then the
|
|
// application must call the desired method to read the response body. Otherwise,
|
|
// the HTTP request / response is finished after reading the response header (such
|
|
// as for a GET request). The contents of the response header are available in
|
|
// various properties and methods.
|
|
//
|
|
// The HTTP response status code is returned (such as 200 for a typical success
|
|
// response). If an error occurred such that no response was received, then a value
|
|
// of -1 is returned.
|
|
//
|
|
int ReadResponseHeader(void);
|
|
|
|
// Creates an asynchronous task to call the ReadResponseHeader method with the
|
|
// arguments provided.
|
|
// The caller is responsible for deleting the object returned by this method.
|
|
CkTaskW *ReadResponseHeaderAsync(void);
|
|
|
|
// Reads the response body. Should only be called after ReadResponseHeader has been
|
|
// called, and should only be called when it is already known that the response
|
|
// body will be a string (such as XML, JSON, etc.) The response body is stored in
|
|
// responseBody. (replacing whatever contents responseBody may have previously held).
|
|
bool ReadRespSb(CkStringBuilderW &responseBody);
|
|
|
|
// Creates an asynchronous task to call the ReadRespSb method with the arguments
|
|
// provided.
|
|
// The caller is responsible for deleting the object returned by this method.
|
|
CkTaskW *ReadRespSbAsync(CkStringBuilderW &responseBody);
|
|
|
|
// Applications should instead access the LastRedirectUrl property.
|
|
//
|
|
// If the response was a redirect and contains a Location header field, this method
|
|
// returns the redirect URL.
|
|
//
|
|
// The caller is responsible for deleting the object returned by this method.
|
|
CkUrlW *RedirectUrl(void);
|
|
|
|
// Removes all headers having the given name.
|
|
bool RemoveHeader(const wchar_t *name);
|
|
|
|
// Removes all query params having the given name.
|
|
bool RemoveQueryParam(const wchar_t *name);
|
|
|
|
// Returns the value of the response header indicated by name.
|
|
bool ResponseHdrByName(const wchar_t *name, CkString &outStr);
|
|
// Returns the value of the response header indicated by name.
|
|
const wchar_t *responseHdrByName(const wchar_t *name);
|
|
|
|
// Returns the name of the Nth response header field. (Chilkat always uses 0-based
|
|
// indexing. The first header field is at index 0.)
|
|
bool ResponseHdrName(int index, CkString &outStr);
|
|
// Returns the name of the Nth response header field. (Chilkat always uses 0-based
|
|
// indexing. The first header field is at index 0.)
|
|
const wchar_t *responseHdrName(int index);
|
|
|
|
// Returns the value of the Nth response header field. (Chilkat always uses 0-based
|
|
// indexing. The first header field is at index 0.)
|
|
bool ResponseHdrValue(int index, CkString &outStr);
|
|
// Returns the value of the Nth response header field. (Chilkat always uses 0-based
|
|
// indexing. The first header field is at index 0.)
|
|
const wchar_t *responseHdrValue(int index);
|
|
|
|
// Sends a REST request that cotnains a binary body. The httpVerb is the HTTP verb
|
|
// (also known as the HTTP method), such as PUT . The uriPath is the path of the
|
|
// resource URI. The body contains the bytes of the HTTP request body.
|
|
//
|
|
// text-danger>IMPORTANT: The uriPath argument should be just the path part of the
|
|
// URL. It is NOT the full URL. If your URL is
|
|
// https://www.example.com/something/123?xyz=1 , then the uriPath is
|
|
// /something/123?xyz=1 .
|
|
//
|
|
bool SendReqBd(const wchar_t *httpVerb, const wchar_t *uriPath, CkBinDataW &body);
|
|
|
|
// Creates an asynchronous task to call the SendReqBd method with the arguments
|
|
// provided.
|
|
// The caller is responsible for deleting the object returned by this method.
|
|
CkTaskW *SendReqBdAsync(const wchar_t *httpVerb, const wchar_t *uriPath, CkBinDataW &body);
|
|
|
|
// Sends a REST request that cotnains a binary body. The httpVerb is the HTTP verb
|
|
// (also known as the HTTP method), such as PUT . The uriPath is the path of the
|
|
// resource URI. The body contains the bytes of the HTTP request body.
|
|
//
|
|
// text-danger>IMPORTANT: The uriPath argument should be just the path part of the
|
|
// URL. It is NOT the full URL. If your URL is
|
|
// https://www.example.com/something/123?xyz=1 , then the uriPath is
|
|
// /something/123?xyz=1 .
|
|
//
|
|
bool SendReqBinaryBody(const wchar_t *httpVerb, const wchar_t *uriPath, CkByteData &body);
|
|
|
|
// Creates an asynchronous task to call the SendReqBinaryBody method with the
|
|
// arguments provided.
|
|
// The caller is responsible for deleting the object returned by this method.
|
|
CkTaskW *SendReqBinaryBodyAsync(const wchar_t *httpVerb, const wchar_t *uriPath, CkByteData &body);
|
|
|
|
// Sends an application/x-www-form-urlencoded HTTP request where the body is
|
|
// composed of the URL encoded query params. The httpVerb is the HTTP verb (also known
|
|
// as the HTTP method), such as POST . The uriPath is the path of the resource URI. If
|
|
// the Content-Type header was set, it is ignored and instead the Content-Type of
|
|
// the request will be application/x-www-form-urlencoded .
|
|
//
|
|
// text-danger>IMPORTANT: The uriPath argument should be just the path part of the
|
|
// URL. It is NOT the full URL. If your URL is
|
|
// https://www.example.com/something/123?xyz=1 , then the uriPath is
|
|
// /something/123?xyz=1 .
|
|
//
|
|
bool SendReqFormUrlEncoded(const wchar_t *httpVerb, const wchar_t *uriPath);
|
|
|
|
// Creates an asynchronous task to call the SendReqFormUrlEncoded method with the
|
|
// arguments provided.
|
|
// The caller is responsible for deleting the object returned by this method.
|
|
CkTaskW *SendReqFormUrlEncodedAsync(const wchar_t *httpVerb, const wchar_t *uriPath);
|
|
|
|
// Sends a multipart REST request. The httpVerb is the HTTP verb (also known as the
|
|
// HTTP method), such as GET . The uriPath is the path of the resource URI.
|
|
//
|
|
// text-danger>IMPORTANT: The uriPath argument should be just the path part of the
|
|
// URL. It is NOT the full URL. If your URL is
|
|
// https://www.example.com/something/123?xyz=1 , then the uriPath is
|
|
// /something/123?xyz=1 .
|
|
//
|
|
bool SendReqMultipart(const wchar_t *httpVerb, const wchar_t *uriPath);
|
|
|
|
// Creates an asynchronous task to call the SendReqMultipart method with the
|
|
// arguments provided.
|
|
// The caller is responsible for deleting the object returned by this method.
|
|
CkTaskW *SendReqMultipartAsync(const wchar_t *httpVerb, const wchar_t *uriPath);
|
|
|
|
// Sends a REST request that cotnains no body. The httpVerb is the HTTP verb (also
|
|
// known as the HTTP method), such as GET . The uriPath is the path of the resource
|
|
// URI.
|
|
//
|
|
// text-danger>IMPORTANT: The uriPath argument should be just the path part of the
|
|
// URL. It is NOT the full URL. If your URL is
|
|
// https://www.example.com/something/123?xyz=1 , then the uriPath is
|
|
// /something/123?xyz=1 .
|
|
//
|
|
bool SendReqNoBody(const wchar_t *httpVerb, const wchar_t *uriPath);
|
|
|
|
// Creates an asynchronous task to call the SendReqNoBody method with the arguments
|
|
// provided.
|
|
// The caller is responsible for deleting the object returned by this method.
|
|
CkTaskW *SendReqNoBodyAsync(const wchar_t *httpVerb, const wchar_t *uriPath);
|
|
|
|
// Sends a REST request that cotnains a text body, such as XML or JSON. The httpVerb is
|
|
// the HTTP verb (also known as the HTTP method), such as PUT . The uriPath is the
|
|
// path of the resource URI. The bodySb contains the text of the HTTP request body.
|
|
//
|
|
// text-danger>IMPORTANT: The uriPath argument should be just the path part of the
|
|
// URL. It is NOT the full URL. If your URL is
|
|
// https://www.example.com/something/123?xyz=1 , then the uriPath is
|
|
// /something/123?xyz=1 .
|
|
//
|
|
bool SendReqSb(const wchar_t *httpVerb, const wchar_t *uriPath, CkStringBuilderW &bodySb);
|
|
|
|
// Creates an asynchronous task to call the SendReqSb method with the arguments
|
|
// provided.
|
|
// The caller is responsible for deleting the object returned by this method.
|
|
CkTaskW *SendReqSbAsync(const wchar_t *httpVerb, const wchar_t *uriPath, CkStringBuilderW &bodySb);
|
|
|
|
// Sends a REST request that cotnains a binary or text body that is obtained by
|
|
// reading from the stream. The httpVerb is the HTTP verb (also known as the HTTP
|
|
// method), such as PUT . The uriPath is the path of the resource URI.
|
|
//
|
|
// text-danger>IMPORTANT: The uriPath argument should be just the path part of the
|
|
// URL. It is NOT the full URL. If your URL is
|
|
// https://www.example.com/something/123?xyz=1 , then the uriPath is
|
|
// /something/123?xyz=1 .
|
|
//
|
|
bool SendReqStreamBody(const wchar_t *httpVerb, const wchar_t *uriPath, CkStreamW &stream);
|
|
|
|
// Creates an asynchronous task to call the SendReqStreamBody method with the
|
|
// arguments provided.
|
|
// The caller is responsible for deleting the object returned by this method.
|
|
CkTaskW *SendReqStreamBodyAsync(const wchar_t *httpVerb, const wchar_t *uriPath, CkStreamW &stream);
|
|
|
|
// Sends a REST request that cotnains a text body, such as XML or JSON. The httpVerb is
|
|
// the HTTP verb (also known as the HTTP method), such as PUT . The uriPath is the
|
|
// path of the resource URI. The bodyText contains the text of the HTTP request body.
|
|
//
|
|
// text-danger>IMPORTANT: The uriPath argument should be just the path part of the
|
|
// URL. It is NOT the full URL. If your URL is
|
|
// https://www.example.com/something/123?xyz=1 , then the uriPath is
|
|
// /something/123?xyz=1 .
|
|
//
|
|
bool SendReqStringBody(const wchar_t *httpVerb, const wchar_t *uriPath, const wchar_t *bodyText);
|
|
|
|
// Creates an asynchronous task to call the SendReqStringBody method with the
|
|
// arguments provided.
|
|
// The caller is responsible for deleting the object returned by this method.
|
|
CkTaskW *SendReqStringBodyAsync(const wchar_t *httpVerb, const wchar_t *uriPath, const wchar_t *bodyText);
|
|
|
|
// Sets the authorization service provider for Amazon AWS REST requests. An
|
|
// application that sets an AWS authentication provider need not explicitly set the
|
|
// Authorization property. Each REST request is automatically signed and
|
|
// authenticated using the authProvider.
|
|
bool SetAuthAws(CkAuthAwsW &authProvider);
|
|
|
|
// Provides the information for Azure SAS (Shared Access Signature) authorization.
|
|
// Calling this method will cause the Authorization: SharedAccessSignature ...
|
|
// header to be automatically added to all requests.
|
|
bool SetAuthAzureSas(CkAuthAzureSASW &authProvider);
|
|
|
|
// Sets the authorization service provider for Azure Storage Service requests.
|
|
bool SetAuthAzureStorage(CkAuthAzureStorageW &authProvider);
|
|
|
|
// Sets the username and password to be used for Basic authentication. This method should
|
|
// be called when Basic authentication is required. It should only be used with
|
|
// secure SSL/TLS connections. Calling this method will cause the Authorization:
|
|
// Basic ... header to be automatically added to all requests. In many cases, a
|
|
// REST API will support Basic authentication where the username is a client ID or
|
|
// account ID, and the password is a client secret or token.
|
|
bool SetAuthBasic(const wchar_t *username, const wchar_t *password);
|
|
|
|
// The same as SetAuthBasic, but provides a more secure means for passing the
|
|
// arguments as secure string objects.
|
|
bool SetAuthBasicSecure(CkSecureStringW &username, CkSecureStringW &password);
|
|
|
|
// Sets the authorization service provider for Google API requests.
|
|
bool SetAuthGoogle(CkAuthGoogleW &authProvider);
|
|
|
|
// Sets the authentication provider for REST API requests needing OAuth 1.0 (and
|
|
// OAuth 1.0a) authentication. If useQueryParams is true, then the OAuth1 authentication
|
|
// information and signature is passed in query parameters. Otherwise it is passed
|
|
// in an Authorization header.
|
|
bool SetAuthOAuth1(CkOAuth1W &authProvider, bool useQueryParams);
|
|
|
|
// Causes the Authorization: Bearer _LT_access_token_GT_ header to be added to each
|
|
// request. The authProvider should have been loaded with an OAuth2 access token, which is
|
|
// JSON that looks similar to this:{
|
|
// "access_token": "...",
|
|
// "refresh_token": "...",
|
|
// "expires_in": 14400,
|
|
// "scope": "...",
|
|
// "token_type": "bearer",
|
|
// "expires_on": "1611099058"
|
|
// }
|
|
//
|
|
// Your access token may contain different JSON members, but it should contain the
|
|
// two required members access_token and token_type . The token_type should be
|
|
// bearer (case-insensitive).
|
|
//
|
|
// Note: It is also possible to manually add the Authorization header in the same
|
|
// way as any other header by calling the AddHeader method. If the Authorization
|
|
// header is added via AddHeader, then don't use this method.
|
|
//
|
|
bool SetAuthOAuth2(CkOAuth2W &authProvider);
|
|
|
|
// Only used for multipart requests. Sets the binary content of the multipart body
|
|
// indicated by the PartSelector.
|
|
bool SetMultipartBodyBd(CkBinDataW &bodyData);
|
|
|
|
// Only used for multipart requests. Sets the binary content of the multipart body
|
|
// indicated by the PartSelector.
|
|
bool SetMultipartBodyBinary(CkByteData &bodyData);
|
|
|
|
// Only used for multipart requests. Sets the text content of the multipart body
|
|
// indicated by the PartSelector.
|
|
bool SetMultipartBodySb(CkStringBuilderW &bodySb);
|
|
|
|
// Only used for multipart requests. Sets the stream source of the multipart body
|
|
// indicated by the PartSelector.
|
|
bool SetMultipartBodyStream(CkStreamW &stream);
|
|
|
|
// Only used for multipart requests. Sets the text content of the multipart body
|
|
// indicated by the PartSelector.
|
|
bool SetMultipartBodyString(const wchar_t *bodyText);
|
|
|
|
// Only applies to the Full* methods, such as FullRequestNoBody, FullRequestBinary,
|
|
// FullRequestStream, etc. When set, the response body is streamed directly to
|
|
// responseStream, if (and only if) the HTTP response status code equals expectedStatus.
|
|
//
|
|
// If the response body was streamed to responseStream, then the string return value of the
|
|
// Full* method instead becomes OK for success. If an attempt was made to stream
|
|
// the response body but it failed, then FAIL is returned. If the response body was
|
|
// not streamed because the response status code was not equal to expectedStatus, then the
|
|
// returned string contains the server's error response.
|
|
//
|
|
// If autoSetStreamCharset is true, then the expectedStatus's StringCharset property will automatically get
|
|
// set based on the charset, if any, indicated in the response header. If the
|
|
// response is binary, then autoSetStreamCharset is ignored.
|
|
//
|
|
// Starting in v9.5.0.75, the expectedStatus may be passed as a negative number to specify a
|
|
// range of expected (success) status codes. For example:
|
|
// * -200: Allow status codes 200 - 299
|
|
// * -210: Allow status codes 210 - 219
|
|
// * -220: Allow status codes 220 - 229
|
|
// * etc.
|
|
//
|
|
bool SetResponseBodyStream(int expectedStatus, bool autoSetStreamCharset, CkStreamW &responseStream);
|
|
|
|
// Sets the connection to be used for sending the REST request. The connection should be
|
|
// an already-connected socket. It may be a TLS connection, an unencrypted
|
|
// connection, through an HTTP proxy, a SOCKS proxy, or even through SSH tunnels.
|
|
// All of the connection related functionality is handled by the Chilkat Socket
|
|
// API.
|
|
//
|
|
// The autoReconnect indicates whether connection should automatically be established as
|
|
// needed for subsequent REST requests.
|
|
//
|
|
// Important: The UseConnection method is provided as a means for handling more
|
|
// complicated connections -- such as connections through proxies, tunnels, etc. If
|
|
// your application is connecting directly to the HTTP server, then simply call
|
|
// this class's Connect method.
|
|
//
|
|
bool UseConnection(CkSocketW &connection, bool autoReconnect);
|
|
|
|
|
|
|
|
|
|
|
|
// END PUBLIC INTERFACE
|
|
|
|
|
|
};
|
|
#if !defined(__sun__) && !defined(__sun)
|
|
#pragma pack (pop)
|
|
#endif
|
|
|
|
#endif
|