navidev-adt-api
Version:
API de conexión al Abap Developer Tools
299 lines (298 loc) • 12.7 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());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const Result_1 = require("../shared/core/Result");
const xmlParser_1 = __importDefault(require("../shared/utilities/parser/xmlParser"));
const transportConstants_1 = require("./transportConstants");
const transportTypes_1 = require("./transportTypes");
const transportUtils_1 = __importDefault(require("./transportUtils"));
class TransportOperationsApp {
constructor(connectionController) {
this.connectionController = connectionController;
}
/**
* Añade un usuario a la orden
* @param order Orden
* @param user Usuario
* @returns
*/
addUserOrder(order, user) {
return __awaiter(this, void 0, void 0, function* () {
const response = yield this.connectionController.request(`${transportConstants_1.TRANSPORT_URL.ADD_USER.replace("{ORDER}", order)}`, {
method: "POST",
body: `<?xml version="1.0" encoding="ASCII"?>
<tm:root xmlns:tm="http://www.sap.com/cts/adt/tm" tm:number="${order}" tm:targetuser="${user}" tm:useraction="newtask"/>`,
});
if (response.isSuccess) {
let httpResponse = response.getValue();
let bodyParsed = xmlParser_1.default.fullParse(httpResponse.body);
let task = {
number: bodyParsed["tm:root"]["@_tm:number"],
owner: bodyParsed["tm:root"]["@_tm:targetuser"],
parent: "",
description: "",
target: "",
targetName: "",
status: "",
statusName: "",
links: transportUtils_1.default.processOrderLinks(bodyParsed["tm:root"]["atom:link"]),
objects: [],
ctsProject: "",
ctsProjectDesc: "",
lastChangedTimestamp: 0,
categoryType: transportTypes_1.TransportTaskType.Unclassified,
categoryTypeName: transportConstants_1.REQUEST_FUNCTION_DESC[transportTypes_1.TransportTaskType.Unclassified],
};
return Result_1.Result.ok(task);
}
else {
return Result_1.Result.fail(response.getErrorValue());
}
});
}
/**
* Borra el contenido de una orden o tarea
* @param order Orden
* @returns
*/
deleteOrder(order) {
return __awaiter(this, void 0, void 0, function* () {
const response = yield this.connectionController.request(`${transportConstants_1.TRANSPORT_URL.ORDER}/${order}`, {
method: "DELETE",
});
if (response.isSuccess) {
return Result_1.Result.ok();
}
else {
return Result_1.Result.fail(response.getErrorValue());
}
});
}
/**
* Cambio de usuario en una orden o tarea, en versiones previas a S/4 HANA
* @param order
* @param user
* @returns
*/
changeUserOrderWOConf(order, user) {
return __awaiter(this, void 0, void 0, function* () {
const response = yield this.connectionController.request(`${transportConstants_1.TRANSPORT_URL.ORDER}/${order}`, {
method: "PUT",
qs: { targetuser: user },
});
if (response.isSuccess) {
let httpResponse = response.getValue();
let bodyParsed = xmlParser_1.default.fullParse(httpResponse.body);
return Result_1.Result.ok({
number: bodyParsed["tm:root"]["@_tm:number"],
user: bodyParsed["tm:root"]["@_tm:targetuser"],
});
}
else {
return Result_1.Result.fail(response.getErrorValue());
}
});
}
/**
* Cambio de usuario en una orden o tarea, en versiones previas a S/4 HANA
* @param order
* @param user
* @returns
*/
changeUserOrder(order, user) {
return __awaiter(this, void 0, void 0, function* () {
const response = yield this.connectionController.request(`${transportConstants_1.TRANSPORT_URL.ORDER}/${order}`, {
method: "PUT",
body: `<?xml version="1.0" encoding="ASCII"?>
<tm:root xmlns:tm="http://www.sap.com/cts/adt/tm" tm:number="${order}" tm:targetuser="${user}" tm:useraction="changeowner"/>`,
});
if (response.isSuccess) {
let httpResponse = response.getValue();
let bodyParsed = xmlParser_1.default.fullParse(httpResponse.body);
return Result_1.Result.ok({
number: bodyParsed["tm:root"]["@_tm:number"],
user: bodyParsed["tm:root"]["@_tm:targetuser"],
});
}
else {
return Result_1.Result.fail(response.getErrorValue());
}
});
}
/**
* Creación de una orden
* @param description
* @param type
* @param owner
* @param target
* @param ctsProject
* @returns
*/
createOrder(description, type, owner, target, ctsProject) {
return __awaiter(this, void 0, void 0, function* () {
const response = yield this.connectionController.request(transportConstants_1.TRANSPORT_URL.ORDER, {
method: "POST",
body: `<?xml version="1.0" encoding="ASCII"?>
<tm:root xmlns:tm="http://www.sap.com/cts/adt/tm" tm:useraction="newrequest">
<tm:request tm:desc="${description}" tm:type="${type}" tm:target="${target !== null && target !== void 0 ? target : transportConstants_1.DEFAULT_TARGET}" tm:cts_project="${ctsProject !== null && ctsProject !== void 0 ? ctsProject : ""}">
<tm:task tm:owner="${owner}"/>
</tm:request>
</tm:root>`,
});
if (response.isSuccess) {
let httpResponse = response.getValue();
let bodyParsed = xmlParser_1.default.fullParse(httpResponse.body);
let returnCreateOrder = {
number: bodyParsed["tm:root"]["tm:request"]["@_tm:number"],
cts_project: bodyParsed["tm:root"]["tm:request"]["@_tm:cts_project"],
cts_project_desc: bodyParsed["tm:root"]["tm:request"]["@_tm:cts_project_desc"],
desc: bodyParsed["tm:root"]["tm:request"]["@_tm:desc"],
parent: bodyParsed["tm:root"]["tm:request"]["@_tm:parent"],
target: bodyParsed["tm:root"]["tm:request"]["@_tm:target"],
target_desc: bodyParsed["tm:root"]["tm:request"]["@_tm:target_desc"],
type: bodyParsed["tm:root"]["tm:request"]["@_tm:type"],
adturi: "",
httpuri: "",
vituri: "",
};
xmlParser_1.default.xmlArray(bodyParsed["tm:root"]["tm:request"]["atom:link"]).forEach((row) => {
if (row["@_rel"].includes("adturi"))
returnCreateOrder.adturi = row["@_href"];
else if (row["@_rel"].includes("vituri"))
returnCreateOrder.vituri = row["@_href"];
if (row["@_rel"].includes("self"))
returnCreateOrder.httpuri = row["@_href"];
});
return Result_1.Result.ok(returnCreateOrder);
}
else {
return Result_1.Result.fail(response.getErrorValue());
}
});
}
/**
* Cambio el tipo de tarea
* @param task
* @param type
* @returns
*/
changeTaskType(task, type) {
return __awaiter(this, void 0, void 0, function* () {
const response = yield this.connectionController.request(`${transportConstants_1.TRANSPORT_URL.ORDER}/${task}`, {
method: "PUT",
body: `<?xml version="1.0" encoding="ASCII"?>
<tm:root xmlns:tm="http://www.sap.com/cts/adt/tm" tm:number="${task}" tm:useraction="changetasktype">
<tm:task tm:type="${type}"/>
</tm:root>`,
});
if (response.isSuccess) {
let httpResponse = response.getValue();
let bodyParsed = xmlParser_1.default.fullParse(httpResponse.body);
return Result_1.Result.ok({
number: bodyParsed["tm:root"]["@_tm:number"],
type: bodyParsed["tm:root"]["@_tm:type"],
});
}
else {
return Result_1.Result.fail(response.getErrorValue());
}
});
}
/**
* Ordenar y comprimir orden/tarea
* @param order
* @returns
*/
sortAndCompress(order) {
return __awaiter(this, void 0, void 0, function* () {
const response = yield this.connectionController.request(`${transportConstants_1.TRANSPORT_URL.ORDER}/${order}/sortandcompress`, {
method: "POST",
});
if (response.isSuccess) {
return Result_1.Result.ok();
}
else {
return Result_1.Result.fail(response.getErrorValue());
}
});
}
/**
* Reasignar tarea a una nueva orden.
* @param task
* @param newOrder
* @returns
*/
reassignTask(task, newOrder) {
return __awaiter(this, void 0, void 0, function* () {
const response = yield this.connectionController.request(`${transportConstants_1.TRANSPORT_URL.ORDER}/${task}/reassign`, {
method: "POST",
body: `<?xml version="1.0" encoding="ASCII"?>
<tm:root xmlns:tm="http://www.sap.com/cts/adt/tm" tm:number="${newOrder}" tm:useraction="reassign"/>`,
});
if (response.isSuccess) {
return Result_1.Result.ok({
task: task,
newOrder: newOrder,
});
}
else {
return Result_1.Result.fail(response.getErrorValue());
}
});
}
/**
* Bloqueo de una orden
* @param order
* @returns
*/
lockOrder(order) {
return __awaiter(this, void 0, void 0, function* () {
const response = yield this.connectionController.request(`${transportConstants_1.TRANSPORT_URL.ORDER}/${order}`, {
method: "POST",
qs: { _action: "LOCK", accessMode: "MODIFY" },
});
if (response.isSuccess) {
let httpResponse = response.getValue();
let bodyParsed = xmlParser_1.default.fullParse(httpResponse.body);
return Result_1.Result.ok({
lockHandle: bodyParsed["asx:abap"]["asx:values"].DATA.LOCK_HANDLE,
});
}
else {
return Result_1.Result.fail(response.getErrorValue());
}
});
}
/**
* Desbloqueo de una orden
* @param order
* @param lockHandle
* @returns
*/
unlockOrder(order, lockHandle) {
return __awaiter(this, void 0, void 0, function* () {
const response = yield this.connectionController.request(`${transportConstants_1.TRANSPORT_URL.ORDER}/${order}`, {
method: "POST",
qs: { _action: "UNLOCK", lockHandle: lockHandle },
});
if (response.isSuccess) {
return Result_1.Result.ok();
}
else {
return Result_1.Result.fail(response.getErrorValue());
}
});
}
}
exports.default = TransportOperationsApp;