예제 #1
0
        public async Task <List <TList> > GetAll(string orderBy, string direction = "asc")
        {
            var queryParams = new HttpQueryParameters();

            if (!string.IsNullOrEmpty(orderBy))
            {
                queryParams.Add("orderBy", orderBy);
            }

            if (!string.IsNullOrEmpty(direction))
            {
                queryParams.Add("direction", direction);
            }

            var settings = new HttpSettings($"{this.Url}", queryParams, null);

            return(await this.Http.Get <List <TList> >(settings));
        }
예제 #2
0
 /// <summary>
 /// Get number
 /// </summary>
 /// <param name="settings">HTTP settings</param>
 /// <returns>Number response</returns>
 public async Task <int?> GetInt(HttpSettings settings)
 {
     return(await Get <int?>(settings));
 }
예제 #3
0
 /// <summary>
 /// GET request
 /// </summary>
 /// <param name="settings">HTTP settings</param>
 /// <typeparam name="T">Type of the result</typeparam>
 /// <returns>Response as T type</returns>
 public async Task <T> Get <T>(HttpSettings settings)
 {
     return((await SendRequest <T>(settings, HttpMethod.Get, null, true)).Content);
 }
예제 #4
0
 /// <summary>
 /// DELETE request
 /// </summary>
 /// <param name="settings">HTTP settings</param>
 /// <returns>The request was success or not</returns>
 public async Task <bool> Delete(HttpSettings settings)
 {
     return((await SendRequest <object>(settings, HttpMethod.Delete, null)).IsSuccess);
 }
예제 #5
0
 /// <summary>
 /// POST request where we want string response
 /// </summary>
 /// <param name="settings">HTTP settings</param>
 /// <param name="body">Body of post request</param>
 /// <typeparam name="T">Type of the body</typeparam>
 /// <returns>Response string value</returns>
 public async Task <string> CreateString <T>(HttpSettings settings, HttpBody <T> body)
 {
     return(await CreateWithResult <string, T>(settings, body));
 }
예제 #6
0
 /// <summary>
 /// POST request
 /// </summary>
 /// <param name="settings">HTTP settings</param>
 /// <param name="body">Body of post request</param>
 /// <typeparam name="T">Type of the body</typeparam>
 /// <returns>The request was success or not</returns>
 public async Task <bool> Create <T>(HttpSettings settings, HttpBody <T> body)
 {
     return((await SendRequest <object>(settings, HttpMethod.Post, body.GetStringContent())).IsSuccess);
 }
예제 #7
0
        private async Task <HttpResponse <T> > SendRequest <T>(HttpSettings settings, HttpMethod method,
                                                               HttpContent content, bool parseResult)
        {
            CheckSettings(settings);

            var url     = CreateUrl(settings);
            var request = new HttpRequestMessage(method, url);

            if (content != null)
            {
                request.Content = content;
            }

            if (_configuration.IsTokenBearer)
            {
                var token = await _localStorageService.GetItemAsync <string>(_configuration.TokenName);

                var isApiUrl = request.RequestUri?.IsAbsoluteUri ?? false;

                if (!string.IsNullOrEmpty(token) && isApiUrl)
                {
                    request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token);
                }
            }

            try
            {
                using var response = await _httpClient.SendAsync(request);

                if (CheckActionWasUnauthorized(response))
                {
                    return(new HttpResponse <T> {
                        IsSuccess = false
                    });
                }

                if (settings.ToasterSettings.IsNeeded)
                {
                    await _helperService.AddToaster(response, settings.ToasterSettings.Caption);
                }

                if (!response.IsSuccessStatusCode)
                {
                    return(new HttpResponse <T> {
                        IsSuccess = false
                    });
                }

                try
                {
                    if (parseResult)
                    {
                        return(new HttpResponse <T>
                        {
                            IsSuccess = true, Content = await response.Content.ReadFromJsonAsync <T>()
                        });
                    }

                    return(new HttpResponse <T> {
                        IsSuccess = true
                    });
                }
                catch (Exception e)
                {
                    ConsoleSerializationError(e);
                    return(new HttpResponse <T> {
                        IsSuccess = false
                    });
                }
            }
            catch (Exception e)
            {
                ConsoleCallError(e, url);
                return(new HttpResponse <T> {
                    IsSuccess = false
                });
            }
        }
예제 #8
0
 private async Task <HttpResponse <T> > SendRequest <T>(HttpSettings settings, HttpMethod method, HttpContent content)
 {
     return(await SendRequest <T>(settings, method, content, false));
 }
예제 #9
0
 public async Task <T> CreateWithResult <T, TBody>(HttpSettings settings, HttpBody <TBody> body)
 {
     return((await SendRequest <T>(settings, HttpMethod.Post, body.GetStringContent(), true)).Content);
 }
예제 #10
0
        public async Task <bool> Download <T>(HttpSettings settings, T model)
        {
            var body = new HttpBody <T>(model);

            return(Download(await UpdateWithResult <ExportResult, T>(settings, body)));
        }
예제 #11
0
 public async Task <bool> Download(HttpSettings settings)
 {
     return(Download(await Get <ExportResult>(settings)));
 }
예제 #12
0
 public async Task <int> CreateInt <T>(HttpSettings settings, HttpBody <T> body)
 {
     return(await CreateWithResult <int, T>(settings, body));
 }
예제 #13
0
 /// <summary>
 /// Get string
 /// </summary>
 /// <param name="settings">HTTP settings</param>
 /// <returns>String response</returns>
 public async Task <string> GetString(HttpSettings settings)
 {
     return(await Get <string>(settings));
 }