g5-senior-client
Biblioteca auxiliar para requisições aos webservices da Senior Sistemas (G5).
- Facilita a indicação das cedenciais.
- Efetua o tratamento do retorno, lançando como exceção o parâmetro de retorno 'ErroExecucao'
- Permite efetuar a padronização do retorno de parâmetros do tipo tabela
Instalação
npm i @nclabs/g5-senior-client
Métodos
Assinatura | Parâmetros (types) | Descrição |
---|---|---|
registry(credential: G5Credential) |
G5Credential | Atribui as credenciais que serão usadas nas requisições ao G5 |
config(config: G5Config) |
G5Config | Configura o acesso ao G5 |
request(request: G5Request, credential?: G5Credential) |
G5Request, G5Credential | Retorna um Observable da requisição ao webservice e executa quando subscrito. Quando informadas as credenciais no método, desconsidera o registro para a requisição e utiliza as credenciais informadas. |
asyncRequest(request: G5Request, credential?: G5Credential) |
G5Request, G5Credential | Retorna uma Promise da requisição ao webservice. Quando informadas as credenciais no método, desconsidera o registro para a requisição e utiliza as credenciais informadas. |
fixTableIndex(response: JSONObject) |
Normaliza os atributos de retorno do tipo tabela para sempre possuírem índice. |
Types
G5Credential
/**
* Credenciais para acesso dos webservices da G5
*
*/
G5Credential = {
/**
* Usuário do G5. Não informar quando a encriptação for = 3
*/
user?: string;
/**
* Senha do usuário na G5 ou token quando a encriptação for = 3
*/
password: string;
/**
* Encriptação. Quando não informada assume 0.
*/
encryption?: string
}
G5Config
G5Config = {
/**
*
* URL base para as requisições (sem o nome do serviço).
*
* Ex.: http://servidor:1234/g5-senior-services/modulo_Sync
*
* Opcionalmente o wsdl completo pode ser enviado em cada requisição.
*
*/
baseUrl: string;
}
G5Request
/**
* Requisição para os webservices da G5
*
*/
G5Request = {
/**
* Endereço completo do wsdl do serviço, exatamente como
* definido na documentação do G5 Senior.
* Quando informado, sobrepoe a url base da configuração e
* o atributo serviço,
* utilizando obrigatóriamente o wsdl informado
*/
wsdl?: string;
/**
* Nome do webservice G5. Não utilizado quando informado o wsdl.
*
* Pode receber o nome do serviço com "." ou "_".
* Ex.: `com.senior.cad...` e `com_senior_cad...` são equivalentes.
*/
service?: string;
/**
* Nome da porta do webservice no G5
*/
port: string;
/**
* Parâmetros de execuçaõ do webservice.
*/
parameters: object
}
Detalhes
Registrar Credenciais
Registra as credenciais que serão utilizadas nas requisições.
Opcionalmente, as credenciais podem ser enviadas diretamente na requisição.
import { G5Credential, G5SeniorClient } from "g5-senior-client";
/**
* Credential
*/
const credential: G5Credential = {
user: "userName",
password: "my-pass",
encryption: "0"
}
G5SeniorClient.registry(credential);
Config
Permite definir a URL base para as requisições (sem o nome do serviço).
Ex.: http://servidor:1234/g5-senior-services/modulo_Sync
Opcionalmente o wsdl completo pode ser enviado em cada requisição no atributo wsdl, omitindo o service.
import { G5Config, G5SeniorClient } from "g5-senior-client";
/**
* Base URL
*/
const config: G5Config = {
baseUrl: "http://servidor:1234/g5-senior-services/modulo_Sync"
}
G5SeniorClient.config(config);
Parâmetros da Requisição
O atributo service pode receber o nome do serviço com "." ou "_". Ex.: com.senior.cad...
e com_senior_cad...
são equivalentes.
Opcionalmente pode-se enviar o wsdl completo (exatamente como indicado na documentação Senior), nesse caso o atributo service é desconsiderado. Exemplo no item Requisição sem registro prévio
import { G5Request } from "g5-senior-client";
/**
* Request Params
*/
const request: G5Request = {
service: "com.senior...",
port: "Gravar...",
parameters: {
codEmp: "1",
codFil: "1",
others: "...."
},
};
Requisição (Rxjs)
import { G5SeniorClient } from "g5-senior-client";
/**
* Request
*/
G5SeniorClient.request(request).subscribe({
// Handle Response
next: (res: any) => console.log(res),
// Handle Error
error: (err: any) => console.log(err),
});
Requisição (Promise)
import { G5SeniorClient } from "g5-senior-client";
/**
* Async Request
*/
G5SeniorClient.asyncRequest(request).then((res: any) => {
// Handle Response
console.log(res);
}).catch((err: any) =>
// Handle Error
console.log(err)
)
Passando credenciais e wsdl diretamente na requisição
import { G5Request, G5SeniorClient } from "g5-senior-client";
/**
* Request
*/
const request: G5Request = {
wsdl: "http://servidor:1234/g5-senior-services/modulo_Synccom.senior...",
port: "Gravar...",
parameters: {
codEmp: "1",
codFil: "1",
others: "...."
},
};
/**
* Credential
*/
const credential: G5Credential = {
user: "userName",
password: "my-pass",
encryption: "0"
}
/**
* Request
*/
G5SeniorClient.request(request, credential).subscribe({
// Handle Response
next: (res: any) => console.log(res),
// Handle Error
error: (err: any) => console.log(err),
});
Padronização do retorno de parâmetros do tipo tabela
Os parâmetros de retorno do tipo tabela apresentam um objeto quando contem apenas 1 registro e um array de objetos quando possuem mais de um registro.
Este método ajusta o retorno para que os parâmetros do tipo tabela sejam sempre um array com índice.
// res
//
// {
// codEmp: "1",
// usuarios: { <<<<< Sem índice quado possui apenas 1 elemento
// codUsu: "2",
// nomUsu: "John Doe"
// }
// }
/**
* Fix table
*/
const fixedRes = G5SeniorClient.fixTableIndex(res);
// fixedRes
//
// {
// codEmp: "1",
// usuarios: [ <<<<< Normalizado para sempre ter indice
// {
// codUsu: "2",
// nomUsu: "John Doe"
// }
// ]
// }