@iotize/tap
Version:
IoTize Device client for Javascript
86 lines • 7.41 kB
JavaScript
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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