示例#1
0
        public async Task <BaseResultDTO> DeleteVacationAsync(Guid id, CancellationToken cancellationToken)
        {
            var token = await _identyApi.GetAuthorizationTokenAsync();

            var parameters = new SharedContextParameters(_url, Method.DELETE, token)
                             .AddUrlSegment("{id}", "id", id);

            return(await _apiContext.SendRequestAsync <BaseResultDTO>(parameters, cancellationToken));
        }
        public async Task <TResponse> SendRequestAsync <TResponse, TRequest>(SharedContextParameters parameters, TRequest bodyRequest, CancellationToken cancellationToken)
            where TRequest : class, new()
            where TResponse : class, new()
        {
            var client = new HttpClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", parameters.Token);

            var httpRequest = new HttpRequestMessage(GetHttpMethod(parameters.Method), parameters.Url);

            if (bodyRequest != null)
            {
                httpRequest.Content = new StringContent(JsonConvert.SerializeObject(bodyRequest, new JsonSerializerSettings()
                {
                    DateFormatString = ApiSettings.DateFormatString
                }), Encoding.UTF8,
                                                        "application/json");
            }

            if (!string.IsNullOrWhiteSpace(parameters.Resourse))
            {
                var tempUrl = Path.Combine(parameters.Url, parameters.Resourse);

                foreach (var urlSegment in parameters.UrlSegments)
                {
                    tempUrl = tempUrl.Replace("{" + urlSegment.Key + "}", urlSegment.Value);
                }

                httpRequest.RequestUri = new Uri(tempUrl);
            }

            var response = await client.SendAsync(httpRequest, cancellationToken);

            var contentString = await response.Content.ReadAsStringAsync();

            return(JsonConvert.DeserializeObject <TResponse>(contentString));
        }
        public async Task <TResponse> SendRequestAsync <TResponse, TBodyRequest>(SharedContextParameters parameters, TBodyRequest bodyRequest, CancellationToken cancellationToken)
            where TBodyRequest : class, new()
            where TResponse : class, new()
        {
            var client = new RestClient(parameters.Url)
            {
                Authenticator = new OAuth2AuthorizationRequestHeaderAuthenticator(parameters.Token, "Bearer")
            };

            var jsonBody = JsonConvert.SerializeObject(bodyRequest);

            var request = new RestRequest(parameters.Method)
                          .AddJsonBody(jsonBody)
                          .AddUrlSegments(parameters.Resourse, parameters.UrlSegments);

            var response = await client.ExecuteTaskAsync(request, cancellationToken);

            if (response.StatusCode == HttpStatusCode.Unauthorized)
            {
                throw new AuthorizationException(Strings.NotActiveToken);
            }

            return(JsonConvert.DeserializeObject <TResponse>(response.Content));
        }
 public async Task <TResponse> SendRequestAsync <TResponse>(SharedContextParameters parameters, CancellationToken cancellationToken)
     where TResponse : class, new()
 {
     return(await SendRequestAsync <TResponse, object>(parameters, null, cancellationToken));
 }