Skip to content

Commit 2673080

Browse files
committed
Refactor WebAPi app
1 parent 1f01aca commit 2673080

File tree

3 files changed

+71
-0
lines changed

3 files changed

+71
-0
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
using IntegrationEngine.Configuration;
2+
using System;
3+
4+
namespace IntegrationEngine.Api
5+
{
6+
public interface IWebApiApplication
7+
{
8+
IDisposable webApi { get; set; }
9+
WebApiConfiguration WebApiConfiguration { get; set; }
10+
void Start();
11+
void Stop();
12+
}
13+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
using IntegrationEngine.Configuration;
2+
using Microsoft.Owin.Hosting;
3+
using System;
4+
5+
namespace IntegrationEngine.Api
6+
{
7+
public class WebApiApplication : IWebApiApplication
8+
{
9+
public IDisposable webApi { get; set; }
10+
public WebApiConfiguration WebApiConfiguration { get; set; }
11+
12+
public WebApiApplication()
13+
{ }
14+
15+
public void Start()
16+
{
17+
var baseAddress = (new UriBuilder("http", WebApiConfiguration.HostName, WebApiConfiguration.Port)).Uri.AbsoluteUri;
18+
webApi = WebApp.Start<WebApiStartup>(baseAddress);
19+
}
20+
21+
public void Stop()
22+
{
23+
webApi.Dispose();
24+
}
25+
}
26+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
using Microsoft.Owin;
2+
using Owin;
3+
using System.Linq;
4+
using System.Web.Http;
5+
using System.Web.Http.Cors;
6+
using Microsoft.Practices.Unity;
7+
using IntegrationEngine.Configuration;
8+
9+
[assembly: OwinStartup(typeof(IntegrationEngine.Api.WebApiStartup))]
10+
11+
namespace IntegrationEngine.Api
12+
{
13+
public class WebApiStartup
14+
{
15+
public void Configuration(IAppBuilder appBuilder)
16+
{
17+
var config = new HttpConfiguration();
18+
var container = ContainerSingleton.GetContainer();
19+
config.DependencyResolver = new ContainerResolver(container);
20+
var webApiConfig = container.Resolve<EngineConfiguration>().WebApi;
21+
if (webApiConfig.Origins.Any())
22+
config.EnableCors(new EnableCorsAttribute(string.Join(",", webApiConfig.Origins), "*", "*"));
23+
config.Routes.MapHttpRoute(
24+
name: "DefaultApi",
25+
routeTemplate: "api/{controller}/{id}",
26+
defaults: new { id = RouteParameter.Optional }
27+
);
28+
config.MapHttpAttributeRoutes();
29+
appBuilder.UseWebApi(config);
30+
}
31+
}
32+
}

0 commit comments

Comments
 (0)