private async void ProcessRequest(BaseRestRequest request)
        {
            try
            {
                ProcessingTimeTbx.Text     = "";
                ResultTreeView.ItemsSource = null;

                RequestUrlTbx.Text = request.GetRequestUrl();

                var start = DateTime.Now;

                //Process the request by using the ServiceManager.
                var response = await ServiceManager.GetResponseAsync(request);

                var end = DateTime.Now;

                var processingTime = end - start;

                ProcessingTimeTbx.Text = string.Format(CultureInfo.InvariantCulture, "{0:0} ms", processingTime.TotalMilliseconds);

                List <ObjectNode> nodes = new List <ObjectNode>();
                nodes.Add(new ObjectNode("result", response));
                ResultTreeView.ItemsSource = nodes;

                ResponseTab.IsSelected = true;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        public BaseRestResponse InvokeRecalculation(BaseRestRequest request)
        {
            var restRequest = HandleRequest(CoinMonitoringApiUrlHolder.RecalculateActions, request, Method.POST);
            var response    = HandleGenericResponse(Client.Execute <BaseRestResponse>(restRequest));

            return(response.Data);
        }
Exemplo n.º 3
0
        internal BadRequestException(BaseRestRequest request, RestResponse response) : base("Bad request: " + response.ResponseCode)
        {
            this.WebRequest  = request;
            this.WebResponse = response;

            try
            {
                JObject j = JObject.Parse(response.Response);

                if (j["code"] != null)
                {
                    this.Code = (int)j["code"];
                }

                if (j["message"] != null)
                {
                    this.JsonMessage = j["message"].ToString();
                }

                if (j["errors"] != null)
                {
                    this.Errors = j["errors"].ToString();
                }
            }
            catch { }
        }
Exemplo n.º 4
0
        private async Task <IList <ChatMessageModel> > LoadMessagesAsync(BaseRestRequest request)
        {
            var result = await _httpClient.TrySendAndDeserializeAsync <QueryResult <MessageResponse> >(request,
                                                                                                       _logger).ConfigureAwait(false);

            return(Mapper.PagedDtoToPagingModel(result, Mapper.DtoToChatMessage)?.Data);
        }
Exemplo n.º 5
0
        public async Task <string> SendAndGetResponseAsync(BaseRestRequest request, bool ignoreCache)
        {
            var response = await SendAsyncImpl(request, ignoreCache).ConfigureAwait(false);

            if (response == null)
            {
                return(null);
            }

            if (!ignoreCache && response.StatusCode == HttpStatusCode.NotModified)
            {
                return(await _localCache.Get <string>(request.EndpointUrl).ConfigureAwait(false));
            }

            var stringResponse = await response.Content.ReadAsStringAsync().ConfigureAwait(false);

            if (!ignoreCache)
            {
                var lastModified = GetLastModifiedHeader(response.Content.Headers);
                if (lastModified.HasValue)
                {
                    await _localCache
                    .Add(request.EndpointUrl, lastModified.Value, stringResponse)
                    .ConfigureAwait(false);
                }
            }

#if DEBUG
            Logger.Debug(stringResponse);
#endif

            response.Dispose();
            return(stringResponse);
        }
Exemplo n.º 6
0
     this IRestHttpClient restHttpClient,
     BaseRestRequest request,
     ILogger logger,
     Func <TDto, TModel> dtoToModelConverter)
 {
     try
     {
Exemplo n.º 7
0
     this IRestHttpClient restHttpClient,
     BaseRestRequest request,
     ILogger logger,
     Func <TDto, TModel> dtoToModelConverter,
     bool ignoreCache)
 {
     try
     {
         if (!(restHttpClient is CachedHttpClient client))
Exemplo n.º 8
0
        public static async Task <TModel> GetModelAsync <TModel, TDto>(
            this IRestHttpClient restHttpClient,
            BaseRestRequest request,
            ILogger logger,
            Func <TDto, TModel> dtoToModelConverter)
        {
            var result = await restHttpClient.GetModelOrExceptionAsync(request, logger, dtoToModelConverter);

            return(result.Model);
        }
Exemplo n.º 9
0
        internal async Task <T> SendAndDeserializeAsync <T>(BaseRestRequest request, bool ignoreCache)
        {
            var stringResponse = await SendAndGetResponseAsync(request, ignoreCache).ConfigureAwait(false);

            if (stringResponse == null)
            {
                return(default(T));
            }

            return(JsonSerializer.Deserialize <T>(stringResponse));
        }
Exemplo n.º 10
0
        internal RateLimitException(BaseRestRequest request, RestResponse response) : base("Rate limited: " + response.ResponseCode)
        {
            this.WebRequest  = request;
            this.WebResponse = response;

            JObject j = JObject.Parse(response.Response);

            if (j["message"] != null)
            {
                JsonMessage = j["message"].ToString();
            }
        }
Exemplo n.º 11
0
        /// <summary>
        /// This method has a lot of logic that is specific to the sample. To process a request you can easily just call the Execute method on the request.
        /// </summary>
        /// <param name="request"></param>
        private async void ProcessRequest(BaseRestRequest request)
        {
            try
            {
                RequestProgressBar.Visibility = Visibility.Visible;
                RequestProgressBarText.Text   = string.Empty;

                ResultTreeView.ItemsSource = null;

                var start = DateTime.Now;

                //Execute the request.
                var response = await request.Execute((remainingTime) =>
                {
                    if (remainingTime > -1)
                    {
                        _time = TimeSpan.FromSeconds(remainingTime);

                        Application.Current.Dispatcher.Invoke(() =>
                        {
                            RequestProgressBarText.Text = string.Format("Time remaining {0} ", _time);
                        });

                        _timer.Start();
                    }
                });

                RequestUrlTbx.Text = request.GetRequestUrl();

                var end = DateTime.Now;

                var processingTime = end - start;

                ProcessingTimeTbx.Text        = string.Format(CultureInfo.InvariantCulture, "{0:0} ms", processingTime.TotalMilliseconds);
                RequestProgressBar.Visibility = Visibility.Collapsed;

                var nodes = new List <ObjectNode>();
                var tree  = await ObjectNode.ParseAsync("result", response);

                nodes.Add(tree);
                ResultTreeView.ItemsSource = nodes;

                ResponseTab.IsSelected = true;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

            _timer.Stop();
            RequestProgressBar.Visibility = Visibility.Collapsed;
        }
Exemplo n.º 12
0
        static private Resource[] GetResourcesFromRequest(BaseRestRequest rest_request)
        {
            var r = ServiceManager.GetResponseAsync(rest_request).GetAwaiter().GetResult();

            if (!(r != null && r.ResourceSets != null &&
                  r.ResourceSets.Length > 0 &&
                  r.ResourceSets[0].Resources != null &&
                  r.ResourceSets[0].Resources.Length > 0))
            {
                throw new Exception("No results found.");
            }

            return(r.ResourceSets[0].Resources);
        }
Exemplo n.º 13
0
        internal RequestSizeException(BaseRestRequest request, RestResponse response) : base($"Request entity too large: {response.ResponseCode}. Make sure the data sent is within Discord's upload limit.")
        {
            this.WebRequest  = request;
            this.WebResponse = response;

            try
            {
                var j = JObject.Parse(response.Response);

                if (j["message"] != null)
                {
                    this.JsonMessage = j["message"].ToString();
                }
            }
            catch (Exception) { }
        }
Exemplo n.º 14
0
        internal BadRequestException(BaseRestRequest request, RestResponse response) : base("Bad request: " + response.ResponseCode)
        {
            WebRequest  = request;
            WebResponse = response;

            try
            {
                JObject j = JObject.Parse(response.Response);

                if (j["message"] != null)
                {
                    JsonMessage = j["message"].ToString();
                }
            }
            catch (Exception) { }
        }
Exemplo n.º 15
0
        internal RateLimitException(BaseRestRequest request, RestResponse response) : base("Rate limited: " + response.ResponseCode)
        {
            this.WebRequest  = request;
            this.WebResponse = response;

            try
            {
                JObject j = DiscordJson.LoadJObject(response.Response);

                if (j["message"] != null)
                {
                    JsonMessage = j["message"].ToString();
                }
            }
            catch (Exception) { }
        }
Exemplo n.º 16
0
        internal UnauthorizedException(BaseRestRequest request, RestResponse response) : base("Unauthorized: " + response.ResponseCode)
        {
            this.WebRequest  = request;
            this.WebResponse = response;

            try
            {
                var j = DiscordJson.LoadJObject(response.Response);

                if (j["message"] != null)
                {
                    JsonMessage = j["message"].ToString();
                }
            }
            catch (Exception) { }
        }
Exemplo n.º 17
0
        internal NotFoundException(BaseRestRequest request, RestResponse response) : base("Not found: " + response.ResponseCode)
        {
            this.WebRequest  = request;
            this.WebResponse = response;

            try
            {
                JObject j = JObject.Parse(response.Response);

                if (j["message"] != null)
                {
                    JsonMessage = j["message"].ToString();
                }
            }
            catch (Exception) { }
        }
        internal ServerErrorException(BaseRestRequest request, RestResponse response) : base("Internal Server Error: " + response.ResponseCode)
        {
            this.WebRequest  = request;
            this.WebResponse = response;

            try
            {
                var j = JObject.Parse(response.Response);

                if (j["message"] != null)
                {
                    JsonMessage = j["message"].ToString();
                }
            }
            catch (Exception) { }
        }
        public RestRequest HandleRequest(string requestUrl, BaseRestRequest request, Method method, Dictionary <string, string> urlParameterDictionary = null)
        {
            RestRequest restRequest = new RestRequest(requestUrl, method);

            restRequest.AddBody(request);

            if (urlParameterDictionary != null)
            {
                foreach (var urlParameters in urlParameterDictionary)
                {
                    restRequest.AddUrlSegment(urlParameters.Key, urlParameters.Value);
                }
            }

            _logger.DebugFormat($"Request for {requestUrl} created");
            return(restRequest);
        }
Exemplo n.º 20
0
        protected async Task <HttpResponseMessage> SendAsyncImpl(BaseRestRequest request, bool ignoreCache)
        {
            using (var httpClientHandler = GetHandler())
            {
                if (httpClientHandler.SupportsAutomaticDecompression)
                {
                    httpClientHandler.AutomaticDecompression = DecompressionMethods.GZip;
                }

                using (var httpClient = new HttpClient(httpClientHandler))
                {
                    httpClient.DefaultRequestHeaders.Accept.Clear();
                    httpClient.DefaultRequestHeaders.Accept.Add(
                        new MediaTypeWithQualityHeaderValue(HttpConsts.ApplicationJsonHeaderValue));
                    httpClient.DefaultRequestHeaders.CacheControl = new CacheControlHeaderValue {
                        NoCache = true
                    };

                    HttpResponseMessage response = null;

                    try
                    {
                        var httpRequest = new HttpRequestMessage
                        {
                            Method     = request.Method,
                            RequestUri = GetFullUrl(request)
                        };

                        if (request.Method == HttpMethod.Post || request.Method == HttpMethod.Put)
                        {
                            httpRequest.Content = request.GetContent();
                        }

                        if (request.HasCustomHeaders)
                        {
                            foreach (var header in request.CustomHeaders)
                            {
                                httpRequest.Headers.Add(header.Header, header.Value);
                            }
                        }
                        else
                        {
                            if (IsAuthorized)
                            {
                                httpClient.DefaultRequestHeaders.Authorization =
                                    new AuthenticationHeaderValue(HttpConsts.Bearer, AccessToken);
                            }

                            if (request.Method == HttpMethod.Get && !ignoreCache)
                            {
                                var timeStamp = await _localCache
                                                .GetExpiration(request.EndpointUrl)
                                                .ConfigureAwait(false);

                                httpRequest.Headers.IfModifiedSince = timeStamp;
                            }
                        }

                        response = await httpClient.SendAsync(httpRequest).ConfigureAwait(false);
                    }
                    catch (Exception ex)
                    {
                        Logger.Error(ex);
                    }

                    if (response != null && response.StatusCode == HttpStatusCode.NotModified)
                    {
                        return(response);
                    }

                    response = await HandleErrors(response, request).ConfigureAwait(false);

                    return(response);
                }
            }
        }
Exemplo n.º 21
0
        private static async Task <Resource[]> GetResoucesFromRequestAsync(BaseRestRequest request)
        {
            var response = await request.Execute();

            return(response.ResourceSets[0].Resources);
        }
Exemplo n.º 22
0
        /// <summary>
        /// Method triggers the request by calling the execute method of the BingMaps RESTToolKit.
        /// <param name="request"></param>
        private async void ProcessRequest(BaseRestRequest request)
        {
            try
            {
                RequestProgressBar.Visibility = Visibility.Visible;
                RequestProgressBarText.Text   = string.Empty;

                ResultTreeView.ItemsSource = null;

                var start = DateTime.Now;

                //Executes the request.
                var response = await request.Execute((remainingTime) =>
                {
                    if (remainingTime > -1)
                    {
                        _time = TimeSpan.FromSeconds(remainingTime);

                        RequestProgressBarText.Text = string.Format("Time remaining {0} ", _time);

                        _timer.Start();
                    }
                });

                RequestUrlTbx.Text = request.GetRequestUrl();

                var end            = DateTime.Now;
                var processingTime = end - start;
                var nodes_warnings = new List <ObjectNode>();
                var nodes_all      = new List <ObjectNode>();
                //Takes any Object and generates an Object Tree.
                var tree = await ObjectNode.ParseAsync("result", response);

                //List of warnings for trim function and visualisation in the view
                var    list_warnings   = new List <KeyValuePair <string, string> >();
                string filter_severity = "Severity";

                ProcessingTimeTbx.Text = string.Format(CultureInfo.InvariantCulture, "{0:0} ms",
                                                       processingTime.TotalMilliseconds);
                RequestProgressBar.Visibility = Visibility.Collapsed;

                nodes_all.Add(tree);

                SeverityRatings_panel.Children.Clear();

                nodes_warnings.Add(tree);
                ResultTreeViewFull.ItemsSource = nodes_all;

                TrimTree(nodes_warnings, filter_severity, list_warnings);

                ResultTreeView.ItemsSource = nodes_warnings;

                foreach (var element in list_warnings)
                {
                    switch (element.Value)
                    {
                    case "\"Minor\"":
                    case "\"LowImpact\"":
                        TextBlock Minor_Low_sev = new TextBlock
                        {
                            Text       = element.ToString(),
                            Background = Brushes.LightGreen,
                            FontSize   = 20
                        };
                        SeverityRatings_panel.Children.Add(Minor_Low_sev);
                        break;

                    case "\"Moderate\"":
                        TextBlock Moderate_sev = new TextBlock
                        {
                            Text       = element.ToString(),
                            Background = Brushes.Orange,
                            FontSize   = 20
                        };
                        SeverityRatings_panel.Children.Add(Moderate_sev);
                        break;

                    case "\"Serious\"":
                        TextBlock Serious_sev = new TextBlock
                        {
                            Text       = element.ToString(),
                            Background = Brushes.PaleVioletRed,
                            FontSize   = 20
                        };
                        SeverityRatings_panel.Children.Add(Serious_sev);
                        break;

                    default:
                        break;
                    }
                }

                ProcessWarnings(list_warnings);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

            _timer.Stop();
            RequestProgressBar.Visibility = Visibility.Collapsed;
        }
Exemplo n.º 23
0
 public override Task <string> SendAndGetResponseAsync(BaseRestRequest request)
 {
     return(SendAndGetResponseAsync(request, false));
 }
Exemplo n.º 24
0
 protected override Task <HttpResponseMessage> SendAsyncImpl(BaseRestRequest request)
 {
     return(SendAsyncImpl(request, false));
 }