0.1.4 • Published 11 months ago

@lejsutils/nest v0.1.4

Weekly downloads
-
License
ISC
Repository
github
Last release
11 months ago

LEJS NEST

Módulo não oficial da API do Legis para NestJS com objetivo de facilitar requisições bem como tratamento de webhooks vindos do sistema Legis

Instalação

Instale o pacote no seu projeto Nest com o comando:

npm i --save @lejsutils/nest

Para recebimento de eventos de webhooks recebidos do Legis é necessário utilizar o módulo EventEmitter do NestJS em conjunto com o próprio módulo do LEJS Nest

import { Module } from  '@nestjs/common';
import { AppController } from  './app.controller';
import { AppService } from  './app.service';
import { EventEmitter2, EventEmitterModule } from  '@nestjs/event-emitter';
import { LegisModule } from  '@lejsutils/nest';

@Module({
	imports: [
		EventEmitterModule.forRoot({
			global:  true,
		}),
		LegisModule.register({
			eventEmitterClass:  EventEmitter2,
			webhooksBasePath:  'api/v1/jusapi',
			webhooksPaths: {
				certificates:  'companyLawsuits'
			}
		})
	],
	controllers: [AppController],
	providers: [AppService],
})

export  class  AppModule {}

Essa configuração indica ao módulo para receber os callbacks de certificados no endpoint POST: api/v1/jusapi/companyLawsuits

A partir dessa configuração básica é possível "ouvir" eventos de leitura de certificados de processos trabalhistas como no exemplo a seguir:

import { Injectable } from  '@nestjs/common';
import { OnEvent } from  '@nestjs/event-emitter';
import { CertificateReport } from  '@lejsutils/nest';

@Injectable()
export classAppService {
	@OnEvent('legisreport.certificate')
	handleCertificate(event: CertificateReport) {
		console.log(event);
	}
}

É passado como segundo parâmetro ainda o payload original (como veio do Legis) caso algum detalhe adicional seja necessário

import { Injectable } from  '@nestjs/common';
import { OnEvent } from  '@nestjs/event-emitter';
import { CertificateReport } from  '@lejsutils/nest';
import { CertificatesWebhookResponse } from  "@lejsutils/client/webhooks";

@Injectable()
export classAppService {
	@OnEvent('legisreport.certificate')
	handleCertificate(event: CertificateReport, webhookPayload: CertificatesWebhookResponse) {
		console.log(event);
		console.log(webhookPayload);
	}
}

Traduzindo os eventos em termos do seu domínio

É possível opcionalmente transformar o evento original do pacote através de uma função personalizada

@Module({
	imports: [
		EventEmitterModule.forRoot({
			global:  true,
		}),
		LegisModule.register({
			eventEmitterClass:  EventEmitter2,
			webhooksBasePath:  'api/v1/jusapi',
			webhooksPaths: {
				certificates:  'companyLawsuits'
			},
			customEvents: {
				certificate(report: CertificateReport) {
					const myCustomObject = {
						myCustomObjectId:  `req-${report.requestId}`
					}

					return {
						data: myCustomObject,
						event:  'mycustom.event',
					};
				},
			}
		})
	],
	controllers: [AppController],
	providers: [AppService],
})

export  class  AppModule {}

O campo "event" é opcional, caso seja necessário apenas transformação dos dados

0.1.4

11 months ago

0.1.3

11 months ago

0.1.2

11 months ago

0.1.1

11 months ago