import { Injectable } from '@nestjs/common' import { Crava as CravaSettings } from '../../typings/global' import { ExternalExceptionError } from '../../errors/external_exception.error' import { HttpService } from '../http' import { Product } from './enums/product.enum' import { User } from './types/user.type' @Injectable() export class CravaService { constructor(private readonly httpService: HttpService) {} private get settings(): CravaSettings { return globalThis.secret.crava } async redeemBenefict({ user, product }: { user: User; product: Product }): Promise { try { await this.httpService.put( `${this.settings.endpoint}/redeemedbenefits`, { id: user.id, cpf: user.documentNumber, codigo: product }, { name: this.constructor.name, headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${this.settings.token}`, }, }, ) } catch (error) { throw new ExternalExceptionError(`Crava API returns ${error.statusCode} status code error.`) } } }