@itwin/imodels-client-management
Version:
iModels API client wrapper for applications that manage iModels.
77 lines • 4.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ChangesetExtendedDataOperations = void 0;
/*---------------------------------------------------------------------------------------------
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
* See LICENSE.md in the project root for license terms and full copyright notice.
*--------------------------------------------------------------------------------------------*/
const internal_1 = require("../../base/internal");
class ChangesetExtendedDataOperations extends internal_1.OperationsBase {
constructor(options) {
super(options);
}
/**
* Gets Changesets Extended Data for a specific iModel. Wraps the
* {@link https://developer.bentley.com/apis/imodels-v2/operations/get-imodel-changesets-extended-data/ Get iModel Changesets Extended Data}
* operation from iModels API.
* @param {GetChangesetExtendedDataListParams} params parameters for this operation. See {@link GetChangesetExtendedDataListParams}.
* @returns {EntityListIterator<ChangesetExtendedData>} iterator for Changeset Extended Data list. See {@link EntityListIterator}.
*/
getList(params) {
const entityCollectionAccessor = (response) => {
const apiResponse = response.body.extendedData;
const mappedChangesetExtendedData = apiResponse.map((extendedData) => this.convertToChangesetExtendedData(extendedData));
return mappedChangesetExtendedData;
};
return new internal_1.EntityListIteratorImpl(async () => this.getEntityCollectionPage({
authorization: params.authorization,
url: this._options.urlFormatter.getChangesetExtendedDataListUrl({
iModelId: params.iModelId,
urlParams: params.urlParams,
}),
entityCollectionAccessor,
headers: params.headers,
}));
}
/**
* Gets a single Changeset Extended Data identified by either Changeset index or id. Wraps the
* {@link https://developer.bentley.com/apis/imodels-v2/operations/get-imodel-changeset-extended-data-details/ Get iModel Changeset Extended Data}
* operation from iModels API.
* @param {GetSingleChangesetExtendedDataParams} params parameters for this operation. See {@link GetSingleChangesetExtendedDataParams}.
* @returns {Promise<ChangesetExtendedData>} a Changeset Extended Data with the specified changeset id or index. See {@link ChangesetExtendedData}.
*/
async getSingle(params) {
const { authorization, iModelId, headers, ...changesetIdOrIndex } = params;
const response = await this.sendGetRequest({
authorization,
url: this._options.urlFormatter.getSingleChangesetExtendedDataUrl({
iModelId,
...changesetIdOrIndex,
}),
headers,
});
return this.convertToChangesetExtendedData(response.body.extendedData);
}
convertToChangesetExtendedData(changesetExtendedDataApiResponse) {
return {
changesetId: changesetExtendedDataApiResponse.changesetId,
changesetIndex: changesetExtendedDataApiResponse.changesetIndex,
data: this.convertBase64StringToObject(changesetExtendedDataApiResponse.data),
};
}
convertBase64StringToObject(input) {
if (typeof window !== "undefined") {
const binString = atob(input);
const bytes = Uint8Array.from(binString, (m) => m.charCodeAt(0));
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
return JSON.parse(new TextDecoder().decode(bytes));
}
else {
const decodedString = Buffer.from(input, "base64").toString("utf8");
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
return JSON.parse(decodedString);
}
}
}
exports.ChangesetExtendedDataOperations = ChangesetExtendedDataOperations;
//# sourceMappingURL=ChangesetExtendedDataOperations.js.map