fix: Now it's getting the API URL directly in the request, no longer need the variable in the env file

This commit is contained in:
Davidson Gomes 2023-07-16 17:38:01 -03:00
parent 64e19699fb
commit ec7ad70458
7 changed files with 42 additions and 22 deletions

View File

@ -4,6 +4,8 @@
* Fixed error to send message in large groups
* Docker files adjusted
* Fixed in the postman collection the webhookByEvent parameter by webhook_by_events
* Now it's getting the API URL directly in the request, no longer need the variable in the env file
# 1.2.2 (2023-07-15 09:36)

View File

@ -15,8 +15,6 @@ services:
volumes:
- evolution_mongodb_data:/data/db
- evolution_mongodb_configdb:/data/configdb
networks:
- evolution-net
expose:
- 27017

View File

@ -1,6 +1,6 @@
{
"name": "evolution-api",
"version": "1.2.2",
"version": "1.2.3",
"description": "Rest api for communication with WhatsApp",
"main": "./dist/src/main.js",
"scripts": {

View File

@ -160,8 +160,6 @@ export abstract class RouterBroker {
const v = validate(ref, schema);
console.log(v, '@checkei aqui');
if (!v.valid) {
const message: any[] = v.errors.map(({ property, stack, schema }) => {
let message: string;
@ -203,8 +201,6 @@ export abstract class RouterBroker {
const v = validate(ref, schema);
console.log(v, '@checkei aqui');
if (!v.valid) {
const message: any[] = v.errors.map(({ property, stack, schema }) => {
let message: string;

View File

@ -12,6 +12,7 @@ import { ChatwootService } from '../services/chatwoot.service';
import { Logger } from '../../config/logger.config';
import { wa } from '../types/wa.types';
import { RedisCache } from '../../db/redis.client';
import { isURL } from 'class-validator';
export class InstanceController {
constructor(
@ -27,7 +28,8 @@ export class InstanceController {
private readonly logger = new Logger(InstanceController.name);
public async createInstance({
public async createInstance(
{
instanceName,
webhook,
webhook_by_events,
@ -38,7 +40,9 @@ export class InstanceController {
chatwoot_token,
chatwoot_url,
chatwoot_sign_msg,
}: InstanceDto) {
}: InstanceDto,
apiURL: string,
) {
this.logger.verbose('requested createInstance from ' + instanceName + ' instance');
const mode = this.configService.get<Auth>('AUTHENTICATION').INSTANCE.MODE;
@ -82,6 +86,9 @@ export class InstanceController {
let getEvents: string[];
if (webhook) {
if (!isURL(webhook, { require_tld: false })) {
throw new BadRequestException('Invalid "url" property in webhook');
}
this.logger.verbose('creating webhook');
try {
this.webhookService.create(instance, {
@ -132,7 +139,11 @@ export class InstanceController {
throw new BadRequestException('url is required');
}
const urlServer = this.configService.get<HttpServer>('SERVER').URL;
if (!isURL(chatwoot_url, { require_tld: false })) {
throw new BadRequestException('Invalid "url" property in chatwoot');
}
const urlServer = apiURL;
try {
this.chatwootService.create(instance, {
@ -203,6 +214,10 @@ export class InstanceController {
let getEvents: string[];
if (webhook) {
if (!isURL(webhook, { require_tld: false })) {
throw new BadRequestException('Invalid "url" property in webhook');
}
this.logger.verbose('creating webhook');
try {
this.webhookService.create(instance, {
@ -266,7 +281,11 @@ export class InstanceController {
throw new BadRequestException('url is required');
}
const urlServer = this.configService.get<HttpServer>('SERVER').URL;
if (!isURL(chatwoot_url, { require_tld: false })) {
throw new BadRequestException('Invalid "url" property in chatwoot');
}
const urlServer = apiURL;
try {
this.chatwootService.create(instance, {

View File

@ -14,6 +14,7 @@ const webhookSchema = new Schema<WebhookRaw>({
url: { type: String, required: true },
enabled: { type: Boolean, required: true },
events: { type: [String], required: true },
webhook_by_events: { type: Boolean, required: true },
});
export const WebhookModel = dbserver?.model(WebhookRaw.name, webhookSchema, 'webhook');

View File

@ -23,11 +23,15 @@ export class InstanceRouter extends RouterBroker {
logger.verbose('request query: ');
logger.verbose(req.query);
const apiURL = req.headers.host || req.hostname;
logger.verbose('API URL: ' + apiURL);
const response = await this.dataValidate<InstanceDto>({
request: req,
schema: instanceNameSchema,
ClassRef: InstanceDto,
execute: (instance) => instanceController.createInstance(instance),
execute: (instance) => instanceController.createInstance(instance, apiURL),
});
return res.status(HttpStatus.CREATED).json(response);