Exemplo n.º 1
0
        public static QuincusResponse GetGeoCodeReponseFromQuincus(QuincusGeoCodeDataRequest quincusGeoCodeDataRequest)
        {
            QuincusResponse quincusReponse = QuincusProxy.GetQuincusResponse(quincusGeoCodeDataRequest);

            return(quincusReponse);
        }
Exemplo n.º 2
0
        public static QuincusResponse GetQuincusResponse(QuincusGeoCodeDataRequest quincusGeoCodeDataRequest, decimal shipmentsCount)
        {
            bool            retryflag       = true;
            int             retryCount      = 0;
            QuincusResponse quincusResponse = new QuincusResponse();
            HttpWebResponse httpResponse    = null;
            int             sleepTime       = 5000;

            int maxRetryCount = Convert.ToInt32(Math.Round(shipmentsCount / 1.5m));

            try
            {
                while (retryflag && retryCount <= maxRetryCount)
                {
                    HttpRequestCachePolicy requestCachePolicy =
                        new HttpRequestCachePolicy(HttpRequestCacheLevel.Default);

                    HttpWebRequest.DefaultCachePolicy = requestCachePolicy;

                    var httpWebRequest = (HttpWebRequest)WebRequest.Create(
                        quincusGeoCodeDataRequest.endpoint + quincusGeoCodeDataRequest.id + "/");

                    HttpRequestCachePolicy noCachePolicy =
                        new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);

                    httpWebRequest.CachePolicy = noCachePolicy;

                    if (string.Equals(MapProxy.WebProxyEnable, true.ToString(), StringComparison.OrdinalIgnoreCase))
                    {
                        WebProxy myProxy = new WebProxy(MapProxy.webProxyURI, false, null, new NetworkCredential(MapProxy.webProxyUsername, MapProxy.webProxyPassword));
                        httpWebRequest.Proxy = myProxy;
                    }

                    httpWebRequest.ContentType = "application/json";
                    httpWebRequest.Headers.Add("AUTHORIZATION", "JWT " + quincusGeoCodeDataRequest.quincusTokenData.token);
                    httpWebRequest.Method = "GET";
                    httpResponse          = (HttpWebResponse)httpWebRequest.GetResponse();

                    if (string.Equals(httpResponse.StatusDescription, "No Content", StringComparison.OrdinalIgnoreCase))
                    {
                        retryCount++;
                        //if (retryCount == maxRetryCount)
                        //{
                        sleepTime = Convert.ToInt32(Math.Round(1000m * 1.8m * shipmentsCount));
                        //}

                        System.Threading.Thread.Sleep(sleepTime);
                    }
                    else
                    {
                        retryflag = false;
                    }
                }

                string response;

                using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
                {
                    response = streamReader.ReadToEnd();
                }

                if (!string.IsNullOrEmpty(response))
                {
                    quincusResponse.QuincusReponseData = Newtonsoft.Json.JsonConvert.DeserializeObject <QuincusReponseData>(response);
                    quincusResponse.ResponseStatus     = true;
                }
            }
            catch (Exception exception)
            {
                quincusResponse.Exception = exception;
            }

            return(quincusResponse);
        }
