UNPKG

@itwin/imodels-client-management

Version:

iModels API client wrapper for applications that manage iModels.

73 lines 3.9 kB
/*--------------------------------------------------------------------------------------------- * Copyright (c) Bentley Systems, Incorporated. All rights reserved. * See LICENSE.md in the project root for license terms and full copyright notice. *--------------------------------------------------------------------------------------------*/ import { EntityListIteratorImpl, OperationsBase, } from "../../base/internal"; export class ChangesetExtendedDataOperations extends 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 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); } } } //# sourceMappingURL=ChangesetExtendedDataOperations.js.map