Dive into secure and efficient coding practices with our curated list of the top 10 examples showcasing 'italia-ts-commons' in functional components in JavaScript. Our advanced machine learning engine meticulously scans each line of code, cross-referencing millions of open source libraries to ensure your implementation is not just functional, but also robust and secure. Elevate your React applications to new heights by mastering the art of handling side effects, API calls, and asynchronous operations with confidence and precision.
// as the notification object is retrieved from database (?)
return left(
TransientError(
`Notification not found|notification=${notificationId}|message=${
message.id
}`
)
);
}
const errorOrEmailNotification = EmailNotification.decode(
maybeEmailNotification.value
);
if (isLeft(errorOrEmailNotification)) {
const error = readableReport(errorOrEmailNotification.value);
return left(
PermanentError(
`Wrong format for email notification|notification=${notificationId}|message=${
message.id
}|${error}`
)
);
}
const emailNotification = errorOrEmailNotification.value.channels.EMAIL;
const documentHtml = await generateDocumentHtml(
content.subject,
content.markdown,
senderMetadata
);
serviceVersion: userAttributes.service.version
})
);
if (isLeft(createdMessageEventOrError)) {
winston.error(
`CreateMessageHandler|Unable to decode CreatedMessageEvent|${
userService.serviceId
}|${retrievedMessage.id}|${readableReport(
createdMessageEventOrError.value
).replace(/\n/g, " / ")}`
);
return ResponseErrorValidation(
"Unable to decode CreatedMessageEvent",
readableReport(createdMessageEventOrError.value)
);
}
// queue the message to the created messages queue by setting
// the message to the output binding of this function
// tslint:disable-next-line:no-object-mutation
context.bindings.createdMessage = createdMessageEventOrError.value;
//
// generate appinsights event
//
// track the event that a message has been created
appInsightsClient.trackEvent({
measurements: {
duration: diffInMilliseconds(startRequestTime)
winston.debug(
`EmailNotificationsHandlerIndex|Dequeued email notification|${JSON.stringify(
context.bindings
)}`
);
// since this function gets triggered by a queued message that gets
// deserialized from a json object, we must first check that what we
// got is what we expect.
const errorOrNotificationEvent = NotificationEvent.decode(
context.bindings.notificationEvent
);
if (isLeft(errorOrNotificationEvent)) {
winston.error(
`EmailNotificationsHandler|Fatal! No valid message found in bindings.|${readableReport(
errorOrNotificationEvent.value
)}`
);
return stopProcessing;
}
const emailNotificationEvent = errorOrNotificationEvent.value;
const notificationStatusUpdater = getNotificationStatusUpdater(
notificationStatusModel,
NotificationChannelEnum.EMAIL,
emailNotificationEvent.message.id,
emailNotificationEvent.notificationId
);
winston.debug(`useSendgridTransport:${useSendgridTransport}`);
// as the notification object is retrieved from database (?)
return left(
TransientError(
`Notification not found|notification=${notificationId}|message=${
message.id
}`
)
);
}
const errorOrWebhookNotification = WebhookNotification.decode(
maybeWebhookNotification.value
);
if (isLeft(errorOrWebhookNotification)) {
const error = readableReport(errorOrWebhookNotification.value);
return left(
PermanentError(
`Wrong format for webhook notification|notification=${notificationId}|message=${
message.id
}|${error}`
)
);
}
const webhookNotification = errorOrWebhookNotification.value.channels.WEBHOOK;
const startWebhookCallTime = process.hrtime();
const sendResult = await sendToWebhook(
webhookNotification.url,
message,
winston.debug(
`WebhookNotificationsHandlerIndex|Dequeued webhook notification|${JSON.stringify(
context.bindings
)}`
);
// since this function gets triggered by a queued message that gets
// deserialized from a json object, we must first check that what we
// got is what we expect.
const errorOrNotificationEvent = NotificationEvent.decode(
context.bindings.notificationEvent
);
if (isLeft(errorOrNotificationEvent)) {
winston.error(
`WebhookNotificationsHandler|Fatal! No valid message found in bindings.|${readableReport(
errorOrNotificationEvent.value
)}`
);
return;
}
const webhookNotificationEvent = errorOrNotificationEvent.value;
const notificationStatusUpdater = getNotificationStatusUpdater(
notificationStatusModel,
NotificationChannelEnum.WEBHOOK,
webhookNotificationEvent.message.id,
webhookNotificationEvent.notificationId
);
const serviceId = webhookNotificationEvent.message.senderServiceId;
message: newMessageWithoutContent,
senderMetadata: {
departmentName: userAttributes.service.departmentName,
organizationFiscalCode: userAttributes.service.organizationFiscalCode,
organizationName: userAttributes.service.organizationName,
serviceName: userAttributes.service.serviceName
},
serviceVersion: userAttributes.service.version
})
);
if (isLeft(createdMessageEventOrError)) {
winston.error(
`CreateMessageHandler|Unable to decode CreatedMessageEvent|${
userService.serviceId
}|${retrievedMessage.id}|${readableReport(
createdMessageEventOrError.value
).replace(/\n/g, " / ")}`
);
return ResponseErrorValidation(
"Unable to decode CreatedMessageEvent",
readableReport(createdMessageEventOrError.value)
);
}
// queue the message to the created messages queue by setting
// the message to the output binding of this function
// tslint:disable-next-line:no-object-mutation
context.bindings.createdMessage = createdMessageEventOrError.value;
//
const returnedMessage:
| MessageResponseWithContent
| MessageResponseWithoutContent = {
message,
notification: notificationStatuses.toUndefined(),
// we do not return the status date-time
status: maybeMessageStatus
.map(messageStatus => messageStatus.status)
// when the message has been received but a MessageStatus
// does not exist yet, the message is considered to be
// in the ACCEPTED state (not yet stored in the inbox)
.getOrElse(MessageStatusValueEnum.ACCEPTED)
};
return ResponseSuccessJson(returnedMessage);
};
}
const getDebugHandler: GetDebug = (request, _, auth, userAttributes) => {
return Promise.resolve(
ResponseSuccessJson({
auth: {
...auth,
// must convert the Set to an Array
// see https://stackoverflow.com/questions/31190885/json-stringify-a-set
groups: Array.from(auth.groups.values())
},
body: request.body,
headers: request.headers,
params: request.params,
user: userAttributes
})
);
};
return async (auth, _, userAttributes, fiscalCode) => {
const errorOrMaybeProfile = await profileModel.findOneProfileByFiscalCode(
fiscalCode
);
if (isRight(errorOrMaybeProfile)) {
const maybeProfile = errorOrMaybeProfile.value;
if (isSome(maybeProfile)) {
const profile = maybeProfile.value;
if (auth.groups.has(UserGroup.ApiFullProfileRead)) {
// if the client is a trusted application we return the
// extended profile
return ResponseSuccessJson(toExtendedProfile(profile));
} else {
// or else, we return a limited profile
return ResponseSuccessJson(
toLimitedProfile(
profile,
isSenderAllowed(
profile.blockedInboxOrChannels,
userAttributes.service.serviceId
)
)
);
}
} else {
return ResponseErrorNotFound(
"Profile not found",
"The profile you requested was not found in the system."
);
}
} else {
// if the service is not visible anymore
// delete it from the visible services list
return remove(service.serviceId, visibleServicesObj);
} else if (
// if the service is visible and we don't have a related
// cached visible service yet...
service.isVisible &&
(isNone(maybeVisibleService) ||
// ... or if the updated service is visible and the version
// is greater than the stored version of the cached visible service
service.version > maybeVisibleService.value.version)
) {
// store the visible service into the object (map)
return insert(
service.serviceId,
pick(
[
"departmentName",
"id",
"organizationFiscalCode",
"organizationName",
"serviceId",
"serviceName",
"version"
],
service
),
visibleServicesObj
);
}
return visibleServicesObj;
}