mirror of
https://github.com/denoland/deno.git
synced 2025-09-28 13:14:48 +00:00
Rename cli/js2 to cli/rt (#6857)
This commit is contained in:
parent
090455936c
commit
ca4dcb36dd
63 changed files with 6 additions and 6 deletions
139
cli/rt/25_request.js
Normal file
139
cli/rt/25_request.js
Normal file
|
@ -0,0 +1,139 @@
|
|||
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
|
||||
|
||||
((window) => {
|
||||
const body = window.__bootstrap.body;
|
||||
const { ReadableStream } = window.__bootstrap.streams;
|
||||
|
||||
function byteUpperCase(s) {
|
||||
return String(s).replace(/[a-z]/g, function byteUpperCaseReplace(c) {
|
||||
return c.toUpperCase();
|
||||
});
|
||||
}
|
||||
|
||||
function normalizeMethod(m) {
|
||||
const u = byteUpperCase(m);
|
||||
if (
|
||||
u === "DELETE" ||
|
||||
u === "GET" ||
|
||||
u === "HEAD" ||
|
||||
u === "OPTIONS" ||
|
||||
u === "POST" ||
|
||||
u === "PUT"
|
||||
) {
|
||||
return u;
|
||||
}
|
||||
return m;
|
||||
}
|
||||
|
||||
class Request extends body.Body {
|
||||
constructor(input, init) {
|
||||
if (arguments.length < 1) {
|
||||
throw TypeError("Not enough arguments");
|
||||
}
|
||||
|
||||
if (!init) {
|
||||
init = {};
|
||||
}
|
||||
|
||||
let b;
|
||||
|
||||
// prefer body from init
|
||||
if (init.body) {
|
||||
b = init.body;
|
||||
} else if (input instanceof Request && input._bodySource) {
|
||||
if (input.bodyUsed) {
|
||||
throw TypeError(body.BodyUsedError);
|
||||
}
|
||||
b = input._bodySource;
|
||||
} else if (typeof input === "object" && "body" in input && input.body) {
|
||||
if (input.bodyUsed) {
|
||||
throw TypeError(body.BodyUsedError);
|
||||
}
|
||||
b = input.body;
|
||||
} else {
|
||||
b = "";
|
||||
}
|
||||
|
||||
let headers;
|
||||
|
||||
// prefer headers from init
|
||||
if (init.headers) {
|
||||
headers = new Headers(init.headers);
|
||||
} else if (input instanceof Request) {
|
||||
headers = input.headers;
|
||||
} else {
|
||||
headers = new Headers();
|
||||
}
|
||||
|
||||
const contentType = headers.get("content-type") || "";
|
||||
super(b, { contentType });
|
||||
this.headers = headers;
|
||||
|
||||
// readonly attribute ByteString method;
|
||||
this.method = "GET";
|
||||
|
||||
// readonly attribute USVString url;
|
||||
this.url = "";
|
||||
|
||||
// readonly attribute RequestCredentials credentials;
|
||||
this.credentials = "omit";
|
||||
|
||||
if (input instanceof Request) {
|
||||
if (input.bodyUsed) {
|
||||
throw TypeError(body.BodyUsedError);
|
||||
}
|
||||
this.method = input.method;
|
||||
this.url = input.url;
|
||||
this.headers = new Headers(input.headers);
|
||||
this.credentials = input.credentials;
|
||||
this._stream = input._stream;
|
||||
} else if (typeof input === "string") {
|
||||
this.url = input;
|
||||
}
|
||||
|
||||
if (init && "method" in init) {
|
||||
this.method = normalizeMethod(init.method);
|
||||
}
|
||||
|
||||
if (
|
||||
init &&
|
||||
"credentials" in init &&
|
||||
init.credentials &&
|
||||
["omit", "same-origin", "include"].indexOf(init.credentials) !== -1
|
||||
) {
|
||||
this.credentials = init.credentials;
|
||||
}
|
||||
}
|
||||
|
||||
clone() {
|
||||
if (this.bodyUsed) {
|
||||
throw TypeError(body.BodyUsedError);
|
||||
}
|
||||
|
||||
const iterators = this.headers.entries();
|
||||
const headersList = [];
|
||||
for (const header of iterators) {
|
||||
headersList.push(header);
|
||||
}
|
||||
|
||||
let body2 = this._bodySource;
|
||||
|
||||
if (this._bodySource instanceof ReadableStream) {
|
||||
const tees = this._bodySource.tee();
|
||||
this._stream = this._bodySource = tees[0];
|
||||
body2 = tees[1];
|
||||
}
|
||||
|
||||
return new Request(this.url, {
|
||||
body: body2,
|
||||
method: this.method,
|
||||
headers: new Headers(headersList),
|
||||
credentials: this.credentials,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
window.__bootstrap.request = {
|
||||
Request,
|
||||
};
|
||||
})(this);
|
Loading…
Add table
Add a link
Reference in a new issue