summaryrefslogtreecommitdiff
path: root/cli/js/ops/fetch.ts
blob: e349b9de5930c377dac62b822113d9c5255be4ff (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.

import { sendAsync } from "./dispatch_json.ts";

interface FetchRequest {
  url: string;
  method: string | null;
  headers: Array<[string, string]>;
}

export interface FetchResponse {
  bodyRid: number;
  status: number;
  statusText: string;
  headers: Array<[string, string]>;
}

export function fetch(
  args: FetchRequest,
  body?: ArrayBufferView,
): Promise<FetchResponse> {
  let zeroCopy;
  if (body != null) {
    zeroCopy = new Uint8Array(body.buffer, body.byteOffset, body.byteLength);
  }

  return sendAsync("op_fetch", args, ...(zeroCopy ? [zeroCopy] : []));
}