/// <summary>
        /// Finds the endpoint and executes the request onto it.
        /// Handles errors and disposes of the endpoint when completed.
        /// </summary>
        public async Task InvokeAsync(IHttpRequestReader requestReader, IHttpRequestResponder responder, IRequestContext context)
        {
            var response = new Response(requestReader.ResourcePath);
            var builder  = new ResponseBuilder(response, _services.Modifiers);

            var reader = new RequestReader(requestReader, _services.NameSwitcher, _services.QueryCreator);
            var writer = new ResponseWriter(responder, response, _services.NameSwitcher);

            try
            {
                var           navigator = new EndpointNavigator(context, _startResourceFactory, _services);
                IRestEndpoint endpoint  = navigator.GetEndpointFromPath(requestReader.ResourcePath);
                IExecutor     executor  = _services.ExecutorFactory.GetExecutor(endpoint);

                await executor.ExecuteAsync(reader, builder);

                await writer.WriteAsync();
            }
            catch (Exception ex)
            {
                var errorInfo = new ExceptionErrorInfo(ex);
                builder.AddError(errorInfo);

                await writer.WriteAsync();
            }
            finally
            {
                context.Dispose();
            }
        }
Ejemplo n.º 2
0
 public void Setup()
 {
     clientConsumer = A.Fake<IClientConsumer>();
     tokenService = A.Fake<ITokenStorageService>();
     httpRequestReader = A.Fake<IHttpRequestReader>();
     client = new OAuthClient(clientConsumer, tokenService, httpRequestReader);
 }
Ejemplo n.º 3
0
 public MyHandlerRouteProvider(IHttpRequestReader reader)
 {
     _reader  = reader;
     _factory = ActivatorUtilities.CreateFactory(typeof(MyHandler), Type.EmptyTypes);
 }
Ejemplo n.º 4
0
 public RequestReader(IHttpRequestReader httpReader, INamingConventionSwitcher nameSwitcher, IQueryCreator queryCreator)
 {
     _httpReader   = httpReader;
     _nameSwitcher = nameSwitcher;
     _queryCreator = new NameSwitcherQueryCreator(queryCreator, nameSwitcher);
 }
Ejemplo n.º 5
0
 public OAuthClient(IClientConsumer consumer, ITokenStorageService tokenService, IHttpRequestReader httpRequestReader)
 {
     this.consumer = consumer;
     this.tokenService = tokenService;
     this.httpRequestReader = httpRequestReader;
 }