summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYoshiya Hinosawa <stibium121@gmail.com>2019-08-17 07:20:04 +0900
committerRyan Dahl <ry@tinyclouds.org>2019-08-16 18:20:04 -0400
commit9aa9aafbab934b483977683e1ee430abb277833f (patch)
tree61c14f8ee74a00416e83e075897cd33c927bee39
parent81f809f2a675ff4ff7f93231ca87a18cb5b4628e (diff)
fix: set response.url (#2782)
-rw-r--r--js/fetch.ts11
-rw-r--r--js/fetch_test.ts6
2 files changed, 15 insertions, 2 deletions
diff --git a/js/fetch.ts b/js/fetch.ts
index 9853b2194..3911c63d0 100644
--- a/js/fetch.ts
+++ b/js/fetch.ts
@@ -244,7 +244,6 @@ class Body implements domTypes.Body, domTypes.ReadableStream, io.ReadCloser {
}
export class Response implements domTypes.Response {
- readonly url: string = "";
statusText = "FIXME"; // TODO
readonly type = "basic"; // TODO
readonly redirected: boolean;
@@ -254,6 +253,7 @@ export class Response implements domTypes.Response {
readonly body: Body;
constructor(
+ readonly url: string,
readonly status: number,
headersList: Array<[string, string]>,
rid: number,
@@ -312,6 +312,7 @@ export class Response implements domTypes.Response {
}
return new Response(
+ this.url,
this.status,
headersList,
-1,
@@ -458,7 +459,13 @@ export async function fetch(
const headersList = deserializeHeaderFields(header);
- const response = new Response(status, headersList, bodyRid, redirected);
+ const response = new Response(
+ url,
+ status,
+ headersList,
+ bodyRid,
+ redirected
+ );
if ([301, 302, 303, 307, 308].includes(response.status)) {
// We're in a redirect status
switch ((init && init.redirect) || "follow") {
diff --git a/js/fetch_test.ts b/js/fetch_test.ts
index 2020716bf..1b59e068a 100644
--- a/js/fetch_test.ts
+++ b/js/fetch_test.ts
@@ -18,6 +18,11 @@ test(async function fetchPerm(): Promise<void> {
assertEquals(err.name, "PermissionDenied");
});
+testPerm({ net: true }, async function fetchUrl(): Promise<void> {
+ const response = await fetch("http://localhost:4545/package.json");
+ assertEquals(response.url, "http://localhost:4545/package.json");
+});
+
testPerm({ net: true }, async function fetchHeaders(): Promise<void> {
const response = await fetch("http://localhost:4545/package.json");
const headers = response.headers;
@@ -102,6 +107,7 @@ testPerm(
testPerm({ net: true }, async function fetchWithRedirection(): Promise<void> {
const response = await fetch("http://localhost:4546/"); // will redirect to http://localhost:4545/
assertEquals(response.status, 200);
+ assertEquals(response.url, "http://localhost:4545/");
const body = await response.text();
assert(body.includes("<title>Directory listing for /</title>"));
});