mirror of
https://github.com/rustdesk/rustdesk.git
synced 2026-03-27 07:01:00 +03:00
move rust-sciter in
This commit is contained in:
184
libs/rust-sciter/src/capi/screquest.rs
Normal file
184
libs/rust-sciter/src/capi/screquest.rs
Normal file
@@ -0,0 +1,184 @@
|
||||
/*! Handling all attributes of requests (GET/POST/PUT/DELETE) sent by
|
||||
[`Element.request()`](https://sciter.com/docs/content/sciter/Element.htm) and
|
||||
[`View.request()`](https://sciter.com/docs/content/sciter/View.htm)
|
||||
functions and other load requests.
|
||||
|
||||
*/
|
||||
|
||||
#![allow(non_camel_case_types, non_snake_case)]
|
||||
|
||||
use capi::sctypes::{UINT, LPVOID, LPCBYTE, LPCSTR, LPCWSTR};
|
||||
use capi::scdef::{LPCSTR_RECEIVER, LPCWSTR_RECEIVER, LPCBYTE_RECEIVER};
|
||||
pub use capi::scdef::RESOURCE_TYPE;
|
||||
|
||||
MAKE_HANDLE!(#[doc = "Request native handle."] HREQUEST, _HREQUEST);
|
||||
|
||||
#[repr(C)]
|
||||
#[derive(Debug, PartialEq)]
|
||||
/// Type of the result value for Sciter Request functions.
|
||||
pub enum REQUEST_RESULT {
|
||||
/// E.g. not enough memory.
|
||||
PANIC = -1,
|
||||
/// Success.
|
||||
OK = 0,
|
||||
/// Bad parameter.
|
||||
BAD_PARAM = 1,
|
||||
/// Operation failed, e.g. index out of bounds.
|
||||
FAILURE = 2,
|
||||
/// The platform does not support requested feature.
|
||||
NOTSUPPORTED = 3,
|
||||
}
|
||||
|
||||
impl std::error::Error for REQUEST_RESULT {}
|
||||
|
||||
impl std::fmt::Display for REQUEST_RESULT {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
|
||||
write!(f, "{:?}", self)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#[repr(C)]
|
||||
#[derive(Debug, PartialEq)]
|
||||
/// Request methods.
|
||||
pub enum REQUEST_METHOD {
|
||||
/// Sends a plain HTTP GET request.
|
||||
///
|
||||
/// Url-encoded params (if any) are appended to the url in order to form the request.
|
||||
GET = 1,
|
||||
/// Sends an HTTP POST request.
|
||||
///
|
||||
/// The params are serialized as `Content-Type: application/x-www-form-urlencoded;charset=utf-8`.
|
||||
POST = 2,
|
||||
/// Sends an HTTP PUT request.
|
||||
///
|
||||
/// The params are serialized as `Content-Type: multipart/form-data; boundary= ...`.
|
||||
PUT = 3,
|
||||
/// Sends an HTTP DELETE request.
|
||||
DELETE = 4,
|
||||
}
|
||||
|
||||
#[repr(C)]
|
||||
#[derive(Debug, PartialEq)]
|
||||
/// HTTP methods for the [`Element::send_request`](../dom/struct.Element.html#method.send_request).
|
||||
pub enum REQUEST_TYPE {
|
||||
/// Asynchronous GET.
|
||||
AsyncGet,
|
||||
/// Asynchronous POST.
|
||||
AsyncPost,
|
||||
/// Synchronous GET.
|
||||
Get,
|
||||
/// Synchronous POST.
|
||||
Post,
|
||||
}
|
||||
|
||||
|
||||
#[repr(C)]
|
||||
#[derive(Debug, PartialEq)]
|
||||
/// Completion state of a request.
|
||||
pub enum REQUEST_STATE {
|
||||
/// The request is pending.
|
||||
PENDING = 0,
|
||||
/// Completed successfully.
|
||||
SUCCESS = 1,
|
||||
/// Completed with failure.
|
||||
FAILURE = 2,
|
||||
}
|
||||
|
||||
#[repr(C)]
|
||||
#[derive(Debug)]
|
||||
pub struct REQUEST_PARAM {
|
||||
pub name: LPCWSTR,
|
||||
pub value: LPCWSTR,
|
||||
}
|
||||
|
||||
|
||||
#[repr(C)]
|
||||
#[allow(missing_docs)]
|
||||
pub struct SciterRequestAPI
|
||||
{
|
||||
/// a.k.a AddRef()
|
||||
pub RequestUse: extern "system" fn (rq: HREQUEST) -> REQUEST_RESULT,
|
||||
|
||||
/// a.k.a Release()
|
||||
pub RequestUnUse: extern "system" fn (rq: HREQUEST) -> REQUEST_RESULT,
|
||||
|
||||
/// get requested URL
|
||||
pub RequestUrl: extern "system" fn (rq: HREQUEST, rcv: LPCSTR_RECEIVER, rcv_param: LPVOID) -> REQUEST_RESULT,
|
||||
|
||||
/// get real, content URL (after possible redirection)
|
||||
pub RequestContentUrl: extern "system" fn (rq: HREQUEST, rcv: LPCSTR_RECEIVER, rcv_param: LPVOID) -> REQUEST_RESULT,
|
||||
|
||||
/// get requested data type
|
||||
pub RequestGetRequestType: extern "system" fn (rq: HREQUEST, pType: &mut REQUEST_METHOD) -> REQUEST_RESULT,
|
||||
|
||||
/// get requested data type
|
||||
pub RequestGetRequestedDataType: extern "system" fn (rq: HREQUEST, pData: &mut RESOURCE_TYPE) -> REQUEST_RESULT,
|
||||
|
||||
/// get received data type, string, mime type
|
||||
pub RequestGetReceivedDataType: extern "system" fn (rq: HREQUEST, rcv: LPCSTR_RECEIVER, rcv_param: LPVOID) -> REQUEST_RESULT,
|
||||
|
||||
|
||||
/// get number of request parameters passed
|
||||
pub RequestGetNumberOfParameters: extern "system" fn (rq: HREQUEST, pNumber: &mut UINT) -> REQUEST_RESULT,
|
||||
|
||||
/// get nth request parameter name
|
||||
pub RequestGetNthParameterName: extern "system" fn (rq: HREQUEST, n: UINT, rcv: LPCWSTR_RECEIVER, rcv_param: LPVOID) -> REQUEST_RESULT,
|
||||
|
||||
/// get nth request parameter value
|
||||
pub RequestGetNthParameterValue: extern "system" fn (rq: HREQUEST, n: UINT, rcv: LPCWSTR_RECEIVER, rcv_param: LPVOID) -> REQUEST_RESULT,
|
||||
|
||||
/// get request times , ended - started = milliseconds to get the requst
|
||||
pub RequestGetTimes: extern "system" fn (rq: HREQUEST, pStarted: &mut UINT, pEnded: &mut UINT) -> REQUEST_RESULT,
|
||||
|
||||
/// get number of request headers
|
||||
pub RequestGetNumberOfRqHeaders: extern "system" fn (rq: HREQUEST, pNumber: &mut UINT) -> REQUEST_RESULT,
|
||||
|
||||
/// get nth request header name
|
||||
pub RequestGetNthRqHeaderName: extern "system" fn (rq: HREQUEST, n: UINT, rcv: LPCWSTR_RECEIVER, rcv_param: LPVOID) -> REQUEST_RESULT,
|
||||
|
||||
/// get nth request header value
|
||||
pub RequestGetNthRqHeaderValue: extern "system" fn (rq: HREQUEST, n: UINT, rcv: LPCWSTR_RECEIVER, rcv_param: LPVOID) -> REQUEST_RESULT,
|
||||
|
||||
/// get number of response headers
|
||||
pub RequestGetNumberOfRspHeaders: extern "system" fn (rq: HREQUEST, pNumber: &mut UINT) -> REQUEST_RESULT,
|
||||
|
||||
/// get nth response header name
|
||||
pub RequestGetNthRspHeaderName: extern "system" fn (rq: HREQUEST, n: UINT, rcv: LPCWSTR_RECEIVER, rcv_param: LPVOID) -> REQUEST_RESULT,
|
||||
|
||||
/// get nth response header value
|
||||
pub RequestGetNthRspHeaderValue: extern "system" fn (rq: HREQUEST, n: UINT, rcv: LPCWSTR_RECEIVER, rcv_param: LPVOID) -> REQUEST_RESULT,
|
||||
|
||||
/// get completion status (CompletionStatus - http response code : 200, 404, etc.)
|
||||
pub RequestGetCompletionStatus: extern "system" fn (rq: HREQUEST, pState: &mut REQUEST_STATE, pCompletionStatus: &mut UINT) -> REQUEST_RESULT,
|
||||
|
||||
/// get proxy host
|
||||
pub RequestGetProxyHost: extern "system" fn (rq: HREQUEST, rcv: LPCSTR_RECEIVER, rcv_param: LPVOID) -> REQUEST_RESULT,
|
||||
|
||||
/// get proxy port
|
||||
pub RequestGetProxyPort: extern "system" fn (rq: HREQUEST, pPort: &mut UINT) -> REQUEST_RESULT,
|
||||
|
||||
/// mark reequest as complete with status and data
|
||||
pub RequestSetSucceeded: extern "system" fn (rq: HREQUEST, status: UINT, dataOrNull: LPCBYTE, dataLength: UINT) -> REQUEST_RESULT,
|
||||
|
||||
/// mark reequest as complete with failure and optional data
|
||||
pub RequestSetFailed: extern "system" fn (rq: HREQUEST, status: UINT, dataOrNull: LPCBYTE, dataLength: UINT) -> REQUEST_RESULT,
|
||||
|
||||
/// append received data chunk
|
||||
pub RequestAppendDataChunk: extern "system" fn (rq: HREQUEST, data: LPCBYTE, dataLength: UINT) -> REQUEST_RESULT,
|
||||
|
||||
/// set request header (single item)
|
||||
pub RequestSetRqHeader: extern "system" fn (rq: HREQUEST, name: LPCWSTR, value: LPCWSTR) -> REQUEST_RESULT,
|
||||
|
||||
/// set respone header (single item)
|
||||
pub RequestSetRspHeader: extern "system" fn (rq: HREQUEST, name: LPCWSTR, value: LPCWSTR) -> REQUEST_RESULT,
|
||||
|
||||
/// set received data type, string, mime type
|
||||
pub RequestSetReceivedDataType: extern "system" fn (rq: HREQUEST, _type: LPCSTR) -> REQUEST_RESULT,
|
||||
|
||||
/// set received data encoding, string
|
||||
pub RequestSetReceivedDataEncoding: extern "system" fn (rq: HREQUEST, encoding: LPCSTR) -> REQUEST_RESULT,
|
||||
|
||||
/// get received (so far) data
|
||||
pub RequestGetData: extern "system" fn (rq: HREQUEST, rcv: LPCBYTE_RECEIVER, rcv_param: LPVOID) -> REQUEST_RESULT,
|
||||
}
|
||||
Reference in New Issue
Block a user