/// <summary>
        /// Create a new <see cref="IClientHttpRequest"/> for the specified URI and HTTP method.
        /// </summary>
        /// <param name="uri">The URI to create a request for.</param>
        /// <param name="method">The HTTP method to execute.</param>
        /// <returns>The created request</returns>
        public IClientHttpRequest CreateRequest(Uri uri, HttpMethod method)
        {
            RequestCreation    requestCreation = new RequestCreation(uri, method, this.targetRequestFactory, this.interceptors);
            IClientHttpRequest request         = requestCreation.Create();

            return(new InterceptingClientHttpRequest(request, this.interceptors));
        }
        public bool ChangeConctact(ContactViewModel contact)
        {
            var isSuccess        = false;
            var jsonDateSettings = new JsonSerializerSettings {
                DateFormatString = "yyyy-MM-ddTHH:mm:ss.ffffffZ"
            };
            var contactData = @"{
                    ""Name"":""" + contact.Name + @""",
                    ""Dear"":""" + contact.Dear + @""",
                    ""JobTitle"":""" + contact.JobTitle + @""",
                    ""MobilePhone"":""" + contact.MobilePhone + @""",
                    ""BirthDate"":" + JsonConvert.SerializeObject(contact.BirthDate, jsonDateSettings) + @"
                }";

            var request = RequestCreation.CreateRequest(url: $"https://cto-creatio.beesender.com/0/odata/Contact({contact.Id})",
                                                        method: "PATCH",
                                                        contentType: "application/json",
                                                        isKeepAlive: true,
                                                        requestData: contactData,
                                                        cookies: _authCookie
                                                        );

            AddCsrfToken(request);

            using (var response = (HttpWebResponse)request.GetResponse())
            {
                if (response.StatusCode == HttpStatusCode.OK)
                {
                    isSuccess = true;
                }
            }

            return(isSuccess);
        }
        public ContactViewModel GetContact(string id)
        {
            var request = RequestCreation.CreateRequest(url: $"https://cto-creatio.beesender.com/0/odata/Contact({id})",
                                                        method: "GET",
                                                        contentType: "application/json",
                                                        isKeepAlive: true,
                                                        requestData: null,
                                                        cookies: _authCookie
                                                        );

            AddCsrfToken(request);

            var contact = new ContactViewModel();

            using (var response = (HttpWebResponse)request.GetResponse())
            {
                if (response.StatusCode == HttpStatusCode.OK)
                {
                    using (var reader = new StreamReader(response.GetResponseStream()))
                    {
                        var responseMessage = reader.ReadToEnd();
                        var jsonContact     = JsonConvert.DeserializeObject <Contact>(responseMessage);

                        contact.Name        = jsonContact.Name;
                        contact.Id          = jsonContact.Id;
                        contact.JobTitle    = jsonContact.JobTitle;
                        contact.MobilePhone = jsonContact.MobilePhone;
                        contact.Dear        = jsonContact.Dear;
                        contact.BirthDate   = DateTime.Parse(jsonContact.BirthDate);
                    }
                }
            }
            return(contact);
        }
        public CookieContainer TryLogin()
        {
            var authData = @"{
                    ""UserName"":""" + _userName + @""",
                    ""UserPassword"":""" + _userPassword + @"""
                }";

            var request = RequestCreation.CreateRequest
                              (url: _authServiceUrl,
                              method: "POST",
                              contentType: "application/json",
                              isKeepAlive: true,
                              requestData: authData,
                              null
                              );

            _authCookie             = new CookieContainer();
            request.CookieContainer = _authCookie;
            AddCsrfToken(request);

            using (var response = (HttpWebResponse)request.GetResponse())
            {
                if (response.StatusCode == HttpStatusCode.OK)
                {
                    using (var reader = new StreamReader(response.GetResponseStream()))
                    {
                        var responseMessage = reader.ReadToEnd();
                        Console.WriteLine(responseMessage);
                        if (responseMessage.Contains("\"Code\":1"))
                        {
                            throw new UnauthorizedAccessException($"Unauthorized {_userName} for {_appUrl}");
                        }
                    }

                    foreach (Cookie cookie in response.Cookies)
                    {
                        _authCookie.Add(new Uri(_appUrl), new Cookie(cookie.Name, cookie.Value));
                    }
                }
            }

            return(_authCookie);
        }
        public List <ContactViewModel> GetContacts()
        {
            var contacts = new List <ContactViewModel>();
            var request  = RequestCreation.CreateRequest(url: "https://cto-creatio.beesender.com/0/odata/Contact",
                                                         method: "GET",
                                                         contentType: "application/json",
                                                         isKeepAlive: true,
                                                         requestData: null,
                                                         cookies: _authCookie
                                                         );

            var cookie = _authCookie.GetCookies(new Uri("https://cto-creatio.beesender.com"))["BPMCSRF"];

            if (cookie != null)
            {
                request.Headers.Add("BPMCSRF", cookie.Value);
            }

            using (var response = (HttpWebResponse)request.GetResponse())
            {
                if (response.StatusCode == HttpStatusCode.OK)
                {
                    using (var reader = new StreamReader(response.GetResponseStream()))
                    {
                        var responseMessage = reader.ReadToEnd();
                        var jsonObject      = JsonConvert.DeserializeObject <OdataContext>(responseMessage);
                        foreach (var jsonContact in jsonObject.Contacts)
                        {
                            var contact = new ContactViewModel();
                            contact.Name        = jsonContact.Name;
                            contact.Id          = jsonContact.Id;
                            contact.JobTitle    = jsonContact.JobTitle;
                            contact.MobilePhone = jsonContact.MobilePhone;

                            contacts.Add(contact);
                        }
                    }
                }
            }

            return(contacts);
        }
        public bool Delete(string id)
        {
            var isSuccess = false;
            var request   = RequestCreation.CreateRequest(url: $"https://cto-creatio.beesender.com/0/odata/Contact({id})",
                                                          method: "DELETE",
                                                          contentType: null,
                                                          isKeepAlive: true,
                                                          requestData: null,
                                                          cookies: _authCookie
                                                          );

            AddCsrfToken(request);

            using (var response = (HttpWebResponse)request.GetResponse())
            {
                if (response.StatusCode == HttpStatusCode.OK)
                {
                    isSuccess = true;
                }
            };

            return(isSuccess);
        }
 public IClientHttpRequest CreateRequest(Uri uri, HttpMethod method)
 {
     RequestCreation creation = new RequestCreation(uri, method, this.targetRequestFactory, this.interceptors);
     return new InterceptingClientHttpRequest(creation.Create(), this.interceptors);
 }
 /// <summary>
 /// Create a new <see cref="IClientHttpRequest"/> for the specified URI and HTTP method.
 /// </summary>
 /// <param name="uri">The URI to create a request for.</param>
 /// <param name="method">The HTTP method to execute.</param>
 /// <returns>The created request</returns>
 public IClientHttpRequest CreateRequest(Uri uri, HttpMethod method)
 {
     RequestCreation requestCreation = new RequestCreation(uri, method, this.requestFactory, this.interceptors);
     IClientHttpRequest request = requestCreation.Create();
     return new InterceptingClientHttpRequest(request, this.interceptors);
 }