Ejemplo n.º 1
0
        public SubscriberBulkAddResult BulkAddSubscribers(int groupId, List <Subscriber> subscribers)
        {
            var csv       = new StringBuilder();
            var firstLine = "\"email\",\"firstname\",\"lastName\",\"companyName\",\"houseNo\",\"address1\",\"address2\",\"town\",\"county\",\"country\",\"postCode\",\"dateOfBirth\",\"gender\",\"customField1\",\"customField2\",\"customField3\",\"customField4\",\"customField5\",\"customField6\",\"customField7\",\"customField8\",\"customField9\",\"customField10\"";

            csv.Append(firstLine);
            var csvSubscribersBase64Encoded = string.Empty;

            foreach (var subscriber in subscribers)
            {
                csv.Append("\r\n");

                var subscriberToString = subscriber.ToString();
                csv.Append(subscriberToString);
            }

            var bytes = Utf8Encode(csv.ToString());

            if (bytes.Length > 22499919) // max bytes: 22.499.919
            {
                return(new SubscriberBulkAddResult
                {
                    Status = Status.Error,
                    Message = "Too many subscribers"
                });
            }

            csvSubscribersBase64Encoded = Base64Encode(bytes);
            var url     = $"{this._baseUrl}/subscribers/bulkSubscribers/";
            var request = new SubscriberBulkAddRequest
            {
                ApiKey  = this._apiKey,
                GroupId = groupId,
                CsvSubscribersBase65Encoded = csvSubscribersBase64Encoded
            };

            var xmlRequest   = this._parser.Serialize(request);
            var httpResponse = this._httpClient.Request(url, xmlRequest);

            if (httpResponse.Status != HttpStatus.Successful)
            {
                return(new SubscriberBulkAddResult
                {
                    Status = Status.Error,
                    Message = "Http error"
                });
            }

            var bulkAddResult = this._parser.Deserialize <SubscriberBulkAddResult>(httpResponse.Result);

            return(bulkAddResult);
        }
Ejemplo n.º 2
0
        public void SerializeBulkAddSubscribersRequest()
        {
            IXmlParser xmlParser = new DefaultXmlParser();
            var        request   = new SubscriberBulkAddRequest
            {
                ApiKey  = "44-121312131223",
                GroupId = 213213,
                CsvSubscribersBase65Encoded = "ZW1haWwsZmlyc3RuYW1lLGxhc3ROYW1lLGNvbXBhbnlOYW1lLGhvdXNlTm8sYWRkcmVzczEsYWRkcmVzczIsdG93bixjb 3VudHksY291bnRyeSxwb3N0Q29kZSxkYXRlT2ZCaXJ0aCxnZW5kZXIsY3VzdG9tRmllbGQxLGN1c3RvbUZpZWxkMixjdX N0b21GaWVsZDMsY3VzdG9tRmllbGQ0LGN1c3RvbUZpZWxkNSxjdXN0b21GaWVsZDYsY3VzdG9tRmllbGQ3LGN1c3RvbUZ pZWxkOCxjdXN0b21GaWVsZDksY3VzdG9tRmllbGQxMA=="
            };

            var requestXml = xmlParser.Serialize(request);
            var xml        = File.ReadAllText("BulkAddSubscribersRequest.xml");

            Assert.AreEqual(xml, requestXml);
        }