UNPKG

@iotize/tap

Version:

IoTize Device client for Javascript

86 lines 7.41 kB
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; import { ServiceCallRunner, TapError, TapResponse, } from '@iotize/tap'; import { MultiRequestFrame } from '../generated/models'; import { InterfaceService } from '../generated/service'; // type ExecuteMultipleCallsParameterType<BodyType, ReturnType> = ExecuteMutlipleCallItem<>[]; const TAP_REQUEST_FRAME_HEADER_LENGTH = 7; // TODO generated instead function toBodyDecoder(input) { if (typeof input === 'function') { return { decode: input, }; } else { return input; } } function toCall(serviceCall) { if ('expectedResponseStatus' in serviceCall) { return serviceCall.call; } else { return serviceCall; } } InterfaceService.prototype.executeMultipleCalls = function (calls, defaultExpectedResponseStatus = MultiRequestFrame .ExpectedResponseStatus.ANYTHING) { return __awaiter(this, void 0, void 0, function* () { const decoders = calls.map((serviceCall) => toBodyDecoder(toCall(serviceCall).responseBodyDecoder)); const multiRequestRequests = createMultiRequestItems(calls, defaultExpectedResponseStatus); const multiRequestFrame = { requests: multiRequestRequests.map((item) => item.requestItem), }; const response = yield this.executeMultiRequestFrame(multiRequestFrame); const body = response.body(); if (body.responses.length !== calls.length) { throw new Error(`API sent ${calls.length} request(s) but tap responded with ${body.responses.length} response(s).`); } const responses = body.responses.map((tapResponseItem, index) => { const response = new TapResponse(tapResponseItem.response); const decoder = decoders[index]; if (decoder) { response.setBodyDecoder(decoder); } response.setRequest(multiRequestRequests[index].requestItem.request); if (!response.isSuccessful()) { response.setError(TapError.reponseStatusError(response, toCall(calls[index]))); } return response; }); return responses; }); }; export function createMultiRequestItems(calls, defaultExpectedResponseStatus = MultiRequestFrame .ExpectedResponseStatus.ANYTHING) { return calls.map((serviceCall) => { let call; let expectedResponseStatus; if ('expectedResponseStatus' in serviceCall) { call = serviceCall.call; expectedResponseStatus = serviceCall.expectedResponseStatus; } else { call = serviceCall; expectedResponseStatus = defaultExpectedResponseStatus; } const request = ServiceCallRunner.toTapRequest(call); const responseBodyDecoder = ServiceCallRunner.resolveResponseBodyDecoder(call); return { requestItem: { expectedResponseStatus, request, requestLen: request.payload.length + TAP_REQUEST_FRAME_HEADER_LENGTH, }, responseBodyDecoder, }; }); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktcmVxdWVzdC1pbnRlcmZhY2Utc2VydmljZS1leHRlbnNpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zZXJ2aWNlL2ltcGwvaW50ZXJmYWNlL3NyYy9saWIvY3VzdG9tL211bHRpLXJlcXVlc3QtaW50ZXJmYWNlLXNlcnZpY2UtZXh0ZW5zaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUNBLE9BQU8sRUFDTCxpQkFBaUIsRUFFakIsUUFBUSxFQUNSLFdBQVcsR0FDWixNQUFNLGFBQWEsQ0FBQztBQUdyQixPQUFPLEVBQUUsaUJBQWlCLEVBQXNCLE1BQU0scUJBQXFCLENBQUM7QUFDNUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFReEQsOEZBQThGO0FBRTlGLE1BQU0sK0JBQStCLEdBQUcsQ0FBQyxDQUFDLENBQUMseUJBQXlCO0FBZ0dwRSxTQUFTLGFBQWEsQ0FDcEIsS0FBNkQ7SUFFN0QsSUFBSSxPQUFPLEtBQUssS0FBSyxVQUFVLEVBQUU7UUFDL0IsT0FBTztZQUNMLE1BQU0sRUFBRSxLQUFLO1NBQ2QsQ0FBQztLQUNIO1NBQU07UUFDTCxPQUFPLEtBQUssQ0FBQztLQUNkO0FBQ0gsQ0FBQztBQUVELFNBQVMsTUFBTSxDQUNiLFdBQTBEO0lBRTFELElBQUksd0JBQXdCLElBQUksV0FBVyxFQUFFO1FBQzNDLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQztLQUN6QjtTQUFNO1FBQ0wsT0FBTyxXQUFXLENBQUM7S0FDcEI7QUFDSCxDQUFDO0FBRUQsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLG9CQUFvQixHQUFHLFVBQ2hELEtBQTBDLEVBQzFDLGdDQUEwRSxpQkFBaUI7S0FDeEYsc0JBQXNCLENBQUMsUUFBUTs7UUFFbEMsTUFBTSxRQUFRLEdBQXFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUMz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