UNPKG

@softvision/webpdf-wsclient-typescript

Version:

A simplified and optimized API client library for the webPDF server

316 lines 17.6 kB
"use strict"; 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()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.AbstractDocumentManager = void 0; const generated_sources_1 = require("../../../generated-sources"); const connection_1 = require("../../connection"); const exception_1 = require("../../../exception"); const DataFormat_1 = require("../../DataFormat"); const configuration_1 = require("../../../configuration"); class AbstractDocumentManager { constructor(session) { this.session = session; this.documentMap = new Map(); this.documentHistoryActive = false; } getSession() { return this.session; } synchronizeDocument(documentFile) { return __awaiter(this, void 0, void 0, function* () { if (documentFile.documentId === "") { throw new exception_1.ClientResultException(exception_1.WsclientErrors.INVALID_DOCUMENT); } let synchronizedDocument; if (this.containsDocument(documentFile.documentId)) { synchronizedDocument = this.getDocument(documentFile.documentId); this.accessInternalState(synchronizedDocument).setDocumentFile(documentFile); } else { synchronizedDocument = yield this.createDocumentByFile(documentFile); } if (this.isDocumentHistoryActive()) { yield this.synchronizeDocumentHistory(documentFile.documentId); } return synchronizedDocument; }); } synchronize(fileList) { return __awaiter(this, void 0, void 0, function* () { let documentFileList; if (typeof fileList === "undefined") { let request = yield connection_1.HttpRestRequest.createRequest(this.session) .buildRequest(connection_1.HttpMethod.GET, this.session.getURL("documents/list")); let requestData = yield request.executeRequest(); documentFileList = requestData.map((data) => generated_sources_1.DocumentFile.fromJson(data)); } else { documentFileList = fileList; } for (let documentFile of documentFileList) { yield this.synchronizeDocument(documentFile); } let currentDocumentFileList = this.getDocuments(); for (let documentFile of currentDocumentFileList) { if (documentFileList.find((compare) => compare.documentId === documentFile.getDocumentId())) { continue; } this.documentMap.delete(documentFile.getDocumentId()); } return this.getDocuments(); }); } getDocument(documentId) { if (!this.containsDocument(documentId)) { throw new exception_1.ClientResultException(exception_1.WsclientErrors.INVALID_DOCUMENT); } return this.documentMap.get(documentId); } getDocuments() { return Array.from(this.documentMap.values()); } containsDocument(documentId) { return this.documentMap.has(documentId); } downloadDocument(documentId, options) { return __awaiter(this, void 0, void 0, function* () { if (!this.containsDocument(documentId)) { throw new exception_1.ClientResultException(exception_1.WsclientErrors.INVALID_DOCUMENT); } let request = yield connection_1.HttpRestRequest.createRequest(this.session) .setAcceptHeader(DataFormat_1.DataFormats.OCTET_STREAM.getMimeType()) .setOnDownloadProgress(options === null || options === void 0 ? void 0 : options.onProgress) .setAbortSignal(options === null || options === void 0 ? void 0 : options.abortSignal) .buildRequest(connection_1.HttpMethod.GET, this.session.getURL("documents/" + documentId)); return yield request.executeRequest(); }); } downloadArchive(documentIdList, options) { return __awaiter(this, void 0, void 0, function* () { for (let documentId of documentIdList) { if (!this.containsDocument(documentId)) { throw new exception_1.ClientResultException(exception_1.WsclientErrors.INVALID_DOCUMENT); } } let fileCompress = new generated_sources_1.FileCompress({ documentIdList: documentIdList, storeArchive: false, archiveFileName: "files" }); let request = yield connection_1.HttpRestRequest.createRequest(this.session) .setAcceptHeader(DataFormat_1.DataFormats.OCTET_STREAM.getMimeType()) .setOnDownloadProgress(options === null || options === void 0 ? void 0 : options.onProgress) .setAbortSignal(options === null || options === void 0 ? void 0 : options.abortSignal) .buildRequest(connection_1.HttpMethod.POST, this.session.getURL("documents/compress"), this.prepareHttpEntity(fileCompress), DataFormat_1.DataFormats.JSON.getMimeType()); return yield request.executeRequest(); }); } uploadDocument(data, fileName, options) { return __awaiter(this, void 0, void 0, function* () { let formData = new configuration_1.wsclientConfiguration.FormData(); formData.append('filedata', data, fileName); let searchParams = new URLSearchParams(); searchParams.set("history", String(this.isDocumentHistoryActive())); let request = yield connection_1.HttpRestRequest.createRequest(this.session) .setOnUploadProgress(options === null || options === void 0 ? void 0 : options.onProgress) .setAbortSignal(options === null || options === void 0 ? void 0 : options.abortSignal) .buildRequest(connection_1.HttpMethod.POST, this.session.getURL("documents", searchParams), formData); let documentFile = generated_sources_1.DocumentFile.fromJson(yield request.executeRequest()); return yield this.synchronizeDocument(documentFile); }); } deleteDocument(documentId) { return __awaiter(this, void 0, void 0, function* () { if (!this.containsDocument(documentId)) { throw new exception_1.ClientResultException(exception_1.WsclientErrors.INVALID_DOCUMENT); } let request = yield connection_1.HttpRestRequest.createRequest(this.session) .buildRequest(connection_1.HttpMethod.DELETE, this.session.getURL("documents/" + documentId)); yield request.executeRequest(); this.documentMap.delete(documentId); }); } renameDocument(documentId, fileName) { return __awaiter(this, void 0, void 0, function* () { if (!this.containsDocument(documentId)) { throw new exception_1.ClientResultException(exception_1.WsclientErrors.INVALID_DOCUMENT); } let parameter = new generated_sources_1.FileUpdate({ fileName: fileName }); let request = yield connection_1.HttpRestRequest.createRequest(this.session) .buildRequest(connection_1.HttpMethod.POST, this.session.getURL("documents/" + documentId + "/update"), this.prepareHttpEntity(parameter), DataFormat_1.DataFormats.JSON.getMimeType()); let documentFile = generated_sources_1.DocumentFile.fromJson(yield request.executeRequest()); return this.synchronizeDocument(documentFile); }); } isDocumentHistoryActive() { return this.documentHistoryActive; } setDocumentHistoryActive(documentHistoryActive) { this.documentHistoryActive = documentHistoryActive; if (documentHistoryActive) { for (let document of this.getDocuments()) { this.synchronizeDocumentHistory(document.getDocumentId()); } } } getDocumentHistory(documentId) { if (!this.isDocumentHistoryActive()) { throw new exception_1.ClientResultException(exception_1.WsclientErrors.INVALID_HISTORY_DATA); } return this.getDocument(documentId).getHistory(); } getDocumentHistoryEntry(documentId, historyId) { if (!this.isDocumentHistoryActive()) { throw new exception_1.ClientResultException(exception_1.WsclientErrors.INVALID_HISTORY_DATA); } return this.getDocument(documentId).getHistoryEntry(historyId); } updateDocumentHistory(documentId, historyEntry) { return __awaiter(this, void 0, void 0, function* () { if (!this.isDocumentHistoryActive()) { throw new exception_1.ClientResultException(exception_1.WsclientErrors.INVALID_HISTORY_DATA); } if (!this.containsDocument(documentId)) { throw new exception_1.ClientResultException(exception_1.WsclientErrors.INVALID_DOCUMENT); } let restDocument = this.documentMap.get(documentId); let historyId = historyEntry.id; let request = yield connection_1.HttpRestRequest.createRequest(this.session) .buildRequest(connection_1.HttpMethod.PUT, this.session.getURL("documents/" + documentId + "/history/" + historyId), this.prepareHttpEntity(historyEntry), DataFormat_1.DataFormats.JSON.getMimeType()); let resultHistoryBean = generated_sources_1.HistoryEntry.fromJson(yield request.executeRequest()); restDocument = yield this.synchronizeDocumentInfo(restDocument.getDocumentFile()); this.accessInternalState(restDocument).updateHistoryEntry(resultHistoryBean); return resultHistoryBean; }); } createDocumentByFile(documentFile) { return __awaiter(this, void 0, void 0, function* () { let restDocument = this.createDocument(documentFile); this.accessInternalState(restDocument).setDocumentFile(documentFile); this.documentMap.set(documentFile.documentId, restDocument); yield this.synchronizeDocumentInfo(documentFile); return restDocument; }); } synchronizeDocumentInfo(documentFile) { return __awaiter(this, void 0, void 0, function* () { let documentId = documentFile.documentId; let request = yield connection_1.HttpRestRequest.createRequest(this.session) .buildRequest(connection_1.HttpMethod.GET, this.session.getURL("documents/" + documentId + "/info")); let documentResultFile = generated_sources_1.DocumentFile.fromJson(yield request.executeRequest()); let restDocument = this.documentMap.get(documentId); this.accessInternalState(restDocument).setDocumentFile(documentResultFile); if (this.isDocumentHistoryActive()) { this.synchronizeDocumentHistory(documentId); } return restDocument; }); } synchronizeDocumentHistory(documentId) { return __awaiter(this, void 0, void 0, function* () { let restDocument = this.getDocument(documentId); let request = yield connection_1.HttpRestRequest.createRequest(this.session) .buildRequest(connection_1.HttpMethod.GET, this.session.getURL("documents/" + documentId + "/history")); let requestData = yield request.executeRequest(); let history = requestData.map((data) => generated_sources_1.HistoryEntry.fromJson(data)); for (let historyEntry of history) { this.accessInternalState(restDocument).updateHistoryEntry(historyEntry); } }); } updateDocumentSecurity(documentId, passwordType) { return __awaiter(this, void 0, void 0, function* () { let request = yield connection_1.HttpRestRequest.createRequest(this.session) .buildRequest(connection_1.HttpMethod.PUT, this.session.getURL("documents/" + documentId + "/security/password"), this.prepareHttpEntity(passwordType), DataFormat_1.DataFormats.JSON.getMimeType()); let documentFile = generated_sources_1.DocumentFile.fromJson(yield request.executeRequest()); return yield this.synchronizeDocument(documentFile); }); } prepareHttpEntity(parameter) { try { return JSON.stringify(parameter.toJson()); } catch (ex) { throw new exception_1.ClientResultException(exception_1.WsclientErrors.XML_OR_JSON_CONVERSION_FAILURE, ex); } } getDocumentInfo(documentId, infoType) { return __awaiter(this, void 0, void 0, function* () { let request = yield connection_1.HttpRestRequest.createRequest(this.session) .buildRequest(connection_1.HttpMethod.GET, this.session.getURL("documents/" + documentId + "/info/" + infoType)); return generated_sources_1.Info.fromJson(yield request.executeRequest()); }); } extractDocument(documentId, fileExtract) { return __awaiter(this, void 0, void 0, function* () { if (!this.containsDocument(documentId)) { throw new exception_1.ClientResultException(exception_1.WsclientErrors.INVALID_DOCUMENT); } let request = yield connection_1.HttpRestRequest.createRequest(this.session) .buildRequest(connection_1.HttpMethod.POST, this.session.getURL("documents/" + documentId + "/extract"), this.prepareHttpEntity(fileExtract), DataFormat_1.DataFormats.JSON.getMimeType()); let requestData = yield request.executeRequest(); let documentFileList = requestData.map((data) => generated_sources_1.DocumentFile.fromJson(data)); let resultDocuments = []; for (let documentFile of documentFileList) { resultDocuments.push(yield this.synchronizeDocument(documentFile)); } return resultDocuments; }); } extractArchiveFile(documentId, archivePath) { return __awaiter(this, void 0, void 0, function* () { if (!this.containsDocument(documentId)) { throw new exception_1.ClientResultException(exception_1.WsclientErrors.INVALID_DOCUMENT); } let request = yield connection_1.HttpRestRequest.createRequest(this.session) .setAcceptHeader(DataFormat_1.DataFormats.OCTET_STREAM.getMimeType()) .buildRequest(connection_1.HttpMethod.GET, this.session.getURL("documents/" + documentId + "/archive/" + archivePath)); return yield request.executeRequest(); }); } compressDocuments(fileCompress) { return __awaiter(this, void 0, void 0, function* () { let documentIdList = []; if (typeof fileCompress.documentIdList !== "undefined") { documentIdList = fileCompress.documentIdList; } for (let documentId of documentIdList) { if (!this.containsDocument(documentId)) { throw new exception_1.ClientResultException(exception_1.WsclientErrors.INVALID_DOCUMENT); } } let request = yield connection_1.HttpRestRequest.createRequest(this.session) .setAcceptHeader(DataFormat_1.DataFormats.JSON.getMimeType()) .buildRequest(connection_1.HttpMethod.POST, this.session.getURL("documents/compress"), this.prepareHttpEntity(fileCompress), DataFormat_1.DataFormats.JSON.getMimeType()); let documentFile = generated_sources_1.DocumentFile.fromJson(yield request.executeRequest()); return yield this.synchronizeDocument(documentFile); }); } updateDocument(documentId, data) { return __awaiter(this, void 0, void 0, function* () { if (!this.containsDocument(documentId)) { throw new exception_1.ClientResultException(exception_1.WsclientErrors.INVALID_DOCUMENT); } let restDocument = this.getDocument(documentId); let documentFile = restDocument.getDocumentFile(); let formData = new configuration_1.wsclientConfiguration.FormData(); formData.append('filedata', data, documentFile.fileName + "." + documentFile.fileExtension); let request = yield connection_1.HttpRestRequest.createRequest(this.session) .buildRequest(connection_1.HttpMethod.PUT, this.session.getURL("documents/" + documentId), formData); documentFile = generated_sources_1.DocumentFile.fromJson(yield request.executeRequest()); return yield this.synchronizeDocument(documentFile); }); } } exports.AbstractDocumentManager = AbstractDocumentManager; //# sourceMappingURL=AbstractDocumentManager.js.map