0.0.2 • Published 4 months ago

@tresdoce-nestjs-toolkit/qrcode v0.0.2

Weekly downloads
-
License
MIT
Repository
github
Last release
4 months ago

Este módulo está pensado para ser utilizado en NestJS Starter, o cualquier proyecto que utilice una configuración centralizada, siguiendo la misma arquitectura del starter.

Glosario


📝 Requerimientos básicos

🛠️ Instalar dependencia

npm install -S @tresdoce-nestjs-toolkit/qrcode
yarn add @tresdoce-nestjs-toolkit/qrcode

👨‍💻 Uso

El servicio QrCodeService tiene disponible la función createQrCode() que genera el código QR y lo retorna como URL en base64, y también cuenta con la función createQrCodeBuffer() la cual genera el código QR y lo retorna como imagen.

Para poder hacer uso de estas funcionalidades, es cuestión de importar el QrCodeModule en el módulo o bien inyectar el servicio QrCodeService en el provider del módulo, recomendable que sea en el módulo principal.

Importación de módulo

// ./src/app.module.ts
import { Module } from '@nestjs/common';
import { QrCodeModule } from '@tresdoce-nestjs-toolkit/qrcode';

@Module({
  //...
  imports: [
    //...
    QrCodeModule,
    //...
  ],
  //...
})
export class AppModule {}

Inyección de servicio

// ./src/app.module.ts
import { Module } from '@nestjs/common';
import { QrCodeService } from '@tresdoce-nestjs-toolkit/qrcode';

@Module({
  //...
  providers: [
    //...
    QrCodeService,
    //...
  ],
  //...
})
export class AppModule {}

Controllers

Dependiendo que tipo de código QR deseas retornar, la diferencia va a estar en el controlador de la aplicación.

// ./src/app.controller.ts
import { Controller, Get, Res } from '@nestjs/common';
import type { Response } from 'express';

import { AppService } from './app.service';

@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {}

  // Retorna URL en base64 del código QR
  @Get('qr-code-url')
  async createQrCodeUrl() {
    return await this.appService.createQrCodeUrl();
  }

  // Retorna imagen del código QR
  @Get('qr-code-buffer')
  async createQrCodeBuffer(@Res() response: Response) {
    const qrCodeBuffer = await this.appService.createQrCodeBuffer();
    response.status(200);
    response.type('image/png');
    response.send(qrCodeBuffer);
  }
}

Services

Inyectamos el QrCodeService en el constructor de nuestro service para poder hacer uso de las funcionalidades.

La función para crear códigos QR admite dos parámetros, data que es un objeto que contiene el tipo de contenido y sus valores y options que es un objeto para customizar el código QR ya sea tamaño, version, margin, color, etc., este servicio ya cuenta con una configuración base, la cual se puede reemplazar los valores enviando los nuevos atributos.

Para más información sobre las opciones disponibles pódes visitar la documentación de QRCode - Options

// ./src/app.service.ts
import { Inject, Injectable } from '@nestjs/common';
import { QrCodeService } from '@tresdoce-nestjs-toolkit/qrcode';

@Injectable()
export class AppService {
  constructor(@Inject(QrCodeService) private qrcode: QrCodeService) {}

  // Genera código QR como URL en base64
  async createQrCodeUrl(): Promise<string> {
    const options = {
      width: 300,
    };
    return await this.qrcode.createQrCode({ type: 'text', text: 'Hola Mundo' }, options);
  }

  // Genera código QR como Buffer
  async createQrCodeBuffer(): Promise<Buffer> {
    const options = {
      width: 300,
    };
    return await this.qrcode.createQrCodeBuffer({ type: 'text', text: 'Hola Mundo' }, options);
  }
}

Tipos de código QR

El módulo cuenta con la generación de diversos contenidos en el código QR que va a depender de la estructura y contenido de la data que le envies a la función, sea URL o Buffer.

Texto plano
createQrCode({ type: 'text', text: 'Hola Mundo' });
URL
createQrCode({ type: 'url', url: 'https://www.ejemplo.com' });
WIFI
createQrCode({
  type: 'wifi',
  ssid: 'MiWifi',
  password: 'password123',
  encryption: 'WPA',
});
vCard
createQrCode({
  type: 'vcard',
  name: 'Juan Perez',
  phone: '+34123456789',
  email: 'juan.perez@ejemplo.com',
  organization: 'Ejemplo S.A.',
});
Email
createQrCode({
  type: 'email',
  address: 'info@ejemplo.com',
  subject: 'Saludos',
  body: 'Hola, este es un email de ejemplo.',
});
SMS
createQrCode({
  type: 'sms',
  phone: '+34123456789',
  message: 'Hola, ¿cómo estás?',
});
Whatsapp
createQrCode({
  type: 'whatsapp',
  phone: '+34123456789',
  message: 'Hola, ¿cómo estás?',
});
Geolocalización
createQrCode({
  type: 'geo',
  latitude: -34.6395141,
  longitude: -58.4022226,
});
Evento
createQrCode({
  type: 'event',
  summary: 'Reunión de Trabajo',
  start: '20261015T170000Z',
  end: '20261015T190000Z',
});
Criptomoneda
createQrCode({
  type: 'crypto',
  currency: 'bitcoin',
  address: '1BoatSLRHtKNngkdXEeobR76b53LETtpyT',
});

📄 Changelog

Todos los cambios notables de este paquete se documentarán en el archivo Changelog.


0.0.2

4 months ago

0.0.1

6 months ago

0.0.1-beta.0

6 months ago