Exemplo n.º 3
0
        public static QuincusResponse GetGeoCodeReponseFromQuincus(QuincusGeoCodeDataRequest quincusGeoCodeDataRequest, decimal shipmentsCount = 30)
        {
            QuincusResponse quincusReponse = QuincusProxy.GetQuincusResponse(quincusGeoCodeDataRequest, shipmentsCount);

            return(quincusReponse);
        }
        public static QuincusResponse GetQuincusResponse(QuincusGeoCodeDataRequest quincusGeoCodeDataRequest)
        {
            QuincusResponse quincusResponse = new QuincusResponse();
            HttpWebResponse httpResponse    = null;

            quincusResponse.QuincusReponseDataList = new List <QuincusReponseData>();
            try
            {
                List <string> webRequestURLS = new List <string>();

                quincusGeoCodeDataRequest.batchIDList.ForEach(requestID =>
                {
                    webRequestURLS.Add(quincusGeoCodeDataRequest.endpoint + requestID);
                });

                //Parallel.ForEach(webRequestURLS, urls =>
                // {
                //     var httpWebRequest = (HttpWebRequest)WebRequest.Create(urls);

                //     HttpRequestCachePolicy noCachePolicy =
                //         new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);

                //     httpWebRequest.CachePolicy = noCachePolicy;

                //     if (string.Equals(MapProxy.WebProxyEnable, true.ToString(), StringComparison.OrdinalIgnoreCase))
                //     {
                //         WebProxy myProxy = new WebProxy(MapProxy.webProxyURI, false, null, new NetworkCredential(MapProxy.webProxyUsername, MapProxy.webProxyPassword));
                //         httpWebRequest.Proxy = myProxy;
                //     }

                //     httpWebRequest.ContentType = "application/json";
                //     httpWebRequest.Headers.Add("AUTHORIZATION", "JWT " + quincusGeoCodeDataRequest.quincusTokenData.token);
                //     httpWebRequest.Method = "GET";
                //     httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();

                //     string response;

                //     using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
                //     {
                //         response = streamReader.ReadToEnd();
                //         streamReader.Close();
                //     }

                //     if (!string.IsNullOrEmpty(response))
                //     {
                //         quincusResponse.QuincusReponseDataList.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<QuincusReponseData>(response));
                //         quincusResponse.ResponseStatus = true;
                //     }

                //     httpResponse.Close();
                // });

                //var intermediateResponse = quincusResponse.QuincusReponseDataList;

                quincusGeoCodeDataRequest.batchIDList.ForEach(requestData =>
                {
                    System.Threading.Thread.Sleep(5000);
                    HttpRequestCachePolicy requestCachePolicy =
                        new HttpRequestCachePolicy(HttpRequestCacheLevel.Default);

                    HttpWebRequest.DefaultCachePolicy = requestCachePolicy;

                    var httpWebRequest = (HttpWebRequest)WebRequest.Create(
                        quincusGeoCodeDataRequest.endpoint + requestData + "/");

                    HttpRequestCachePolicy noCachePolicy =
                        new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);

                    httpWebRequest.CachePolicy = noCachePolicy;

                    if (string.Equals(MapProxy.WebProxyEnable, true.ToString(), StringComparison.OrdinalIgnoreCase))
                    {
                        WebProxy myProxy     = new WebProxy(MapProxy.webProxyURI, false, null, new NetworkCredential(MapProxy.webProxyUsername, MapProxy.webProxyPassword));
                        httpWebRequest.Proxy = myProxy;
                    }

                    httpWebRequest.ContentType = "application/json";
                    httpWebRequest.Headers.Add("AUTHORIZATION", "JWT " + quincusGeoCodeDataRequest.quincusTokenData.token);
                    httpWebRequest.Method  = "GET";
                    httpWebRequest.Timeout = 60000;
                    httpResponse           = (HttpWebResponse)httpWebRequest.GetResponse();

                    string response;

                    using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
                    {
                        response = streamReader.ReadToEnd();
                        streamReader.Close();
                    }

                    if (!string.IsNullOrEmpty(response))
                    {
                        quincusResponse.QuincusReponseDataList.Add(Newtonsoft.Json.JsonConvert.DeserializeObject <QuincusReponseData>(response));
                        quincusResponse.ResponseStatus = true;
                    }

                    httpResponse.Close();
                    httpResponse.Dispose();
                    httpWebRequest.Abort();

                    Task.Run(() => AuditEventEntry.LogEntry(new DataObjects.LogData.LogDataModel()
                    {
                        dateTime = DateTime.Now,
                        apiTypes = DataObjects.LogData.APITypes.QuincusAPI_Batch,
                        apiType  = "QuincusAPI_Batch",

                        LogInformation = new DataObjects.LogData.LogInformation()
                        {
                            LogResponse  = response,
                            LogRequest   = JsonConvert.SerializeObject(quincusGeoCodeDataRequest.batchIDList),
                            LogException = null
                        }
                    }));
                });
            }
            catch (Exception exception)
            {
                quincusResponse.Exception = exception;
                Task.Run(() => AuditEventEntry.LogEntry(new DataObjects.LogData.LogDataModel()
                {
                    dateTime       = DateTime.Now,
                    apiTypes       = DataObjects.LogData.APITypes.QuincusAPI_Batch,
                    apiType        = "QuincusAPI_Batch",
                    LogInformation = new DataObjects.LogData.LogInformation()
                    {
                        LogResponse  = null,
                        LogRequest   = JsonConvert.SerializeObject(quincusGeoCodeDataRequest.batchIDList),
                        LogException = exception.InnerException.ToString()
                    }
                }));
            }

            return(quincusResponse);
        }