mirror of
https://github.com/denoland/deno.git
synced 2024-11-21 15:04:11 -05:00
fix(http_client): Fix Deno.createHttpClient to accept poolIdleTimeout parameter (#21603)
Fixed the bug `Deno.createHttpClient` to accept `poolIdleTimeout` parameter. Fixes https://github.com/denoland/deno/issues/21546
This commit is contained in:
parent
4339a6c55d
commit
8ba828b41e
4 changed files with 19 additions and 11 deletions
1
Cargo.lock
generated
1
Cargo.lock
generated
|
@ -1261,6 +1261,7 @@ dependencies = [
|
||||||
"pin-project",
|
"pin-project",
|
||||||
"reqwest",
|
"reqwest",
|
||||||
"serde",
|
"serde",
|
||||||
|
"serde_json",
|
||||||
"tokio",
|
"tokio",
|
||||||
"tokio-util",
|
"tokio-util",
|
||||||
]
|
]
|
||||||
|
|
|
@ -1159,6 +1159,16 @@ Deno.test(
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Deno.test(
|
||||||
|
{ permissions: { net: true, read: true } },
|
||||||
|
function createHttpClientAcceptPoolIdleTimeout() {
|
||||||
|
const client = Deno.createHttpClient({
|
||||||
|
poolIdleTimeout: 1000,
|
||||||
|
});
|
||||||
|
client.close();
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
Deno.test(
|
Deno.test(
|
||||||
{ permissions: { net: true } },
|
{ permissions: { net: true } },
|
||||||
async function fetchCustomClientUserAgent(): Promise<
|
async function fetchCustomClientUserAgent(): Promise<
|
||||||
|
|
|
@ -23,5 +23,6 @@ http_v02.workspace = true
|
||||||
pin-project.workspace = true
|
pin-project.workspace = true
|
||||||
reqwest.workspace = true
|
reqwest.workspace = true
|
||||||
serde.workspace = true
|
serde.workspace = true
|
||||||
|
serde_json.workspace = true
|
||||||
tokio.workspace = true
|
tokio.workspace = true
|
||||||
tokio-util = { workspace = true, features = ["io"] }
|
tokio-util = { workspace = true, features = ["io"] }
|
||||||
|
|
|
@ -789,13 +789,6 @@ impl HttpClientResource {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Deserialize, Debug, Clone)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
pub enum PoolIdleTimeout {
|
|
||||||
State(bool),
|
|
||||||
Specify(u64),
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Deserialize, Debug)]
|
#[derive(Deserialize, Debug)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct CreateHttpClientArgs {
|
pub struct CreateHttpClientArgs {
|
||||||
|
@ -804,7 +797,7 @@ pub struct CreateHttpClientArgs {
|
||||||
cert_chain: Option<String>,
|
cert_chain: Option<String>,
|
||||||
private_key: Option<String>,
|
private_key: Option<String>,
|
||||||
pool_max_idle_per_host: Option<usize>,
|
pool_max_idle_per_host: Option<usize>,
|
||||||
pool_idle_timeout: Option<PoolIdleTimeout>,
|
pool_idle_timeout: Option<serde_json::Value>,
|
||||||
#[serde(default = "default_true")]
|
#[serde(default = "default_true")]
|
||||||
http1: bool,
|
http1: bool,
|
||||||
#[serde(default = "default_true")]
|
#[serde(default = "default_true")]
|
||||||
|
@ -867,9 +860,12 @@ where
|
||||||
pool_max_idle_per_host: args.pool_max_idle_per_host,
|
pool_max_idle_per_host: args.pool_max_idle_per_host,
|
||||||
pool_idle_timeout: args.pool_idle_timeout.and_then(
|
pool_idle_timeout: args.pool_idle_timeout.and_then(
|
||||||
|timeout| match timeout {
|
|timeout| match timeout {
|
||||||
PoolIdleTimeout::State(true) => None,
|
serde_json::Value::Bool(true) => None,
|
||||||
PoolIdleTimeout::State(false) => Some(None),
|
serde_json::Value::Bool(false) => Some(None),
|
||||||
PoolIdleTimeout::Specify(specify) => Some(Some(specify)),
|
serde_json::Value::Number(specify) => {
|
||||||
|
Some(Some(specify.as_u64().unwrap_or_default()))
|
||||||
|
}
|
||||||
|
_ => Some(None),
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
http1: args.http1,
|
http1: args.http1,
|
||||||
|
|
Loading…
Reference in a new issue