ixc-orm 1.10.3 → 1.10.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -2
- package/README.md +3 -3
- package/dist/IXCClient.d.ts +67 -0
- package/dist/IXCClient.js +238 -0
- package/dist/IxcOrm.d.ts +81 -0
- package/dist/IxcOrm.js +186 -0
- package/dist/IxcResponse.d.ts +62 -0
- package/dist/IxcResponse.js +132 -0
- package/dist/api/Environment.d.ts +14 -0
- package/dist/api/Environment.js +66 -0
- package/dist/api/Operators.d.ts +9 -0
- package/dist/api/Operators.js +13 -0
- package/dist/api/Ordering.d.ts +13 -0
- package/dist/api/Ordering.js +40 -0
- package/dist/api/Pagination.d.ts +8 -0
- package/dist/api/Pagination.js +22 -0
- package/dist/api/Parameter.d.ts +18 -0
- package/dist/api/Parameter.js +41 -0
- package/dist/api/RequestEmitter.d.ts +90 -0
- package/dist/api/RequestEmitter.js +211 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.js +61 -0
- package/dist/recursos/cliente_contrato_ativar_cliente.d.ts +4 -0
- package/dist/recursos/cliente_contrato_ativar_cliente.js +28 -0
- package/dist/recursos/cliente_contrato_btn_lib_temp_24722.d.ts +4 -0
- package/dist/recursos/cliente_contrato_btn_lib_temp_24722.js +28 -0
- package/dist/recursos/desbloqueio_confianca.d.ts +4 -0
- package/dist/recursos/desbloqueio_confianca.js +28 -0
- package/dist/recursos/get_boleto.d.ts +4 -0
- package/dist/recursos/get_boleto.js +32 -0
- package/dist/recursos/index.d.ts +64 -0
- package/dist/recursos/index.js +84 -0
- package/dist/recursos/radusuarios_25452.d.ts +4 -0
- package/dist/recursos/radusuarios_25452.js +25 -0
- package/dist/recursos/recurso.d.ts +7 -0
- package/dist/recursos/recurso.js +48 -0
- package/dist/request.d.ts +20 -0
- package/dist/request.js +73 -0
- package/dist/response.d.ts +4 -0
- package/dist/response.js +14 -0
- package/dist/types.d.ts +56 -0
- package/dist/types.js +27 -0
- package/dist/utils/FileUtils.d.ts +6 -0
- package/dist/utils/FileUtils.js +27 -0
- package/dist/utils/TextUtils.d.ts +18 -0
- package/dist/utils/TextUtils.js +35 -0
- package/dist/utils/index.d.ts +7 -0
- package/dist/utils/index.js +9 -0
- package/package.json +1 -1
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
class IxcResponse {
|
|
4
|
+
/**
|
|
5
|
+
* Cria um novo objeto no formato de uma resposta padrão do IXC Provedor.
|
|
6
|
+
*
|
|
7
|
+
* @param error Uma exceção capturada por um bloco try-catch.
|
|
8
|
+
* @returns Um objeto de resposta do IXC Provedor.
|
|
9
|
+
*/
|
|
10
|
+
static createResponseTextWithError(error) {
|
|
11
|
+
var _a;
|
|
12
|
+
const response = {
|
|
13
|
+
type: 'error',
|
|
14
|
+
page: 0,
|
|
15
|
+
total: 0,
|
|
16
|
+
registros: [],
|
|
17
|
+
message: ((_a = error.response) === null || _a === void 0 ? void 0 : _a.statusText) || error.message || 'Erro desconhecido'
|
|
18
|
+
};
|
|
19
|
+
return JSON.stringify(response);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Método construtor da classe.
|
|
23
|
+
*
|
|
24
|
+
* @param text O conteúdo da resposta do IXc Provedor, no formato de texto.
|
|
25
|
+
*/
|
|
26
|
+
constructor(text) {
|
|
27
|
+
this.text = text;
|
|
28
|
+
this.data = this.createDataFromText();
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Verifica se o IXC Provedor retornou uma mensagem de erro.
|
|
32
|
+
*
|
|
33
|
+
* @returns **true** se o corpo da mensagem estiver dentro de tags HTML e se a mensagem dentro das tags
|
|
34
|
+
* contiver a palavra "erro". Ou se o objeto da resposta possuir a propriedade { "type": "error", ... }.
|
|
35
|
+
*/
|
|
36
|
+
fail() {
|
|
37
|
+
const hasHtml = this.responseTextHasHtml();
|
|
38
|
+
const hasError = this.message().includes('erro');
|
|
39
|
+
if (hasHtml && hasError) {
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
if (this.data && Object.keys(this.data).includes('type')) {
|
|
43
|
+
return this.data.type === 'error';
|
|
44
|
+
}
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Obtém a quantidade total dos registros encontrados no banco de dados, além dos retornados na página atual.
|
|
49
|
+
*
|
|
50
|
+
* @returns O total de registros encontrados.
|
|
51
|
+
*/
|
|
52
|
+
total() {
|
|
53
|
+
var _a;
|
|
54
|
+
if (!((_a = this.data) === null || _a === void 0 ? void 0 : _a.total)) {
|
|
55
|
+
return 0;
|
|
56
|
+
}
|
|
57
|
+
return this.data.total;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Obtém o número da página atual dos registros retornados.
|
|
61
|
+
*
|
|
62
|
+
* @returns O valor numérico da página.
|
|
63
|
+
*/
|
|
64
|
+
page() {
|
|
65
|
+
var _a;
|
|
66
|
+
if (!((_a = this.data) === null || _a === void 0 ? void 0 : _a.page)) {
|
|
67
|
+
return 0;
|
|
68
|
+
}
|
|
69
|
+
return this.data.page;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Obtém uma mensagem retornada pelo IXC quando a requisição falha.
|
|
73
|
+
*
|
|
74
|
+
* @returns Uma mensagem de falha.
|
|
75
|
+
*/
|
|
76
|
+
message() {
|
|
77
|
+
var _a;
|
|
78
|
+
if (!((_a = this.data) === null || _a === void 0 ? void 0 : _a.message)) {
|
|
79
|
+
return '';
|
|
80
|
+
}
|
|
81
|
+
return this.data.message.replaceAll('<br />', '. ');
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Obtém a lista de registros retornados por uma consulta à API do IXC Provedor.
|
|
85
|
+
*
|
|
86
|
+
* @returns Uma lista de objetos.
|
|
87
|
+
*/
|
|
88
|
+
registros() {
|
|
89
|
+
var _a;
|
|
90
|
+
if (!((_a = this.data) === null || _a === void 0 ? void 0 : _a.registros)) {
|
|
91
|
+
return [];
|
|
92
|
+
}
|
|
93
|
+
return this.data.registros;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Obtém o conteúdo bruto de uma resposta da API do IXC Provedor.
|
|
97
|
+
* Este método substitui o método `registros()`, quando a requisição é feita para um endpoint
|
|
98
|
+
* específico de recursos do IXC Provedor, mas apenas quando a API devolve uma resposta bruta ao
|
|
99
|
+
* invés de uma lista de registros, ou uma mensagem.
|
|
100
|
+
*
|
|
101
|
+
* @returns Uma string contendo o conteúdo da resposta da API do IXC Provedor.
|
|
102
|
+
*/
|
|
103
|
+
content() {
|
|
104
|
+
return this.text;
|
|
105
|
+
}
|
|
106
|
+
responseTextHasHtml() {
|
|
107
|
+
var _a;
|
|
108
|
+
return !(!((_a = this.text) === null || _a === void 0 ? void 0 : _a.length)) && this.text.startsWith('<div style=');
|
|
109
|
+
}
|
|
110
|
+
createDataFromText() {
|
|
111
|
+
if (this.responseTextHasHtml()) {
|
|
112
|
+
return this.createDataFromHtml();
|
|
113
|
+
}
|
|
114
|
+
try {
|
|
115
|
+
return JSON.parse(this.text);
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
return {};
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
createDataFromHtml() {
|
|
122
|
+
const parser = new DOMParser();
|
|
123
|
+
const document = parser.parseFromString(this.text, 'text/html');
|
|
124
|
+
return {
|
|
125
|
+
type: 'error',
|
|
126
|
+
page: 0,
|
|
127
|
+
total: 0,
|
|
128
|
+
message: document.body.textContent
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
exports.default = IxcResponse;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export default class Environment {
|
|
2
|
+
private static instance;
|
|
3
|
+
private domain;
|
|
4
|
+
private token;
|
|
5
|
+
static loadInstance(): Environment;
|
|
6
|
+
private constructor();
|
|
7
|
+
private shouldToLoadDotEnvFile;
|
|
8
|
+
private envHasBeenLoaded;
|
|
9
|
+
private loadEnvFromEnvFile;
|
|
10
|
+
private setDomain;
|
|
11
|
+
private setToken;
|
|
12
|
+
getDomain(): string;
|
|
13
|
+
getToken(): string;
|
|
14
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const path_1 = __importDefault(require("path"));
|
|
7
|
+
const dotenv_1 = __importDefault(require("dotenv"));
|
|
8
|
+
const utils_1 = __importDefault(require("../utils"));
|
|
9
|
+
class Environment {
|
|
10
|
+
static loadInstance() {
|
|
11
|
+
if (!Environment.instance) {
|
|
12
|
+
Environment.instance = new Environment();
|
|
13
|
+
}
|
|
14
|
+
return Environment.instance;
|
|
15
|
+
}
|
|
16
|
+
constructor() {
|
|
17
|
+
this.shouldToLoadDotEnvFile();
|
|
18
|
+
this.setToken(process.env.IXC_ACCESS_TOKEN);
|
|
19
|
+
this.setDomain(process.env.IXC_SERVER_DOMAIN);
|
|
20
|
+
}
|
|
21
|
+
shouldToLoadDotEnvFile() {
|
|
22
|
+
if (this.envHasBeenLoaded()) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
this.loadEnvFromEnvFile();
|
|
26
|
+
}
|
|
27
|
+
envHasBeenLoaded() {
|
|
28
|
+
const allEnvVars = Object.keys(process.env);
|
|
29
|
+
return allEnvVars.some(envVar => envVar.startsWith('IXC_'));
|
|
30
|
+
}
|
|
31
|
+
loadEnvFromEnvFile() {
|
|
32
|
+
const fileUtil = new utils_1.default.File();
|
|
33
|
+
const envfile = fileUtil.findFile('.env');
|
|
34
|
+
const env = dotenv_1.default.config({
|
|
35
|
+
quiet: true,
|
|
36
|
+
path: path_1.default.resolve(envfile)
|
|
37
|
+
});
|
|
38
|
+
if (env.error) {
|
|
39
|
+
console.error(env.error);
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
setDomain(domain) {
|
|
44
|
+
var _a;
|
|
45
|
+
const newDomainIsValid = !(!(domain === null || domain === void 0 ? void 0 : domain.length));
|
|
46
|
+
const oldDomainIsValid = !((_a = this.domain) === null || _a === void 0 ? void 0 : _a.length);
|
|
47
|
+
if (newDomainIsValid && oldDomainIsValid) {
|
|
48
|
+
this.domain = domain;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
setToken(token) {
|
|
52
|
+
var _a;
|
|
53
|
+
const newTokenIsValid = !(!(token === null || token === void 0 ? void 0 : token.length));
|
|
54
|
+
const oldTokenisValid = !((_a = this.token) === null || _a === void 0 ? void 0 : _a.length);
|
|
55
|
+
if (newTokenIsValid && oldTokenisValid) {
|
|
56
|
+
this.token = token;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
getDomain() {
|
|
60
|
+
return this.domain;
|
|
61
|
+
}
|
|
62
|
+
getToken() {
|
|
63
|
+
return this.token;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.default = Environment;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var Operators;
|
|
4
|
+
(function (Operators) {
|
|
5
|
+
Operators["EQUALS"] = "=";
|
|
6
|
+
Operators["LIKE"] = "L";
|
|
7
|
+
Operators["LESS_THAN"] = "<";
|
|
8
|
+
Operators["LESS_THAN_EQUALS"] = "<=";
|
|
9
|
+
Operators["GREATER_THAN"] = ">";
|
|
10
|
+
Operators["GREATER_THAN_EQUALS"] = ">=";
|
|
11
|
+
})(Operators || (Operators = {}));
|
|
12
|
+
;
|
|
13
|
+
exports.default = Operators;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare enum Sort {
|
|
2
|
+
ASC = "asc",
|
|
3
|
+
DESC = "desc"
|
|
4
|
+
}
|
|
5
|
+
export default class Ordering {
|
|
6
|
+
private sortName;
|
|
7
|
+
private sortOrder;
|
|
8
|
+
static ascBy(table: string, column: string): Ordering;
|
|
9
|
+
static descBy(table: string, column: string): Ordering;
|
|
10
|
+
constructor(sortName: string, sortOrder: Sort);
|
|
11
|
+
getSortName(): string;
|
|
12
|
+
getSortOrder(): Sort;
|
|
13
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Sort = void 0;
|
|
7
|
+
const utils_1 = __importDefault(require("../utils"));
|
|
8
|
+
var Sort;
|
|
9
|
+
(function (Sort) {
|
|
10
|
+
Sort["ASC"] = "asc";
|
|
11
|
+
Sort["DESC"] = "desc";
|
|
12
|
+
})(Sort || (exports.Sort = Sort = {}));
|
|
13
|
+
;
|
|
14
|
+
class Ordering {
|
|
15
|
+
static ascBy(table, column) {
|
|
16
|
+
const normalizedTable = utils_1.default.Text.normalize(table);
|
|
17
|
+
const normalizedColumn = utils_1.default.Text.normalize(column);
|
|
18
|
+
return new Ordering(`${normalizedTable}.${normalizedColumn}`, Sort.ASC);
|
|
19
|
+
}
|
|
20
|
+
static descBy(table, column) {
|
|
21
|
+
const normalizedTable = utils_1.default.Text.normalize(table);
|
|
22
|
+
const normalizedColumn = utils_1.default.Text.normalize(column);
|
|
23
|
+
return new Ordering(`${normalizedTable}.${normalizedColumn}`, Sort.DESC);
|
|
24
|
+
}
|
|
25
|
+
constructor(sortName, sortOrder) {
|
|
26
|
+
this.sortName = sortName;
|
|
27
|
+
this.sortOrder = sortOrder;
|
|
28
|
+
this.sortName = sortName;
|
|
29
|
+
this.sortOrder = sortOrder;
|
|
30
|
+
}
|
|
31
|
+
getSortName() {
|
|
32
|
+
var _a;
|
|
33
|
+
return (_a = this.sortName) !== null && _a !== void 0 ? _a : 'id';
|
|
34
|
+
}
|
|
35
|
+
getSortOrder() {
|
|
36
|
+
var _a;
|
|
37
|
+
return (_a = this.sortOrder) !== null && _a !== void 0 ? _a : Sort.ASC;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.default = Ordering;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
class Pagination {
|
|
4
|
+
static defaults() {
|
|
5
|
+
return new Pagination(1, 20);
|
|
6
|
+
}
|
|
7
|
+
constructor(page, rows) {
|
|
8
|
+
this.page = page;
|
|
9
|
+
this.rows = rows;
|
|
10
|
+
this.page = page;
|
|
11
|
+
this.rows = rows;
|
|
12
|
+
}
|
|
13
|
+
getPage() {
|
|
14
|
+
var _a;
|
|
15
|
+
return (_a = this.page) !== null && _a !== void 0 ? _a : 1;
|
|
16
|
+
}
|
|
17
|
+
getRows() {
|
|
18
|
+
var _a;
|
|
19
|
+
return (_a = this.rows) !== null && _a !== void 0 ? _a : 20;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.default = Pagination;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import Operators from './Operators';
|
|
2
|
+
export type ParameterProps = {
|
|
3
|
+
TB: string;
|
|
4
|
+
OP: string;
|
|
5
|
+
P: string | number;
|
|
6
|
+
};
|
|
7
|
+
export default class Parameter {
|
|
8
|
+
private readonly table;
|
|
9
|
+
private operator;
|
|
10
|
+
private type;
|
|
11
|
+
private value;
|
|
12
|
+
constructor(table: string);
|
|
13
|
+
withType(type: string): this;
|
|
14
|
+
withOperator(operator: Operators): this;
|
|
15
|
+
withValue(value: string | number): this;
|
|
16
|
+
toJsonObject(): ParameterProps;
|
|
17
|
+
toJsonString(): string;
|
|
18
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const Operators_1 = __importDefault(require("./Operators"));
|
|
7
|
+
const utils_1 = __importDefault(require("../utils"));
|
|
8
|
+
class Parameter {
|
|
9
|
+
constructor(table) {
|
|
10
|
+
this.table = utils_1.default.Text.normalize(table);
|
|
11
|
+
this.operator = Operators_1.default.EQUALS;
|
|
12
|
+
this.type = this.table;
|
|
13
|
+
this.value = '';
|
|
14
|
+
}
|
|
15
|
+
withType(type) {
|
|
16
|
+
const normalizedType = utils_1.default.Text.normalize(type);
|
|
17
|
+
this.type = `${this.table}.${normalizedType}`;
|
|
18
|
+
return this;
|
|
19
|
+
}
|
|
20
|
+
withOperator(operator) {
|
|
21
|
+
this.operator = !(!operator) ? operator : Operators_1.default.EQUALS;
|
|
22
|
+
return this;
|
|
23
|
+
}
|
|
24
|
+
withValue(value) {
|
|
25
|
+
if (value) {
|
|
26
|
+
this.value = value;
|
|
27
|
+
}
|
|
28
|
+
return this;
|
|
29
|
+
}
|
|
30
|
+
toJsonObject() {
|
|
31
|
+
return {
|
|
32
|
+
TB: this.type,
|
|
33
|
+
OP: this.operator,
|
|
34
|
+
P: this.value
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
toJsonString() {
|
|
38
|
+
return JSON.stringify(this.toJsonObject());
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.default = Parameter;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import IxcResponse from '../IxcResponse';
|
|
2
|
+
export default class RequestEmitter {
|
|
3
|
+
private readonly table;
|
|
4
|
+
private headers;
|
|
5
|
+
private query;
|
|
6
|
+
private uri;
|
|
7
|
+
/**
|
|
8
|
+
* Método construtor da classe.
|
|
9
|
+
*
|
|
10
|
+
* @param table Representa o endpoint do IXC Provedor para o qual será enviada a requisição.
|
|
11
|
+
*/
|
|
12
|
+
constructor(table: string);
|
|
13
|
+
/**
|
|
14
|
+
* Envia uma requisição HTTP para a API do IXC Provedor, para listar registros, filtrando-os pela query de busca
|
|
15
|
+
* definida por **setQuery(String query)**.
|
|
16
|
+
* A requisição é do tipo POST, o que define que ela irá executar uma listagem de registros é a presença do header:
|
|
17
|
+
* ["ixcsoft": "listar"].
|
|
18
|
+
*
|
|
19
|
+
* @returns Uma nova instância de um {@link IxcResponse}.
|
|
20
|
+
*/
|
|
21
|
+
GET(): Promise<IxcResponse>;
|
|
22
|
+
/**
|
|
23
|
+
* Envia uma requisição HTTP para a API do IXC Provedor, para inserir um novo registro no banco de dados, na tabela
|
|
24
|
+
* definida pelo prâmetro **(String table)** no construtor.
|
|
25
|
+
*
|
|
26
|
+
* @returns Uma nova instância de um {@link IxcResponse}.
|
|
27
|
+
*/
|
|
28
|
+
POST(record: any): Promise<IxcResponse>;
|
|
29
|
+
/**
|
|
30
|
+
* Envia uma requisição HTTP para a API do IXC Provedor, para atualizar um ou mais campos de um registro no banco
|
|
31
|
+
* de dados, na tabela definida pelo prâmetro **(String table)** no construtor.
|
|
32
|
+
*
|
|
33
|
+
* @param record O registro com os campos a serem atualizados no banco de dados.
|
|
34
|
+
* @return Um objeto {@link IxcResponse} contento o status da requisição e uma mensagem que pode ser de sucesso ou
|
|
35
|
+
* de erro, dependendo do status.
|
|
36
|
+
*/
|
|
37
|
+
PUT(record: any): Promise<IxcResponse>;
|
|
38
|
+
/**
|
|
39
|
+
* Envia uma requisição HTTP para a API do IXC Provedor, para excluir um determinado registro do banco de dados.
|
|
40
|
+
*
|
|
41
|
+
* @param id Um {@link Integer} com o id do registro a ser removido do banco de dados do IXC Provedor.
|
|
42
|
+
* @return Um objeto {@link IxcResponse}.
|
|
43
|
+
*/
|
|
44
|
+
DELETE(record: any): Promise<IxcResponse>;
|
|
45
|
+
/**
|
|
46
|
+
* Define a query que será enviada no corpo de uma requisição de busca.
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* {
|
|
50
|
+
* "qtype": "cliente",
|
|
51
|
+
* "query": "",
|
|
52
|
+
* "oper": "",
|
|
53
|
+
* "page": "1",
|
|
54
|
+
* "rg": 20,
|
|
55
|
+
* "sortname": "asc",
|
|
56
|
+
* "sortorder": "cliente.id",
|
|
57
|
+
* "grid_param": [
|
|
58
|
+
* {
|
|
59
|
+
* "TB": "cliente.razao",
|
|
60
|
+
* "OP": "L",
|
|
61
|
+
* "P": "nome do cliente (nesse caso)"
|
|
62
|
+
* }
|
|
63
|
+
* ]
|
|
64
|
+
* }
|
|
65
|
+
*
|
|
66
|
+
* @param query Um objeto no formato de uma query da API do IXC Provedor.
|
|
67
|
+
*/
|
|
68
|
+
setupQuery(query: {
|
|
69
|
+
[key: string]: any;
|
|
70
|
+
}): void;
|
|
71
|
+
/**
|
|
72
|
+
* Envia requisições para recursos específicos do IXC Provedor.
|
|
73
|
+
*
|
|
74
|
+
* @returns Uma nova instância de IxcResponse, contendo os dados retornados pelo recurso do IXC Provedor.
|
|
75
|
+
*/
|
|
76
|
+
sendRequestToResource(): Promise<IxcResponse>;
|
|
77
|
+
/**
|
|
78
|
+
* Obtém o valor da tabela, definida no cosntrutor.
|
|
79
|
+
*
|
|
80
|
+
* @returns string
|
|
81
|
+
*/
|
|
82
|
+
protected getTable(): string;
|
|
83
|
+
private loadCommonHeaders;
|
|
84
|
+
private getEncodedTokenFromContext;
|
|
85
|
+
private setupUri;
|
|
86
|
+
private enableIxcListingHeader;
|
|
87
|
+
private disableIxcListingHeader;
|
|
88
|
+
private sendRequest;
|
|
89
|
+
private createDefaultHeaders;
|
|
90
|
+
}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
12
|
+
var t = {};
|
|
13
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
14
|
+
t[p] = s[p];
|
|
15
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
16
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
17
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
18
|
+
t[p[i]] = s[p[i]];
|
|
19
|
+
}
|
|
20
|
+
return t;
|
|
21
|
+
};
|
|
22
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
23
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
const Environment_1 = __importDefault(require("./Environment"));
|
|
27
|
+
const IxcResponse_1 = __importDefault(require("../IxcResponse"));
|
|
28
|
+
const utils_1 = __importDefault(require("../utils"));
|
|
29
|
+
class RequestEmitter {
|
|
30
|
+
/**
|
|
31
|
+
* Método construtor da classe.
|
|
32
|
+
*
|
|
33
|
+
* @param table Representa o endpoint do IXC Provedor para o qual será enviada a requisição.
|
|
34
|
+
*/
|
|
35
|
+
constructor(table) {
|
|
36
|
+
this.table = utils_1.default.Text.normalize(table);
|
|
37
|
+
this.headers = [];
|
|
38
|
+
this.query = '';
|
|
39
|
+
this.uri = '';
|
|
40
|
+
this.loadCommonHeaders();
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Envia uma requisição HTTP para a API do IXC Provedor, para listar registros, filtrando-os pela query de busca
|
|
44
|
+
* definida por **setQuery(String query)**.
|
|
45
|
+
* A requisição é do tipo POST, o que define que ela irá executar uma listagem de registros é a presença do header:
|
|
46
|
+
* ["ixcsoft": "listar"].
|
|
47
|
+
*
|
|
48
|
+
* @returns Uma nova instância de um {@link IxcResponse}.
|
|
49
|
+
*/
|
|
50
|
+
GET() {
|
|
51
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
52
|
+
this.setupUri();
|
|
53
|
+
this.enableIxcListingHeader();
|
|
54
|
+
const responseText = yield this.sendRequest('POST', this.query);
|
|
55
|
+
return new IxcResponse_1.default(responseText);
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Envia uma requisição HTTP para a API do IXC Provedor, para inserir um novo registro no banco de dados, na tabela
|
|
60
|
+
* definida pelo prâmetro **(String table)** no construtor.
|
|
61
|
+
*
|
|
62
|
+
* @returns Uma nova instância de um {@link IxcResponse}.
|
|
63
|
+
*/
|
|
64
|
+
POST(record) {
|
|
65
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
66
|
+
this.setupUri();
|
|
67
|
+
this.disableIxcListingHeader();
|
|
68
|
+
const responseText = yield this.sendRequest('POST', record);
|
|
69
|
+
return new IxcResponse_1.default(responseText);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Envia uma requisição HTTP para a API do IXC Provedor, para atualizar um ou mais campos de um registro no banco
|
|
74
|
+
* de dados, na tabela definida pelo prâmetro **(String table)** no construtor.
|
|
75
|
+
*
|
|
76
|
+
* @param record O registro com os campos a serem atualizados no banco de dados.
|
|
77
|
+
* @return Um objeto {@link IxcResponse} contento o status da requisição e uma mensagem que pode ser de sucesso ou
|
|
78
|
+
* de erro, dependendo do status.
|
|
79
|
+
*/
|
|
80
|
+
PUT(record) {
|
|
81
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
82
|
+
const { id } = record, rest = __rest(record, ["id"]);
|
|
83
|
+
this.setupUri(id);
|
|
84
|
+
this.disableIxcListingHeader();
|
|
85
|
+
const responseText = yield this.sendRequest('PUT', rest);
|
|
86
|
+
return new IxcResponse_1.default(responseText);
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Envia uma requisição HTTP para a API do IXC Provedor, para excluir um determinado registro do banco de dados.
|
|
91
|
+
*
|
|
92
|
+
* @param id Um {@link Integer} com o id do registro a ser removido do banco de dados do IXC Provedor.
|
|
93
|
+
* @return Um objeto {@link IxcResponse}.
|
|
94
|
+
*/
|
|
95
|
+
DELETE(record) {
|
|
96
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
97
|
+
const { id } = record, rest = __rest(record, ["id"]);
|
|
98
|
+
this.setupUri(id);
|
|
99
|
+
this.disableIxcListingHeader();
|
|
100
|
+
const responseText = yield this.sendRequest('DELETE', rest);
|
|
101
|
+
return new IxcResponse_1.default(responseText);
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Define a query que será enviada no corpo de uma requisição de busca.
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* {
|
|
109
|
+
* "qtype": "cliente",
|
|
110
|
+
* "query": "",
|
|
111
|
+
* "oper": "",
|
|
112
|
+
* "page": "1",
|
|
113
|
+
* "rg": 20,
|
|
114
|
+
* "sortname": "asc",
|
|
115
|
+
* "sortorder": "cliente.id",
|
|
116
|
+
* "grid_param": [
|
|
117
|
+
* {
|
|
118
|
+
* "TB": "cliente.razao",
|
|
119
|
+
* "OP": "L",
|
|
120
|
+
* "P": "nome do cliente (nesse caso)"
|
|
121
|
+
* }
|
|
122
|
+
* ]
|
|
123
|
+
* }
|
|
124
|
+
*
|
|
125
|
+
* @param query Um objeto no formato de uma query da API do IXC Provedor.
|
|
126
|
+
*/
|
|
127
|
+
setupQuery(query) {
|
|
128
|
+
this.query = query;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Envia requisições para recursos específicos do IXC Provedor.
|
|
132
|
+
*
|
|
133
|
+
* @returns Uma nova instância de IxcResponse, contendo os dados retornados pelo recurso do IXC Provedor.
|
|
134
|
+
*/
|
|
135
|
+
sendRequestToResource() {
|
|
136
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
137
|
+
try {
|
|
138
|
+
this.setupUri();
|
|
139
|
+
const responseText = yield this.sendRequest('POST', this.query);
|
|
140
|
+
return new IxcResponse_1.default(responseText);
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
const responseTextError = IxcResponse_1.default.createResponseTextWithError(error);
|
|
144
|
+
return new IxcResponse_1.default(responseTextError);
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Obtém o valor da tabela, definida no cosntrutor.
|
|
150
|
+
*
|
|
151
|
+
* @returns string
|
|
152
|
+
*/
|
|
153
|
+
getTable() {
|
|
154
|
+
return this.table;
|
|
155
|
+
}
|
|
156
|
+
loadCommonHeaders() {
|
|
157
|
+
const encodedToken = this.getEncodedTokenFromContext();
|
|
158
|
+
this.headers.push({ 'Authorization': `Basic ${encodedToken}` });
|
|
159
|
+
this.headers.push({ 'Content-Type': 'application/json' });
|
|
160
|
+
this.headers.push({ 'ixcsoft': '' });
|
|
161
|
+
}
|
|
162
|
+
getEncodedTokenFromContext() {
|
|
163
|
+
const token = Environment_1.default.loadInstance().getToken();
|
|
164
|
+
return Buffer.from(token !== null && token !== void 0 ? token : '').toString('base64');
|
|
165
|
+
}
|
|
166
|
+
setupUri(id) {
|
|
167
|
+
const host = Environment_1.default.loadInstance().getDomain();
|
|
168
|
+
const pathId = id ? `/${id}` : '';
|
|
169
|
+
this.uri = `https://${host}/webservice/v1/${this.table}${pathId}`;
|
|
170
|
+
}
|
|
171
|
+
enableIxcListingHeader() {
|
|
172
|
+
const headerIndex = this.headers.findIndex(h => Object.keys(h).includes('ixcsoft'));
|
|
173
|
+
if (headerIndex > -1) {
|
|
174
|
+
this.headers[headerIndex]['ixcsoft'] = 'listar';
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
disableIxcListingHeader() {
|
|
178
|
+
const headerIndex = this.headers.findIndex(h => Object.keys(h).includes('ixcsoft'));
|
|
179
|
+
if (headerIndex > -1) {
|
|
180
|
+
this.headers[headerIndex]['ixcsoft'] = '';
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
sendRequest(method, body) {
|
|
184
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
185
|
+
const headers = this.createDefaultHeaders();
|
|
186
|
+
try {
|
|
187
|
+
const response = yield fetch(this.uri, {
|
|
188
|
+
method,
|
|
189
|
+
headers,
|
|
190
|
+
body: body ? JSON.stringify(body) : undefined
|
|
191
|
+
});
|
|
192
|
+
return yield response.text();
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
return IxcResponse_1.default.createResponseTextWithError(error);
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
createDefaultHeaders() {
|
|
200
|
+
return this.headers.reduce((accumulator, current) => {
|
|
201
|
+
Object.keys(current).forEach(currentKey => {
|
|
202
|
+
if (!Object.keys(accumulator).includes(currentKey)) {
|
|
203
|
+
accumulator[currentKey] = '';
|
|
204
|
+
}
|
|
205
|
+
accumulator[currentKey] = current[currentKey];
|
|
206
|
+
});
|
|
207
|
+
return accumulator;
|
|
208
|
+
}, {});
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
exports.default = RequestEmitter;
|