Skip to content

Commit

Permalink
sonar fix
Browse files Browse the repository at this point in the history
  • Loading branch information
furknyavuz committed Jun 27, 2022
1 parent d2fb6af commit e354c75
Show file tree
Hide file tree
Showing 6 changed files with 106 additions and 105 deletions.
74 changes: 39 additions & 35 deletions app/consumer/sms-queue.consumer.ts
Expand Up @@ -8,21 +8,25 @@ import { SmsController } from '../controller/sms.controller';
import { Sms } from '../interface/sms.interface';

export class SmsQueueConsumer implements QueueConsumer {

private channel: any;
private ctxArgs: ContextArgs = {} as ContextArgs;
private smsController: SmsController;

constructor(private smsController = new SmsController()) {}
constructor() {
this.smsController = new SmsController();
}

init = (channel: string, ctxArgs: ContextArgs) => {
init = ( channel: string, ctxArgs: ContextArgs ) => {
this.channel = channel;
this.ctxArgs = ctxArgs;
return this;
};

onMessage = async (msg: any) => {
if (msg !== null) {
onMessage = async ( msg: any ) => {
if ( msg !== null ) {
const msgStr = msg.content.toString();
const msgObj = JSON.parse(msgStr);
const msgObj = JSON.parse( msgStr );

const message: SmsActionType = msgObj.message;

Expand All @@ -33,60 +37,60 @@ export class SmsQueueConsumer implements QueueConsumer {
let phoneNumber: string | undefined;
let params: any | undefined;

if (message?.smsType && Object.keys(message.smsType)?.length > 0) {
messageKey = Object.keys(message.smsType)[0];
phoneNumber = (message.smsType as any)[messageKey].params.phoneNumber;
params = (message.smsType as any)[messageKey].params;
if ( message?.smsType && Object.keys( message.smsType )?.length > 0 ) {
messageKey = Object.keys( message.smsType )[ 0 ];
phoneNumber = ( message.smsType as any )[ messageKey ].params.phoneNumber;
params = ( message.smsType as any )[ messageKey ].params;
} else {
console.log('Message will be rejected: ', msgObj);
this.channel.reject(msg, false);
console.log( 'Message will be rejected: ', msgObj );
this.channel.reject( msg, false );
return;
}

if (messageKey && phoneNumber && params) {
if ( messageKey && phoneNumber && params ) {
let hook = async () => {
await this.smsController.sendSms(
this.ctxArgs.mongodb_provider as MongoDbProvider,
{
messageKey,
providerKey: 'Twilio',
to: phoneNumber,
payload: params,
languageCode: message.language,
} as Sms
this.ctxArgs.mongodb_provider as MongoDbProvider,
{
messageKey,
providerKey: 'Twilio',
to: phoneNumber,
payload: params,
languageCode: message.language,
} as Sms
);
};

await this.operate(msg, msgObj, requeue, hook);
await this.operate( msg, msgObj, requeue, hook );
}
}
};

private operate = async (
msg: any,
msgObj: any,
requeue: boolean,
hook: Function
msg: any,
msgObj: any,
requeue: boolean,
hook: Function
) => {
try {
console.log(
'Message Received with deliveryTag: ' + msg.fields.deliveryTag,
msgObj
'Message Received with deliveryTag: ' + msg.fields.deliveryTag,
msgObj
);
await hook();
await this.channel.ack(msg);
await this.channel.ack( msg );
console.log(
'Message Processed with deliveryTag: ' + msg.fields.deliveryTag,
msgObj
'Message Processed with deliveryTag: ' + msg.fields.deliveryTag,
msgObj
);
} catch (e) {
} catch ( e ) {
console.log(
'Error with processing deliveryTag: ' + msg.fields.deliveryTag,
msgObj,
e
'Error with processing deliveryTag: ' + msg.fields.deliveryTag,
msgObj,
e
);

this.channel.nack(msg, false, requeue);
this.channel.nack( msg, false, requeue );
}
};
}
104 changes: 51 additions & 53 deletions app/controller/sms.controller.ts
Expand Up @@ -13,10 +13,11 @@ import { v4 as uuidv4 } from 'uuid';
import { SmsServiceEnum } from '../enum/sms-service.enum';

export class SmsController {
constructor(
private builderUtil: BuilderUtil = new BuilderUtil()
) {
// intentionally blank

builderUtil: BuilderUtil;

constructor() {
this.builderUtil = new BuilderUtil();
}

/**
Expand All @@ -25,49 +26,48 @@ export class SmsController {
* @param sms sms
*/
sendSms = async (
mongodb_provider: MongoDbProvider,
sms: Sms
): Promise<any> => {
mongodb_provider: MongoDbProvider,
sms: Sms
): Promise<any> => {

sms.id = uuidv4();

const messageKey = sms.messageKey;

const serviceProvider = await this.getServiceProvider(
mongodb_provider,
sms.providerKey.toUpperCase()
mongodb_provider,
sms.providerKey.toUpperCase()
);

const serviceClient = await this.getServiceClient(
mongodb_provider,
serviceProvider.key,
serviceProvider.payload
mongodb_provider,
serviceProvider.key,
serviceProvider.payload
);

let message: string;
let from: string | undefined;
let preconfiguredMessagePayload: any;

if( messageKey ) {
if ( messageKey ) {
const defaultLanguageCode = process.env.LANGUAGE_CODE ?? 'en';

const preconfiguredMessage = await this.getPreconfiguredMessage(
mongodb_provider,
messageKey,
sms.languageCode,
defaultLanguageCode
mongodb_provider,
messageKey,
sms.languageCode,
defaultLanguageCode
);

message = preconfiguredMessage.messages[0].message;
message = preconfiguredMessage.messages[ 0 ].message;
preconfiguredMessagePayload = preconfiguredMessage.payload;
from = serviceClient.service.getFromValue( preconfiguredMessagePayload );
}
else {
from = serviceClient.service.getFromValue( preconfiguredMessagePayload );
} else {
message = sms.payload.message;
from = serviceProvider.payload.from;
}

if( from === undefined ) {
if ( from === undefined ) {
let e = new Error( 'From not found' ) as HttpError;
e.responseCode = ResponseCode.INTERNAL_SERVER_ERROR;
throw e;
Expand All @@ -79,37 +79,35 @@ export class SmsController {
sms.message = messageBody;
sms.from = from;

return serviceClient.service.send(serviceClient.client, sms, preconfiguredMessagePayload);
return serviceClient.service.send( serviceClient.client, sms, preconfiguredMessagePayload );
};

/**
* Creates preconfigured message
* @param context context
* @param sms preconfiguredMessage
*/
createPreconfiguredMessage = async (context: Context, preconfiguredMessage: PreconfiguredMessage): Promise<any> => {
const conn = context.mongodb_provider.getConnection()
const preconfiguredMessageRepository = await new PreconfiguredMessageRepository().initialize(conn);
return await preconfiguredMessageRepository.createPreconfiguredMessage(preconfiguredMessage)
}
createPreconfiguredMessage = async ( context: Context, preconfiguredMessage: PreconfiguredMessage ): Promise<any> => {
const conn = context.mongodb_provider.getConnection();
const preconfiguredMessageRepository = await new PreconfiguredMessageRepository().initialize( conn );
return preconfiguredMessageRepository.createPreconfiguredMessage( preconfiguredMessage );
};

/**
* gets service client
* @param provider service provider
* @param serviceKey SmsServiceEnum
* @param serviceConfigPayload any
*/
private getServiceClient = async (
provider: MongoDbProvider,
serviceKey: SmsServiceEnum,
serviceConfigPayload: any
private getServiceClient = async (
serviceKey: SmsServiceEnum,
serviceConfigPayload: any
): Promise<ServiceClient> => {
const service = new SmsServiceWrapper(serviceKey);
const service = new SmsServiceWrapper( serviceKey );

const client = await service.initializeClient(serviceConfigPayload);
const client = await service.initializeClient( serviceConfigPayload );

if (client === undefined)
throw new Error('Client is not initialized correctly');
if ( client === undefined )
throw new Error( 'Client is not initialized correctly' );

return { client, service } as ServiceClient;
};
Expand All @@ -120,19 +118,19 @@ export class SmsController {
* @param serviceKey service key
*/
private getServiceProvider = async (
provider: MongoDbProvider,
serviceKey: string
provider: MongoDbProvider,
serviceKey: string
): Promise<any> => {
const conn = provider.getConnection();

const serviceProviderRepository =
await new ServiceProviderRepository().initialize(conn);
await new ServiceProviderRepository().initialize( conn );

let serviceProvider: any =
await serviceProviderRepository.getServiceProviderByKey(serviceKey);
await serviceProviderRepository.getServiceProviderByKey( serviceKey );

if (serviceProvider === null)
throw new Error('Upload service can not be found');
if ( serviceProvider === null )
throw new Error( 'Upload service can not be found' );

return serviceProvider;
};
Expand All @@ -145,25 +143,25 @@ export class SmsController {
): Promise<PreconfiguredMessage> => {
const conn = provider.getConnection();

const preconfiguredMessageRepository = await new PreconfiguredMessageRepository().initialize(conn);
const preconfiguredMessageRepository = await new PreconfiguredMessageRepository().initialize( conn );

let preconfiguredMessage: PreconfiguredMessage[] =
await preconfiguredMessageRepository.getPreconfiguredMessage( messageKey, languageCode, defaultLangaugeCode );

if( preconfiguredMessage.length === 0 || preconfiguredMessage[0].messages?.length < 1 ) {
let e = new Error('preconfigured message not found') as HttpError;
if ( preconfiguredMessage.length === 0 || preconfiguredMessage[ 0 ].messages?.length < 1 ) {
let e = new Error( 'preconfigured message not found' ) as HttpError;
e.responseCode = ResponseCode.BAD_REQUEST;
throw e;
}

return preconfiguredMessage[0];
}
return preconfiguredMessage[ 0 ];
};

private objectToMap = (obj: object) => {
private objectToMap = ( obj: object ) => {
let m = new Map<string, string>();
for( const [key, value] of Object.entries(obj) ) {
for ( const [ key, value ] of Object.entries( obj ) ) {
m.set( '${' + key + '}', value.toString() );
}
return m;
}
}
};
}
23 changes: 11 additions & 12 deletions app/provider/twilio.provider.ts
Expand Up @@ -16,45 +16,44 @@ class TwilioPackage {
}

export class TwilioService implements SmsService {
constructor(private payload: any = null) {}

/**
* initializes client
* @param providerConfig provider config
*/
async initializeClient(providerConfig: any): Promise<any> {
async initializeClient( providerConfig: any ): Promise<any> {
const Twilio: any = TwilioPackage.getInstance();

return new Twilio( providerConfig.accountId, providerConfig.authToken )
return new Twilio( providerConfig.accountId, providerConfig.authToken );
}

/**
* sends sms
* @param client service client
* @param sms sms
*/
async send( client: any, sms: Sms, payload: any ): Promise<Sms> {
async send( client: any, sms: Sms ): Promise<Sms> {
const response = await client.messages.create( {
body: sms.message,
from: sms.from,
to: sms.to
} );

if( response ) {
sms.created_time = response.dateCreated
sms.status = response.status
sms.externalId = response.sid
if ( response ) {
sms.created_time = response.dateCreated;
sms.status = response.status;
sms.externalId = response.sid;
}

return sms
return sms;
}

/**
* get from value
* get from value
* @param payload any payload
* @returns string from
*/
getFromValue(payload: any): string | undefined {
return payload?.twilio?.from
getFromValue( payload: any ): string | undefined {
return payload?.twilio?.from;
}
}
2 changes: 1 addition & 1 deletion app/route/monitor.route.ts
Expand Up @@ -9,6 +9,6 @@ const subRoutes = {

export const router = Router();

router.get(subRoutes.alive, async (req: Request, res: Response) => {
router.get(subRoutes.alive, async (_req: Request, res: Response) => {
res.status(ResponseCode.OK).send();
});
4 changes: 2 additions & 2 deletions dependency-checker.ts
Expand Up @@ -10,13 +10,13 @@ let indexOfDependedBy = -1;
console.log(
'<p align="center">\n' +
' <a href="https://opentemplatehub.com">\n' +
' <img src="https://raw.githubusercontent.com/open-template-hub/open-template-hub.github.io/master/assets/logo/ui/web-ui-logo.png" alt="Logo" width=200>\n' +
' <img src="https://raw.githubusercontent.com/open-template-hub/open-template-hub.github.io/master/assets/logo/server/sms-server-logo.png" alt="Logo" width=200>\n' +
' </a>\n' +
'</p>\n' +
'\n' +
'\n' +
'<h1 align="center">\n' +
'Open Template Hub - Company Profile UI Template v4\n' +
'Open Template Hub - SMS Server Template v4\n' +
' <br/>\n' +
'(outdated packages)\n' +
'</h1>\n' +
Expand Down

0 comments on commit e354c75

Please sign in to comment.