UNPKG

@ui5/task-adaptation

Version:

Custom task for ui5-builder which allows building UI5 Flexibility Adaptation Projects for SAP BTP, Cloud Foundry environment

71 lines 2.73 kB
import AbapProvider from "./abapProvider.js"; import { getLogger } from "@ui5/logger"; import { unzipZipEntries } from "../util/zipUtil.js"; const log = getLogger("@ui5/task-adaptation::AbapRepoManager"); const REQUEST_OPTIONS_XML = { responseType: "text", headers: { "Accept": "text/html,application/xhtml+xml,application/xml" } }; const REQUEST_OPTIONS_JSON = { headers: { "Accept": "application/json" } }; export default class AbapRepoManager { configuration; abapProvider; constructor(configuration, abapProvider) { this.configuration = configuration; this.abapProvider = abapProvider ? abapProvider : new AbapProvider(); } async getAnnotationMetadata(uri) { const provider = await this.abapProvider.get(this.configuration); const response = await provider.head(uri); return { changedOn: response.data.modified }; } async downloadAnnotationFile(uri) { const provider = await this.abapProvider.get(this.configuration); const response = await provider.get(uri, { headers: REQUEST_OPTIONS_XML.headers }); return new Map([["annotation.xml", response.data]]); } async getMetadata(id) { const provider = await this.abapProvider.get(this.configuration); const appIndex = provider.getAppIndex(); const response = await appIndex.get("/ui5_app_info_json", { params: { id }, headers: REQUEST_OPTIONS_JSON.headers }); const data = JSON.parse(response.data); if (!data || !data[id]) { log.warn(`UI5AppInfoJson request doesn't contain cache buster token for sap.app/id '${id}'. Fallback to download.`); } return { changedOn: data && data[id] && data[id].url, id }; } async downloadBaseAppFiles() { const { destination, appName } = this.configuration; const encodedAppName = encodeURIComponent(appName); const provider = await this.abapProvider.get(this.configuration); const ui5Repo = provider.getUi5AbapRepository(); const response = await ui5Repo.get(`/Repositories('${encodedAppName}')`, { params: { DownloadFiles: "RUNTIME", CodePage: "UTF8", "$format": "json" } }); const data = JSON.parse(response.data); if (data.d?.ZipArchive.length > 0) { const buffer = Buffer.from(data.d.ZipArchive, "base64"); return unzipZipEntries(buffer); } throw new Error(`App '${appName}' from '${destination}' doesn't contain files`); } } //# sourceMappingURL=abapRepoManager.js.map