UNPKG

@typed/http

Version:

HTTP requests for node and browsers

70 lines 2.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createJsonResponse = exports.createHttpResponse = exports.createFailedResponse = exports.createSuccessfulResponse = exports.createTestHttpEnv = void 0; const disposable_1 = require("@typed/disposable"); const either_1 = require("@typed/either"); const logic_1 = require("@typed/logic"); /** * Create a test-friendly http environment * @param testHttp :: (url -> HttpOptions -> Either Error HttpResponse) * @param timer :: Timer */ function createTestHttpEnv(testHttp) { const responses = []; function http(url, options, callbacks) { const { success, failure } = callbacks; function getResponse() { const disposable = disposable_1.Disposable.lazy(); function onResponse(response) { responses.push(response); if (either_1.isLeft(response)) { return disposable.addDisposable(failure(either_1.fromLeft(response))); } disposable.addDisposable(success(either_1.fromRight(response))); } const response = testHttp(url, options); if (logic_1.isPromiseLike(response)) { response.then(onResponse); } else { onResponse(response); } return disposable; } return getResponse(); } return { http, getResponses: () => responses.slice(), }; } exports.createTestHttpEnv = createTestHttpEnv; function createSuccessfulResponse(options = {}) { return either_1.Right.of(createHttpResponse(options)); } exports.createSuccessfulResponse = createSuccessfulResponse; function createFailedResponse(error) { return either_1.Left.of(error); } exports.createFailedResponse = createFailedResponse; function createHttpResponse(options = {}) { const response = { status: 200, statusText: 'OK', responseText: '', headers: {}, ...options, }; return response; } exports.createHttpResponse = createHttpResponse; function createJsonResponse(jsonReadyValue, options = {}) { const responseText = JSON.stringify(jsonReadyValue); return createHttpResponse({ ...options, headers: { 'Content-Type': 'application/json', ...options.headers }, responseText, }); } exports.createJsonResponse = createJsonResponse; //# sourceMappingURL=createTestHttpEnv.js.map