summaryrefslogtreecommitdiff
path: root/ext/fetch
diff options
context:
space:
mode:
Diffstat (limited to 'ext/fetch')
-rw-r--r--ext/fetch/22_http_client.js7
-rw-r--r--ext/fetch/26_fetch.js27
-rw-r--r--ext/fetch/lib.rs31
3 files changed, 35 insertions, 30 deletions
diff --git a/ext/fetch/22_http_client.js b/ext/fetch/22_http_client.js
index 15690b7d4..f0c2394c3 100644
--- a/ext/fetch/22_http_client.js
+++ b/ext/fetch/22_http_client.js
@@ -20,7 +20,12 @@
*/
function createHttpClient(options) {
options.caCerts ??= [];
- return new HttpClient(core.opSync("op_fetch_custom_client", options));
+ return new HttpClient(
+ core.opSync(
+ "op_fetch_custom_client",
+ options,
+ ),
+ );
}
class HttpClient {
diff --git a/ext/fetch/26_fetch.js b/ext/fetch/26_fetch.js
index be7c48dda..7ef9bdaf7 100644
--- a/ext/fetch/26_fetch.js
+++ b/ext/fetch/26_fetch.js
@@ -67,8 +67,17 @@
* @param {Uint8Array | null} body
* @returns {{ requestRid: number, requestBodyRid: number | null }}
*/
- function opFetch(args, body) {
- return core.opSync("op_fetch", args, body);
+ function opFetch(method, url, headers, clientRid, hasBody, bodyLength, body) {
+ return core.opSync(
+ "op_fetch",
+ method,
+ url,
+ headers,
+ clientRid,
+ hasBody,
+ bodyLength,
+ body,
+ );
}
/**
@@ -210,14 +219,12 @@
}
const { requestRid, requestBodyRid, cancelHandleRid } = opFetch(
- {
- method: req.method,
- url: req.currentUrl(),
- headers: req.headerList,
- clientRid: req.clientRid,
- hasBody: reqBody !== null,
- bodyLength: req.body?.length,
- },
+ req.method,
+ req.currentUrl(),
+ req.headerList,
+ req.clientRid,
+ reqBody !== null,
+ req.body?.length,
ObjectPrototypeIsPrototypeOf(Uint8ArrayPrototype, reqBody)
? reqBody
: null,
diff --git a/ext/fetch/lib.rs b/ext/fetch/lib.rs
index def823d8f..232e6964e 100644
--- a/ext/fetch/lib.rs
+++ b/ext/fetch/lib.rs
@@ -174,18 +174,6 @@ pub trait FetchPermissions {
pub fn get_declaration() -> PathBuf {
PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("lib.deno_fetch.d.ts")
}
-
-#[derive(Deserialize)]
-#[serde(rename_all = "camelCase")]
-pub struct FetchArgs {
- method: ByteString,
- url: String,
- headers: Vec<(ByteString, ByteString)>,
- client_rid: Option<u32>,
- has_body: bool,
- body_length: Option<u64>,
-}
-
#[derive(Serialize)]
#[serde(rename_all = "camelCase")]
pub struct FetchReturn {
@@ -197,13 +185,18 @@ pub struct FetchReturn {
#[op]
pub fn op_fetch<FP>(
state: &mut OpState,
- args: FetchArgs,
+ method: ByteString,
+ url: String,
+ headers: Vec<(ByteString, ByteString)>,
+ client_rid: Option<u32>,
+ has_body: bool,
+ body_length: Option<u64>,
data: Option<ZeroCopyBuf>,
) -> Result<FetchReturn, AnyError>
where
FP: FetchPermissions + 'static,
{
- let client = if let Some(rid) = args.client_rid {
+ let client = if let Some(rid) = client_rid {
let r = state.resource_table.get::<HttpClientResource>(rid)?;
r.client.clone()
} else {
@@ -211,8 +204,8 @@ where
client.clone()
};
- let method = Method::from_bytes(&args.method)?;
- let url = Url::parse(&args.url)?;
+ let method = Method::from_bytes(&method)?;
+ let url = Url::parse(&url)?;
// Check scheme before asking for net permission
let scheme = url.scheme();
@@ -251,7 +244,7 @@ where
let mut request = client.request(method.clone(), url);
- let request_body_rid = if args.has_body {
+ let request_body_rid = if has_body {
match data {
None => {
// If no body is passed, we return a writer for streaming the body.
@@ -259,7 +252,7 @@ where
// If the size of the body is known, we include a content-length
// header explicitly.
- if let Some(body_size) = args.body_length {
+ if let Some(body_size) = body_length {
request =
request.header(CONTENT_LENGTH, HeaderValue::from(body_size))
}
@@ -289,7 +282,7 @@ where
None
};
- for (key, value) in args.headers {
+ for (key, value) in headers {
let name = HeaderName::from_bytes(&key)
.map_err(|err| type_error(err.to_string()))?;
let v = HeaderValue::from_bytes(&value)