public async Task <TransactMessageResponse> SendMessageAsync(TransactMessage message) { if (message == null) { throw new ArgumentNullException("message"); } SendMessagePreCommunicationVerification(message); var encodedMessage = _encoder.Encode(message); string response; using (var silverpop = _silverpopFactory()) { response = await silverpop.HttpUploadAsync(encodedMessage); } var decodedResponse = _decoder.Decode(response); if (decodedResponse.Status == TransactMessageResponseStatus.EncounteredErrorsNoMessagesSent) { throw new TransactClientException( decodedResponse.Error.Value, encodedMessage, decodedResponse.RawResponse); } return(decodedResponse); }
public void InvokeGetRecipientBatchedMessages <T>( int recipientCount, int recipientsPerBatch, T personalizationTagsForEachRecipient) { var message = TransactMessage.Create("123", Enumerable.Range(0, recipientCount) .Select(x => TransactMessageRecipient.Create( Guid.NewGuid().ToString() + "@example.com", personalizationTagsObject: personalizationTagsForEachRecipient)) .ToArray()); var stopwatch = Stopwatch.StartNew(); Console.WriteLine("Stopwatch started."); // Console.WriteLine("Calling GetRecipientBatchedMessages on constructed message..."); // var recipientBatchedMesssages = message.GetRecipientBatchedMessages(recipientsPerBatch); // Console.WriteLine("{0} messages were generated.", recipientBatchedMesssages.Count()); // Console.WriteLine(); stopwatch.Stop(); Console.WriteLine("Operation took {0}", stopwatch.Elapsed.ToString()); Console.WriteLine(); }
private static string EncodedMessage( string campaignId = "001", string transactionId = null, bool showAllSendDetail = false, bool sendAsBatch = false, bool noRetryOnFailure = false, ICollection <string> saveColumns = null, ICollection <TransactMessageRecipient> recipients = null) { if (saveColumns == null) { saveColumns = new List <string>(); } if (recipients == null) { recipients = new List <TransactMessageRecipient>(); } var message = new TransactMessage() { CampaignId = campaignId, TransactionId = transactionId, ShowAllSendDetail = showAllSendDetail, SendAsBatch = sendAsBatch, NoRetryOnFailure = noRetryOnFailure, SaveColumns = saveColumns, Recipients = recipients, }; return(new TransactMessageEncoder().Encode(message)); }
private static TransactMessage GetTestMessage(string testType) { return(TransactMessage.Create("123456", TransactMessageRecipient.Create( "*****@*****.**", new TestPersonalizationTags() { Tag1 = "tag1-value", Tag2 = "tag2-value" }))); }
public void SetsMessageRecipient() { var recipient = new TransactMessageRecipient() { EmailAddress = "*****@*****.**" }; var message = TransactMessage.Create("123", recipient); Assert.Equal(recipient, message.Recipients.Single()); }
private void SendMessagePreCommunicationVerification(TransactMessage message) { if (message.Recipients.Count() > TransactClientConfiguration.MaxRecipientsPerNonBatchRequest) { throw new ArgumentException(ErrorExceededNonBatchRecipients); } if (!Configuration.PodNumber.HasValue) { throw new ApplicationException(ErrorMissingPodNumber); } }
public void ThrowsForTooManyRecipients() { var message = new TransactMessage() { Recipients = Enumerable.Range(0, TransactClientConfiguration.MaxRecipientsPerNonBatchRequest + 1) .Select(x => new TransactMessageRecipient()) .ToList() }; var exception = Assert.Throws <ArgumentException>( () => new TransactClientTester().SendMessage(message)); Assert.Equal(TransactClient.ErrorExceededNonBatchRecipients, exception.Message); }
public void DoesNotThrowForNullPersonalizationTagPropertyValue() { var message = new TransactMessage() { Recipients = new List <TransactMessageRecipient>() { new TransactMessageRecipient() { EmailAddress = "*****@*****.**", PersonalizationTags = new List <TransactMessageRecipientPersonalizationTag>() { new TransactMessageRecipientPersonalizationTag("some_property", null) } } } }; new TransactMessageEncoder().Encode(message); }
/// <returns>Filenames that can be used for checking status of batches.</returns> public virtual async Task <IEnumerable <string> > SendMessageBatchAsync(TransactMessage message) { if (message == null) { throw new ArgumentNullException("message"); } MessageBatchPreCommunicationVerification(); var filenames = new List <string>(); using (var silverpop = _silverpopFactory()) { var batchedMessages = message.GetRecipientBatchedMessages( TransactClientConfiguration.MaxRecipientsPerBatchRequest); var identifier = Guid.NewGuid().ToString(); foreach (var batchMessage in batchedMessages) { var encodedMessage = _encoder.Encode(batchMessage); var filename = string.Format( "{0}.{1}.xml.gz", identifier, filenames.Count() + 1); silverpop.SftpCreateDirectoryIfNotExists("transact/temp"); await silverpop.SftpGzipUploadAsync( encodedMessage, "transact/temp/" + filename).ConfigureAwait(false); await silverpop.SftpMoveAsync( "transact/temp/" + filename, "transact/inbound/" + filename).ConfigureAwait(false); filenames.Add(filename + ".status"); } } return(filenames); }
public HomeModule(TransactClient client) { Get["/"] = _ => View["Index", new IndexModel(client.Configuration)]; Post["/send"] = _ => { var model = this.Bind <SendModel>(); // Validate request var validationResult = this.Validate <SendModel>(model); if (!validationResult.IsValid) { return(new TextResponse( HttpStatusCode.BadRequest, string.Join(" ", validationResult.Errors.SelectMany(x => x.Value)))); } // Create message var recipient = TransactMessageRecipient.Create(model.ToAddress); recipient.PersonalizationTags = model.PersonalizationTags; var message = TransactMessage.Create(model.CampaignId, recipient); // Send message TransactMessageResponse response = null; try { response = client.SendMessage(message); } catch (TransactClientException ex) { return(new TextResponse( HttpStatusCode.InternalServerError, ex.Message)); } return(Response.AsJson(response)); }; }
public virtual async Task <TransactMessageResponse> SendMessageAsync(TransactMessage message) { if (message == null) { throw new ArgumentNullException("message"); } SendMessagePreCommunicationVerification(message); var encodedMessage = _encoder.Encode(message); string response; using (var silverpop = _silverpopFactory()) { response = await silverpop.HttpUploadAsync(encodedMessage).ConfigureAwait(false); } var decodedResponse = _decoder.Decode(response); if (decodedResponse.Status == TransactMessageResponseStatus.EncounteredErrorsNoMessagesSent) { var errorMessage = decodedResponse.Error.Value; if (string.IsNullOrWhiteSpace(errorMessage) && decodedResponse.RecipientDetails.Any()) { errorMessage = string.Join( "; ", decodedResponse.RecipientDetails .Where(x => x.SendStatus == TransactMessageResponseRecipientSendStatus.ErrorEncounteredWillNotRetry) .Select(x => $"{x.Email}: {(string.IsNullOrWhiteSpace(x.Error.Value) ? "Unknown error" : x.Error.Value)}")); } throw new TransactClientException( errorMessage, encodedMessage, decodedResponse.RawResponse); } return(decodedResponse); }
public override string Encode(TransactMessage message) { return(_encodeOutput); }
public TransactMessageTests() { _sut = new TransactMessage(); }
public void DoesNotThrowForNullPersonalizationTagPropertyValue() { var message = new TransactMessage() { Recipients = new List<TransactMessageRecipient>() { new TransactMessageRecipient() { EmailAddress = "*****@*****.**", PersonalizationTags = new List<TransactMessageRecipientPersonalizationTag>() { new TransactMessageRecipientPersonalizationTag("some_property", null) } } } }; new TransactMessageEncoder().Encode(message); }
public void ThrowsForNullRecipients() { Assert.Throws <ArgumentNullException>( () => TransactMessage.Create("123", null)); }
public void SetsCampaignId() { var message = TransactMessage.Create("123"); Assert.Equal("123", message.CampaignId); }
public void ThrowsForNullCampaignId() { Assert.Throws <ArgumentNullException>( () => TransactMessage.Create(null)); }
private static string EncodedMessage( string campaignId = "001", string transactionId = null, bool showAllSendDetail = false, bool sendAsBatch = false, bool noRetryOnFailure = false, ICollection<string> saveColumns = null, ICollection<TransactMessageRecipient> recipients = null) { if (saveColumns == null) saveColumns = new List<string>(); if (recipients == null) recipients = new List<TransactMessageRecipient>(); var message = new TransactMessage() { CampaignId = campaignId, TransactionId = transactionId, ShowAllSendDetail = showAllSendDetail, SendAsBatch = sendAsBatch, NoRetryOnFailure = noRetryOnFailure, SaveColumns = saveColumns, Recipients = recipients, }; return new TransactMessageEncoder().Encode(message); }