UNPKG

node-hitomi

Version:
54 lines (51 loc) 1.37 kB
import { HitomiError } from '../structures/error.js'; import { DEFAULT_HEADERS } from '../internal/constants.js'; function createContext(host, path, type, range) { return { host: host, path: path, type: type, options: { headers: Object.assign(range ? { range: 'bytes=' + range } : {}, DEFAULT_HEADERS), referrerPolicy: 'same-origin' } }; } async function request(host, path, type, range) { let context = createContext(host, path, type, range); context = await this.onRequest(context) || context; const response = await fetch('https://' + context.host + context.path, context.options); switch(response.status) { case 200: case 206: { switch(type) { case 0: { return new Uint8Array(await response.arrayBuffer()); } case 1: { return new DataView(await response.arrayBuffer()); } case 2: { return response.text(); } case 3: { return response.json(); } } } default: { throw HitomiError.unexpectedResponseStatus(context.host, context.path, response.status); } } } const encoder = new TextEncoder(); async function hashTerm(text) { return new Uint8Array(await crypto.subtle.digest('sha256', encoder.encode(text)), 0, 4); } const decoder = new TextDecoder(); function toString(buffer) { return decoder.decode(buffer); } export { createContext, hashTerm, request, toString };