@iexec/web3mail
Version:
This product enables users to confidentially store data–such as mail address, documents, personal information ...
42 lines • 1.75 kB
JavaScript
import { NULL_ADDRESS } from 'iexec/utils';
import { ValidationError } from 'yup';
import { handleIfProtocolError, WorkflowError } from '../utils/errors.js';
import { addressSchema, campaignRequestSchema, throwIfMissing, } from '../utils/validators.js';
export const sendEmailCampaign = async ({ dataProtector = throwIfMissing(), workerpoolAddress = throwIfMissing(), campaignRequest, }) => {
const vCampaignRequest = campaignRequestSchema()
.required()
.label('campaignRequest')
.validateSync(campaignRequest);
const vWorkerpoolAddress = addressSchema()
.required()
.label('workerpoolAddress')
.validateSync(workerpoolAddress);
if (vCampaignRequest.workerpool !== NULL_ADDRESS &&
vCampaignRequest.workerpool.toLowerCase() !==
vWorkerpoolAddress.toLowerCase()) {
throw new ValidationError("workerpoolAddress doesn't match campaignRequest workerpool");
}
try {
// Process the prepared bulk request
const processBulkRequestResponse = await dataProtector.processBulkRequest({
bulkRequest: vCampaignRequest,
workerpool: vWorkerpoolAddress,
waitForResult: false,
});
return processBulkRequestResponse;
}
catch (error) {
// Protocol error detected, re-throwing as-is
if (error?.isProtocolError === true) {
throw error;
}
// Handle protocol errors - this will throw if it's an ApiCallError
handleIfProtocolError(error);
// For all other errors
throw new WorkflowError({
message: 'Failed to sendEmailCampaign',
errorCause: error,
});
}
};
//# sourceMappingURL=sendEmailCampaign.js.map