forked from Yara724/api
Tidied up the project
This commit is contained in:
@@ -1,16 +1,20 @@
|
||||
import { Injectable, Logger } from "@nestjs/common";
|
||||
import axios, { isAxiosError } from "axios";
|
||||
import { isAxiosError } from "axios";
|
||||
import { buildParsianTemplateMessage } from "./parsian-template-messages";
|
||||
import {
|
||||
SmsProviderException,
|
||||
SmsTransportException,
|
||||
} from "./sms-provider.exception";
|
||||
import { SendMessage, VerifyLookUpMessage } from "./sms-gateway.types";
|
||||
import { firstValueFrom } from "rxjs";
|
||||
import { HttpService } from "@nestjs/axios";
|
||||
|
||||
@Injectable()
|
||||
export class ParsianSmsGateway {
|
||||
private readonly logger = new Logger(ParsianSmsGateway.name);
|
||||
|
||||
constructor(private readonly httpService: HttpService) {}
|
||||
|
||||
async sendMessage(data: SendMessage) {
|
||||
try {
|
||||
const body = await this.requestSend(data.receptor, data.message);
|
||||
@@ -19,7 +23,11 @@ export class ParsianSmsGateway {
|
||||
} catch (e) {
|
||||
if (e instanceof SmsProviderException) throw e;
|
||||
const detail = isAxiosError(e)
|
||||
? { status: e.response?.status, data: e.response?.data, message: e.message }
|
||||
? {
|
||||
status: e.response?.status,
|
||||
data: e.response?.data,
|
||||
message: e.message,
|
||||
}
|
||||
: e;
|
||||
this.logger.error(
|
||||
`Parsian Send transport error receptor=${data.receptor} detail=${JSON.stringify(detail)}`,
|
||||
@@ -39,7 +47,11 @@ export class ParsianSmsGateway {
|
||||
} catch (e) {
|
||||
if (e instanceof SmsProviderException) throw e;
|
||||
const detail = isAxiosError(e)
|
||||
? { status: e.response?.status, data: e.response?.data, message: e.message }
|
||||
? {
|
||||
status: e.response?.status,
|
||||
data: e.response?.data,
|
||||
message: e.message,
|
||||
}
|
||||
: e;
|
||||
this.logger.error(
|
||||
`Parsian verifyLookUp transport error receptor=${data.receptor} template=${data.template} detail=${JSON.stringify(detail)}`,
|
||||
@@ -60,7 +72,10 @@ export class ParsianSmsGateway {
|
||||
};
|
||||
}
|
||||
|
||||
private async requestSend(receptor: string, message: string): Promise<unknown> {
|
||||
private async requestSend(
|
||||
receptor: string,
|
||||
message: string,
|
||||
): Promise<unknown> {
|
||||
const baseUrl = process.env.PARSIAN_SMS_URL;
|
||||
if (!baseUrl?.trim()) {
|
||||
throw new SmsTransportException(
|
||||
@@ -71,7 +86,9 @@ export class ParsianSmsGateway {
|
||||
}
|
||||
|
||||
const url = `${baseUrl}=${receptor}&Message=${encodeURIComponent(message)}`;
|
||||
const response = await axios.get(url, { headers: this.parsianHeaders() });
|
||||
const response = await firstValueFrom(
|
||||
this.httpService.get(url, { headers: this.parsianHeaders() }),
|
||||
);
|
||||
|
||||
if (response.status < 200 || response.status >= 300) {
|
||||
throw new SmsProviderException("send", {
|
||||
|
||||
Reference in New Issue
Block a user