Exemple #1
0
        /// <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.SelectRecipientDataBatchedMessages(
                    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);
        }