public async Task UriMaker_is_ctor_injected_using_Autofac()
        {
            var config = new HttpConfiguration();
            // Autofac
            var builder = new ContainerBuilder();
            builder.RegisterApiControllers(Assembly.GetExecutingAssembly());

            // Web API routes
            var uriMakerContext = config.MapHttpAttributeRoutesAndUseUriMaker();
            builder.RegisterInstance(uriMakerContext).ExternallyOwned();
            builder.RegisterHttpRequestMessage(config);
            builder.RegisterGeneric(typeof(UriMaker<>)).AsSelf().InstancePerRequest();

            var container = builder.Build();
            var resolver = new AutofacWebApiDependencyResolver(container);
            config.DependencyResolver = resolver;
            
            var client = new HttpClient(new HttpServer(config));
            var res = await client.GetAsync("http://www.example.net/api/autofac/resources");
            Assert.Equal(HttpStatusCode.OK,res.StatusCode);
            var body = await res.Content.ReadAsAsync<ResourceState>();
            Assert.Equal("http://www.example.net/api/autofac/resources", body.self.ToString());
            Assert.Equal("http://www.example.net/api/autofac/resources?page=1&count=10", body.next.ToString());
            Assert.Equal("http://www.example.net/api/autofac/resources/0", body.first.ToString());
            Assert.Equal("http://www.example.net/api/autofac/resources/0?detailed=True", body.first_alternative.ToString());

        }
Exemple #2
0
 public UriMakerTests()
 {
     var config = new HttpConfiguration();
     var factory = config.MapHttpAttributeRoutesAndUseUriMaker(new DefaultDirectRouteProvider());
     config.EnsureInitialized();
     var req = new HttpRequestMessage(HttpMethod.Get,"http://example.org");
     req.SetConfiguration(config);
     _urlHelper = new UrlHelper(req);
     _uriMaker = factory.NewUriMakerFor<ResourceController>(req);
 }
Exemple #3
0
        private static void RegisterDrum( HttpConfiguration config, ContainerBuilder builder )
        {
            // Web API routes
            UriMakerContext uriMakerContext = config.MapHttpAttributeRoutesAndUseUriMaker();
            builder.RegisterInstance( uriMakerContext ).ExternallyOwned();
            builder.RegisterHttpRequestMessage( config );
            builder.RegisterGeneric( typeof( UriMaker<> ) ).AsSelf().InstancePerRequest();

            builder.RegisterType<DrumUrlProvider>().As<IUrlProvider>();
        }
        public void Configuration(IAppBuilder appBuilder)
        {
            var config = new HttpConfiguration();

            //TODO map '/api' route to handle redirections

            config.EnableCors();

            config.MapHttpAttributeRoutesAndUseUriMaker();

            ConfigFormaters(config);

            appBuilder.UseWebApi(config);
        }
Exemple #5
0
        public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services

            // Web API routes
            config.MapHttpAttributeRoutesAndUseUriMaker();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

            config.Formatters.Remove(config.Formatters.XmlFormatter);
        }
        public async Task UriMaker_is_ctor_injected_using_Autofac()
        {
            var config = new HttpConfiguration();
           
            // Web API routes
            config.MapHttpAttributeRoutesAndUseUriMaker(new TypedDirectRouteProvider());
            config.TypedRoute("api/typedroutes/resources", r => r.Action<TypedRoutesController>(c => c.GetAll()));
            config.TypedRoute("api/typedroutes/resources", r => r.Action<TypedRoutesController>(c => c.GetPaged(Param.Any<int>(), Param.Any<int>())));
            config.TypedRoute("api/typedroutes/resources/{id:int}", r => r.Action<TypedRoutesController>(c => c.GetById(Param.Any<int>())));
            config.TypedRoute("api/typedroutes/resources/{id:int}", r => r.Action<TypedRoutesController>(c => c.GetByIdDetailed(Param.Any<int>(), Param.Any<bool>())));

            var client = new HttpClient(new HttpServer(config));
            var res = await client.GetAsync("http://www.example.net/api/typedroutes/resources");
            Assert.Equal(HttpStatusCode.OK, res.StatusCode);
            var body = await res.Content.ReadAsAsync<ResourceState>();
            Assert.Equal("http://www.example.net/api/typedroutes/resources", body.self.ToString());
            Assert.Equal("http://www.example.net/api/typedroutes/resources?page=1&count=10", body.next.ToString());
            Assert.Equal("http://www.example.net/api/typedroutes/resources/0", body.first.ToString());
            Assert.Equal("http://www.example.net/api/typedroutes/resources/0?detailed=True", body.first_alternative.ToString());

        }
        public async Task UriMaker_is_ctor_injected_using_Unity()
        {
            var config = new HttpConfiguration();
            config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;

            // Web API routes
            var uriMakerContext = config.MapHttpAttributeRoutesAndUseUriMaker();
            
            // Unity
            var container = new UnityContainer();
            container.RegisterType(typeof(UriMaker<>), typeof(UriMaker<>), new InjectionConstructor(typeof(UriMakerContext), typeof(HttpRequestMessage)));
            container.RegisterType<CurrentRequest, CurrentRequest>(new HierarchicalLifetimeManager()); ;
            container.RegisterInstance(uriMakerContext);
            container.RegisterType<HttpRequestMessage>(
                new HierarchicalLifetimeManager(),
                new InjectionFactory(
                    c => c.Resolve<CurrentRequest>().Value));
            config.DependencyResolver = new UnityDependencyResolver(container);
            config.MessageHandlers.Add(new CurrentRequestHandler());

            //builder.RegisterInstance(uriMakerContext).ExternallyOwned();
            //builder.RegisterHttpRequestMessage(config);
            //builder.RegisterGeneric(typeof(UriMaker<>)).AsSelf().InstancePerRequest();
            
            var client = new HttpClient(new HttpServer(config));
            var res = await client.GetAsync("http://www.example.net/api/unity/resources");
            if (res.StatusCode != HttpStatusCode.OK)
            {
                Console.WriteLine(await res.Content.ReadAsStringAsync());
            }
            Assert.Equal(HttpStatusCode.OK,res.StatusCode);
            var body = await res.Content.ReadAsAsync<ResourceState>();
            Assert.Equal("http://www.example.net/api/unity/resources", body.self.ToString());
            Assert.Equal("http://www.example.net/api/unity/resources?page=1&count=10", body.next.ToString());
            Assert.Equal("http://www.example.net/api/unity/resources/0", body.first.ToString());
            Assert.Equal("http://www.example.net/api/unity/resources/0?detailed=True", body.first_alternative.ToString());

        }
 public MultipleRouteTests()
 {
     _config = new HttpConfiguration();
     _factory = _config.MapHttpAttributeRoutesAndUseUriMaker(new DefaultDirectRouteProvider(), Selector);
     _config.EnsureInitialized();
 }
 public RouteDataPropagationTests()
 {
     _config = new HttpConfiguration();
     _factory = _config.MapHttpAttributeRoutesAndUseUriMaker(new DefaultDirectRouteProvider());
     _config.EnsureInitialized();
 }