0.1.4 • Published 2 years ago

@lejsutils/nest v0.1.4

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years 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

2 years ago

0.1.3

2 years ago

0.1.2

2 years ago

0.1.1

2 years ago