Ejemplo n.º 1
0
        public async Task <IPostResponse> SubmitLeadAsync(IPostRequest request)
        {
            var urlString    = $"{SemServiceEndpoint}/Post?{request.ToQuerystring()}";
            var xmlString    = await new HttpClient().GetStringAsync(new Uri(urlString)).ConfigureAwait(false);
            var postResponse = XmlConvert.DeserializeObject <PostResponse>(StripNamespacesFromPostResponseRoot(xmlString));

            if (!postResponse.IsSuccess)
            {
                ErrorSignal.FromCurrentContext().Raise(new Exception($"SEMProxyService:SubmitLeadAsync - {postResponse.RejectedReason} | {request.ToQuerystring()}"));
            }

            return(postResponse);
        }
Ejemplo n.º 2
0
        protected static async ValueTask <T> PostAsync <T>(IPostRequest request, JsonSerializerOptions options)
        {
            using var client = CreateClient();

            using var content = request.IsJson ? request.ToJson() : request.ToForm();

            using var resp = await client.PostAsync(request.Host, content);

            using var stream = await resp.Content.ReadAsStreamAsync();

            if (stream.Length > 0)
            {
                var json = await JsonSerializer.DeserializeAsync <T>(stream, options);

                return(json);
            }
            else
            {
                return(default);
Ejemplo n.º 3
0
        public Task <Either <TFailedRequest, Response <TResponseData> > > PostAsync <TFailedRequest, TResponseData>(
            IPostRequest <TResponseData> request, Option <string> oAuthAccessToken,
            Func <string, ICustomJsonSerialiser, HttpResponseInfo, Either <TFailedRequest, Response <TResponseData> > >
            responseHandler)
        {
            var requestOptions = new HttpRequestOptions
            {
                AcceptHeader       = "application/json",
                Url                = request.Url,
                RequestContent     = _jsonSerialiser.Serialise(request.Data),
                RequestContentType = "application/json"
            };

            SetToken(requestOptions, oAuthAccessToken);

            _log.Debug($"Posting: '{requestOptions.RequestContent}' to '{requestOptions.Url}'");

            var response = _httpClient.Post(requestOptions);

            return(response.Map(r => ApplyResponseHandler(responseHandler, r)));
        }
Ejemplo n.º 4
0
        public async Task <TResponse> Handle(IPostRequest request, CancellationToken cancellationToken, RequestHandlerDelegate <TResponse> next)
        {
            Domain.Entities.Post post = null;
            try
            {
                post = await _blogContext.Posts
                       .Find(d => d.Id == request.PostId)
                       .FirstOrDefaultAsync(cancellationToken);
            }
            catch (FormatException)
            {
                ThrowEntityDoesNotExistsException(request);
            }
            if (post == null)
            {
                ThrowEntityDoesNotExistsException(request);
            }

            var response = await next();

            return(response);
        }
Ejemplo n.º 5
0
        public async Task <TraktPagedResponse <TResponseContentType> > ExecutePagedRequestAsync <TResponseContentType, TRequestBodyType>(IPostRequest <TResponseContentType, TRequestBodyType> request, CancellationToken cancellationToken = default) where TRequestBodyType : IRequestBody
        {
            ValidateRequest(request);
            ExtendedHttpRequestMessage requestMessage = await _requestMessageBuilder.Reset(request).WithRequestBody(request.RequestBody).Build(cancellationToken).ConfigureAwait(false);

            return(await QueryPagedListAsync <TResponseContentType>(requestMessage, cancellationToken).ConfigureAwait(false));
        }
Ejemplo n.º 6
0
 public Task <TResponse> PostAsync <TResponse>(IPostRequest <TResponse> request)
 {
     throw new NotImplementedException();
 }
        private async Task <TraktResponse <ITraktAuthorization> > ExecuteAuthorizationRequestAsync <TRequestBodyType>(IPostRequest <ITraktAuthorization, TRequestBodyType> request, bool isRefreshRequest, CancellationToken cancellationToken = default) where TRequestBodyType : IRequestBody
        {
            try
            {
                request.Validate();

                ExtendedHttpRequestMessage requestMessage =
                    await _requestMessageBuilder.Reset(request)
                    .WithRequestBody(request.RequestBody)
                    .DisableAPIVersionHeader()
                    .DisableAPIClientIdHeader()
                    .Build().ConfigureAwait(false);

                HttpResponseMessage responseMessage = await _client.HttpClientProvider.GetHttpClient().SendAsync(requestMessage, cancellationToken).ConfigureAwait(false);

                HttpStatusCode responseCode = responseMessage.StatusCode;
                Stream         responseContentStream;

                if (responseCode == HttpStatusCode.OK)
                {
                    responseContentStream = await ResponseMessageHelper.GetResponseContentStreamAsync(responseMessage).ConfigureAwait(false);

                    IObjectJsonReader <ITraktAuthorization> objectJsonReader = JsonFactoryContainer.CreateObjectReader <ITraktAuthorization>();
                    ITraktAuthorization traktAuthorization = await objectJsonReader.ReadObjectAsync(responseContentStream, cancellationToken).ConfigureAwait(false);

                    var response = new TraktResponse <ITraktAuthorization>()
                    {
                        Value     = traktAuthorization,
                        HasValue  = traktAuthorization != null,
                        IsSuccess = traktAuthorization != null
                    };

                    if (responseMessage.Headers != null)
                    {
                        ResponseHeaderParser.ParseResponseHeaderValues(response, responseMessage.Headers);
                    }

                    _client.Authentication.Authorization = traktAuthorization;
                    return(response);
                }
                else if (responseCode == HttpStatusCode.Unauthorized) // Invalid code
                {
                    responseContentStream = await ResponseMessageHelper.GetResponseContentStreamAsync(responseMessage).ConfigureAwait(false);

                    IObjectJsonReader <ITraktError> objectJsonReader = JsonFactoryContainer.CreateObjectReader <ITraktError>();
                    ITraktError traktError = await objectJsonReader.ReadObjectAsync(responseContentStream, cancellationToken).ConfigureAwait(false);

                    var errorMessage = traktError != null ? ($"error on {(isRefreshRequest ? "refreshing" : "retrieving")} oauth access token\nerror: {traktError.Error}\ndescription: {traktError.Description}")
                                                          : "unknown error";

                    throw new TraktAuthenticationOAuthException(errorMessage)
                          {
                              StatusCode         = responseCode,
                              RequestUrl         = requestMessage.Url,
                              RequestBody        = requestMessage.RequestBodyJson,
                              ServerReasonPhrase = responseMessage.ReasonPhrase
                          };
                }

                await ResponseErrorHandler.HandleErrorsAsync(requestMessage, responseMessage, isAuthorizationRequest : true, cancellationToken : cancellationToken).ConfigureAwait(false);
            }
            catch (Exception ex)
            {
                if (_client.Configuration.ThrowResponseExceptions)
                {
                    throw;
                }

                return(new TraktResponse <ITraktAuthorization> {
                    IsSuccess = false, Exception = ex
                });
            }

            return(new TraktResponse <ITraktAuthorization>());
        }
Ejemplo n.º 8
0
 public Task <Either <FailedRequest, Response <TResponseData> > > PostAsync <TResponseData>(
     IPostRequest <TResponseData> request, Option <string> oAuthAccessToken)
 {
     return(PostAsync(request, oAuthAccessToken, ParseResponse <TResponseData>));
 }
 public async Task <T> PostAsync <T>(IPostRequest request) where T : IResponse
 {
     return(await restCaller.PostAsync <T>(request.GetUri(), request.GetPostContent()));
 }
 public T Post <T>(IPostRequest request) where T : IResponse
 {
     return(restCaller.Post <T>(request.GetUri(), request.GetPostContent()));
 }
Ejemplo n.º 11
0
 private static void ThrowEntityDoesNotExistsException(IPostRequest request)
 {
     throw new EntityDoesNotExistsException($"The post with id {request.PostId} does not exist.");
 }
Ejemplo n.º 12
0
 public RequestAdapter(IPostRequest postRequest)
 {
     this.postRequest = postRequest;
 }