@softvision/webpdf-wsclient-typescript
Version:
A simplified and optimized API client library for the webPDF server
316 lines • 17.6 kB
JavaScript
"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