public static async Task <ProCampaignResponse> PostParticipationAsync(
            string participationData,
            ProCampaignSettings settings,
            bool requestConsumerId = false)
        {
            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings), "ProCampaign settings cannot be null");
            }

            var apiUrl = new Uri(settings.ConsumerBaseUrl, settings.ParticipationPath);

            using (var client = new HttpClient(httpHandler, false))
            {
                client.BaseAddress = apiUrl;
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(
                    new MediaTypeWithQualityHeaderValue("application/json"));

                if (requestConsumerId)
                {
                    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",
                                                                                               $"{StringUtility.Base64Encode($"{settings.ApiKey}:{settings.ApiSecret}")}");
                }

                string query;
                var    queryStrings = requestConsumerId ?
                                      new Dictionary <string, string>
                {
                    { "apiKey", settings.ApiKey },
                    { "requestConsumerId", "true" }
                } :
                new Dictionary <string, string>
                {
                    { "apiKey", settings.ApiKey }
                };

                using (var content = new FormUrlEncodedContent(queryStrings))
                {
                    query = content.ReadAsStringAsync().Result;
                }

                var    data = new StringContent(participationData, Encoding.UTF8, "application/json");
                string result;

                using (var response = await client.PostAsync($"{apiUrl}?{query}", data))
                {
                    using (var content = response.Content)
                    {
                        result = await content.ReadAsStringAsync();
                    }
                }

                return(JsonConvert.DeserializeObject <ProCampaignResponse>(result));
            }
        }
Beispiel #2
0
        public async Task <CrmData> CreateParticipationAsync(
            CrmData data,
            Configurations requestWideSettings,
            bool requestConsumerId = false)
        {
            data.AddSetting("SourceName", requestWideSettings.Settings.Source);
            data.AddSetting("TransactionName", requestWideSettings.Settings.Transaction);

            data.AddSetting("ListPrivacyPolicy", (bool)data.Data.PrivacyConsent ? 1 : 0);
            data.AddSetting("ListCadbury", (bool)data.Data.NewsletterOptin ? 1 : 0);
            data.AddSetting("IdentLong", (string)data.Data.Retailer);
            data.AddSetting("IdentShort", (int)data.Data.ChocolateBar);
            data.AddSetting("Q1", (string)data.Data.Place);
            data.AddSetting("Q2", (string)data.Data.TriedFlavours);
            data.AddSetting("PrivacyPolicyTextName", (string)data.Data.PrivacyPolicyTextName);
            data.AddSetting("PrivacyPolicyVersion", (long)data.Data.PrivacyPolicyVersion);
            data.AddSetting("PrivacyPolicyCreation", (string)data.Data.PrivacyPolicyCreation);

            var settings = new ProCampaignSettings
            {
                ConsumerBaseUrl   = new Uri(Configuration.Settings.ConsumerBaseUrl),
                ParticipationPath = Configuration.Settings.ParticipationPath,
                ApiKey            = requestWideSettings.Settings.ApiKey,
                ApiSecret         = requestWideSettings.Settings.ApiSecret
            };
            var ApiData = ProCampaignData.FormatParticipationData(data);

            var response = await ApiHelper.PostParticipationAsync(ApiData, settings, requestConsumerId);

            var returnData = new CrmData();

            returnData.AddSetting("Success", response.IsSuccessful);
            returnData.AddSetting("ApiStatus", response.StatusCode);
            returnData.AddSetting("ApiMessage", response.StatusMessage);
            returnData.AddSetting("HttpStatus", response.HttpStatusCode);
            returnData.AddSetting("HttpMessage", response.HttpStatusMessage);
            returnData.AddSetting("Data", response.Data);

            return(returnData);
        }
        public static async Task <ProCampaignResponse> GetPermissionTextAsync(ProCampaignSettings settings)
        {
            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings), "ProCampaign settings cannot be null");
            }

            var apiUrl = new Uri(settings.ApiBaseUrl, settings.DocumentPath);

            using (var client = new HttpClient(httpHandler, false))
            {
                client.BaseAddress = apiUrl;
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(
                    new MediaTypeWithQualityHeaderValue("application/json"));

                string query;
                using (var content = new FormUrlEncodedContent(
                           new Dictionary <string, string>
                {
                    { "apiKey", settings.InternationalApiKey }
                }))
                {
                    query = content.ReadAsStringAsync().Result;
                }

                string result;

                using (var response = await client.GetAsync($"{apiUrl}?{query}"))
                {
                    using (var content = response.Content)
                    {
                        result = await content.ReadAsStringAsync();
                    }
                }

                return(JsonConvert.DeserializeObject <ProCampaignResponse>(result));
            }
        }
Beispiel #4
0
        public async Task <CrmData> ReadTextDocumentAsync()
        {
            var settings = new ProCampaignSettings
            {
                ApiBaseUrl          = new Uri(Configuration.Settings.DocumentBaseUrl),
                DocumentPath        = Configuration.Settings.DocumentPath,
                InternationalApiKey = Configuration.Settings.InternationalApiKey
            };

            var response = await ApiHelper.GetPermissionTextAsync(settings);

            var returnData = new CrmData();

            returnData.AddSetting("Success", response.IsSuccessful);
            returnData.AddSetting("ApiStatus", response.StatusCode);
            returnData.AddSetting("ApiMessage", response.StatusMessage);
            returnData.AddSetting("HttpStatus", response.HttpStatusCode);
            returnData.AddSetting("HttpMessage", response.HttpStatusMessage);
            returnData.AddSetting("Data", response.Data);

            return(returnData);
        }