public static ReturnMessage <string> ReadResponse(this WebException webex)
        {
            ReturnMessage <string> retValue = new ReturnMessage <string>();

            retValue.AddException(webex);
            var response = webex.Response;

            if (response != null)
            {
                Stream responseStream = null;
                try
                {
                    responseStream = response.GetResponseStream();
                    using (var responseReader = new StreamReader(responseStream))
                    {
                        var xml = responseReader.ReadToEnd();
                        //var errordata = XElement.Parse(xml);
                        retValue.Message = xml;
                    }
                }
                finally
                {
                    if (responseStream != null)
                    {
                        responseStream.Dispose();
                    }
                }
            }
            return(retValue);
        }
        public ReturnMessage <string> HttpPostRequest(XElement elements, ExecutionSettings settings, string actionParams, CredentialModel credentials, ApplicationUtil appUtil, Logger logger)
        {
            var returnMessage = new ReturnMessage <string>();

            //Validate Credential Access Token
            if (!string.IsNullOrEmpty(credentials.AccessToken))
            {
                //Stream reader = null;
                HttpWebRequest  request  = null;
                HttpWebResponse response = null;
                XmlDocument     xmlDoc   = new XmlDocument();

                var urlParam  = this.GetElementData(elements, "UploadURL", logger, string.Empty);
                var sourceKey = this.GetElementData(elements, "SourceKey", logger, string.Empty);
                var converter = new XmlToJsonConverter(elements.ToString());
                var url       = $"{credentials.BaseUrl}{urlParam}";
                var jsonData  = converter.Format().Message;


                request = (HttpWebRequest)WebRequest.Create(url);
                request.Headers.Add("orgId", credentials.OrganizationId);
                request.Headers.Add("Authorization", "Zoho-oauthtoken " + credentials.AccessToken);
                request.Method      = actionParams;
                request.ContentType = "application/json";
                string actualResponse = string.Empty;
                try
                {
                    using (var streamWriter = new StreamWriter(request.GetRequestStream()))
                    {
                        streamWriter.Write(jsonData);
                        streamWriter.Flush();
                        streamWriter.Close();
                    }
                    using (response = (HttpWebResponse)request.GetResponse())
                    {
                        using (Stream responseStream = response.GetResponseStream())
                        {
                            using (StreamReader responseReader = new StreamReader(responseStream))
                            {
                                actualResponse = responseReader.ReadToEnd();
                                xmlDoc         = JsonConvert.DeserializeXmlNode(actualResponse, "Results");
                            }
                        }
                    }
                    var xResponse = XElement.Parse(xmlDoc.InnerXml);
                    if (!string.IsNullOrEmpty(sourceKey))
                    {
                        xResponse.Add(new XElement("SourceKey", sourceKey));
                    }

                    returnMessage.Value  = xResponse.ToString();
                    returnMessage.Status = true;
                }
                catch (WebException wex)
                {
                    var error = wex.ReadResponse();
                    response = wex.Response as HttpWebResponse;
                    returnMessage.SetError(((int)response.StatusCode).ToString());
                    returnMessage.AddReturn(error.Message);
                    logger.ErrorLog($"Post operation failed for url {url}", $"WebException : Status : {response.StatusCode}, Data is : {jsonData} and Response is : {actualResponse}");
                }
                catch (Exception ex)
                {
                    logger.ErrorLog($"Post operation failed for url {url}", ex);
                    returnMessage.AddException(ex);
                }
            }
            else
            {
                returnMessage.SetError("401");
            }
            return(returnMessage);
        }