mirror of
https://github.com/denoland/deno.git
synced 2024-12-26 00:59:24 -05:00
feat: Set user agent for http client (#2916)
This commit is contained in:
parent
a4e1d7d2e7
commit
85c51404ae
3 changed files with 22 additions and 0 deletions
|
@ -1,11 +1,14 @@
|
|||
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
|
||||
use crate::deno_error;
|
||||
use crate::deno_error::DenoError;
|
||||
use crate::version;
|
||||
use deno::ErrBox;
|
||||
use futures::{future, Future};
|
||||
use reqwest;
|
||||
use reqwest::header::HeaderMap;
|
||||
use reqwest::header::CONTENT_TYPE;
|
||||
use reqwest::header::LOCATION;
|
||||
use reqwest::header::USER_AGENT;
|
||||
use reqwest::r#async::Client;
|
||||
use reqwest::RedirectPolicy;
|
||||
use url::Url;
|
||||
|
@ -13,8 +16,14 @@ use url::Url;
|
|||
/// Create new instance of async reqwest::Client. This client supports
|
||||
/// proxies and doesn't follow redirects.
|
||||
pub fn get_client() -> Client {
|
||||
let mut headers = HeaderMap::new();
|
||||
headers.insert(
|
||||
USER_AGENT,
|
||||
format!("Deno/{}", version::DENO).parse().unwrap(),
|
||||
);
|
||||
Client::builder()
|
||||
.redirect(RedirectPolicy::none())
|
||||
.default_headers(headers)
|
||||
.use_sys_proxy()
|
||||
.build()
|
||||
.unwrap()
|
||||
|
|
|
@ -220,6 +220,16 @@ testPerm({ net: true }, async function fetchInitBlobBody(): Promise<void> {
|
|||
assert(response.headers.get("content-type").startsWith("text/javascript"));
|
||||
});
|
||||
|
||||
testPerm({ net: true }, async function fetchUserAgent(): Promise<void> {
|
||||
const data = "Hello World";
|
||||
const response = await fetch("http://localhost:4545/echo_server", {
|
||||
method: "POST",
|
||||
body: new TextEncoder().encode(data)
|
||||
});
|
||||
assertEquals(response.headers.get("user-agent"), `Deno/${Deno.version.deno}`);
|
||||
await response.text();
|
||||
});
|
||||
|
||||
// TODO(ry) The following tests work but are flaky. There's a race condition
|
||||
// somewhere. Here is what one of these flaky failures looks like:
|
||||
//
|
||||
|
|
|
@ -61,6 +61,9 @@ class ContentTypeHandler(QuietSimpleHTTPRequestHandler):
|
|||
if self.headers.has_key('content-type'):
|
||||
self.send_header('content-type',
|
||||
self.headers.getheader('content-type'))
|
||||
if self.headers.has_key('user-agent'):
|
||||
self.send_header('user-agent',
|
||||
self.headers.getheader('user-agent'))
|
||||
self.end_headers()
|
||||
data_string = self.rfile.read(int(self.headers['Content-Length']))
|
||||
self.wfile.write(bytes(data_string))
|
||||
|
|
Loading…
Reference in a new issue