diff --git a/.gitignore b/.gitignore
index 343c8bec..493c262d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -292,3 +292,4 @@ __pycache__/
/BotSharp.WebStarter/App_Data/DbInitializer/Agents/Dialogflow/VirtualAssistant
/BotSharp.UnitTest/App_Data/DbInitializer/Agents
/BotSharp.UnitTest/App_Data/BotSharp.db
+/BotSharp.WebHost/App_Data/BotSharp.db
diff --git a/BotSharp.Core/BotSharp.Core.csproj b/BotSharp.Core/BotSharp.Core.csproj
index 766f1957..35f376ef 100644
--- a/BotSharp.Core/BotSharp.Core.csproj
+++ b/BotSharp.Core/BotSharp.Core.csproj
@@ -45,6 +45,7 @@
+
diff --git a/BotSharp.RestApi/AgentController.cs b/BotSharp.RestApi/AgentController.cs
new file mode 100644
index 00000000..2cea7483
--- /dev/null
+++ b/BotSharp.RestApi/AgentController.cs
@@ -0,0 +1,22 @@
+using Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace BotSharp.RestApi
+{
+ [Route("[controller]/[action]")]
+ public class AgentController : ControllerBase
+ {
+ ///
+ /// Restore a agent from a uploaded zip file
+ ///
+ ///
+ ///
+ [HttpGet("{agentId}")]
+ public ActionResult Restore([FromRoute] String agentId)
+ {
+ return Ok();
+ }
+ }
+}
diff --git a/BotSharp.RestApi/BotSharp.RestApi.csproj b/BotSharp.RestApi/BotSharp.RestApi.csproj
new file mode 100644
index 00000000..e2d8172e
--- /dev/null
+++ b/BotSharp.RestApi/BotSharp.RestApi.csproj
@@ -0,0 +1,15 @@
+
+
+
+ netcoreapp2.1
+
+
+
+
+
+
+
+
+
+
+
diff --git a/BotSharp.UnitTest/BotSharp.UnitTest.csproj b/BotSharp.UnitTest/BotSharp.UnitTest.csproj
index 539f1223..5ed76d0e 100644
--- a/BotSharp.UnitTest/BotSharp.UnitTest.csproj
+++ b/BotSharp.UnitTest/BotSharp.UnitTest.csproj
@@ -6,30 +6,6 @@
false
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
-
@@ -46,8 +22,4 @@
-
-
-
-
diff --git a/BotSharp.UnitTest/TestEssential.cs b/BotSharp.UnitTest/TestEssential.cs
index 766c16fe..885065c8 100644
--- a/BotSharp.UnitTest/TestEssential.cs
+++ b/BotSharp.UnitTest/TestEssential.cs
@@ -20,7 +20,7 @@ namespace BotSharp.UnitTest
public TestEssential()
{
- contentRoot = $"{Directory.GetCurrentDirectory()}{Path.DirectorySeparatorChar}..{Path.DirectorySeparatorChar}..{Path.DirectorySeparatorChar}..";
+ contentRoot = $"{Directory.GetCurrentDirectory()}\\..\\..\\..\\..\\BotSharp.WebHost\\";
ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
var settings = Directory.GetFiles(contentRoot + $"{Path.DirectorySeparatorChar}Settings{Path.DirectorySeparatorChar}", "*.json");
diff --git a/BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/agent.json b/BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/agent.json
similarity index 100%
rename from BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/agent.json
rename to BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/agent.json
diff --git a/BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/music-album.json b/BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/music-album.json
similarity index 100%
rename from BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/music-album.json
rename to BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/music-album.json
diff --git a/BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/music-album_entries_en.json b/BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/music-album_entries_en.json
similarity index 100%
rename from BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/music-album_entries_en.json
rename to BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/music-album_entries_en.json
diff --git a/BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/music-service.json b/BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/music-service.json
similarity index 100%
rename from BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/music-service.json
rename to BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/music-service.json
diff --git a/BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/music-service_entries_en.json b/BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/music-service_entries_en.json
similarity index 100%
rename from BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/music-service_entries_en.json
rename to BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/music-service_entries_en.json
diff --git a/BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/music-sort.json b/BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/music-sort.json
similarity index 100%
rename from BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/music-sort.json
rename to BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/music-sort.json
diff --git a/BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/music-sort_entries_en.json b/BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/music-sort_entries_en.json
similarity index 100%
rename from BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/music-sort_entries_en.json
rename to BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/music-sort_entries_en.json
diff --git a/BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/playlist.json b/BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/playlist.json
similarity index 100%
rename from BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/playlist.json
rename to BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/playlist.json
diff --git a/BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/playlist_entries_en.json b/BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/playlist_entries_en.json
similarity index 100%
rename from BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/playlist_entries_en.json
rename to BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/playlist_entries_en.json
diff --git a/BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/song.json b/BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/song.json
similarity index 100%
rename from BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/song.json
rename to BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/song.json
diff --git a/BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/song_entries_en.json b/BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/song_entries_en.json
similarity index 100%
rename from BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/song_entries_en.json
rename to BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/entities/song_entries_en.json
diff --git a/BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music.play.json b/BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music.play.json
similarity index 100%
rename from BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music.play.json
rename to BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music.play.json
diff --git a/BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music.play_usersays_en.json b/BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music.play_usersays_en.json
similarity index 100%
rename from BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music.play_usersays_en.json
rename to BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music.play_usersays_en.json
diff --git a/BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.add_favorite.json b/BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.add_favorite.json
similarity index 100%
rename from BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.add_favorite.json
rename to BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.add_favorite.json
diff --git a/BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.add_favorite_usersays_en.json b/BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.add_favorite_usersays_en.json
similarity index 100%
rename from BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.add_favorite_usersays_en.json
rename to BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.add_favorite_usersays_en.json
diff --git a/BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.add_playlist.json b/BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.add_playlist.json
similarity index 100%
rename from BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.add_playlist.json
rename to BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.add_playlist.json
diff --git a/BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.add_playlist_usersays_en.json b/BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.add_playlist_usersays_en.json
similarity index 100%
rename from BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.add_playlist_usersays_en.json
rename to BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.add_playlist_usersays_en.json
diff --git a/BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.pause.json b/BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.pause.json
similarity index 100%
rename from BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.pause.json
rename to BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.pause.json
diff --git a/BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.pause_usersays_en.json b/BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.pause_usersays_en.json
similarity index 100%
rename from BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.pause_usersays_en.json
rename to BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.pause_usersays_en.json
diff --git a/BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.play.json b/BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.play.json
similarity index 100%
rename from BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.play.json
rename to BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.play.json
diff --git a/BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.play_usersays_en.json b/BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.play_usersays_en.json
similarity index 100%
rename from BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.play_usersays_en.json
rename to BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.play_usersays_en.json
diff --git a/BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.repeat.json b/BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.repeat.json
similarity index 100%
rename from BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.repeat.json
rename to BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.repeat.json
diff --git a/BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.repeat_usersays_en.json b/BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.repeat_usersays_en.json
similarity index 100%
rename from BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.repeat_usersays_en.json
rename to BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.repeat_usersays_en.json
diff --git a/BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.resume.json b/BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.resume.json
similarity index 100%
rename from BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.resume.json
rename to BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.resume.json
diff --git a/BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.resume_usersays_en.json b/BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.resume_usersays_en.json
similarity index 100%
rename from BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.resume_usersays_en.json
rename to BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.resume_usersays_en.json
diff --git a/BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.shuffle.json b/BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.shuffle.json
similarity index 100%
rename from BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.shuffle.json
rename to BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.shuffle.json
diff --git a/BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.shuffle_usersays_en.json b/BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.shuffle_usersays_en.json
similarity index 100%
rename from BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.shuffle_usersays_en.json
rename to BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.shuffle_usersays_en.json
diff --git a/BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.skip_backward.json b/BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.skip_backward.json
similarity index 100%
rename from BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.skip_backward.json
rename to BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.skip_backward.json
diff --git a/BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.skip_backward_usersays_en.json b/BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.skip_backward_usersays_en.json
similarity index 100%
rename from BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.skip_backward_usersays_en.json
rename to BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.skip_backward_usersays_en.json
diff --git a/BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.skip_forward.json b/BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.skip_forward.json
similarity index 100%
rename from BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.skip_forward.json
rename to BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.skip_forward.json
diff --git a/BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.skip_forward_usersays_en.json b/BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.skip_forward_usersays_en.json
similarity index 100%
rename from BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.skip_forward_usersays_en.json
rename to BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.skip_forward_usersays_en.json
diff --git a/BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.stop.json b/BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.stop.json
similarity index 100%
rename from BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.stop.json
rename to BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.stop.json
diff --git a/BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.stop_usersays_en.json b/BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.stop_usersays_en.json
similarity index 100%
rename from BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.stop_usersays_en.json
rename to BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/intents/music_player_control.stop_usersays_en.json
diff --git a/BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/package.json b/BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/package.json
similarity index 100%
rename from BotSharp.UnitTest/App_Data/DbInitializer/Agents/Dialogflow/Spotify/package.json
rename to BotSharp.WebHost/App_Data/DbInitializer/Agents/Dialogflow/Spotify/package.json
diff --git a/BotSharp.UnitTest/App_Data/DbInitializer/Agents/agents.json b/BotSharp.WebHost/App_Data/DbInitializer/Agents/agents.json
similarity index 100%
rename from BotSharp.UnitTest/App_Data/DbInitializer/Agents/agents.json
rename to BotSharp.WebHost/App_Data/DbInitializer/Agents/agents.json
diff --git a/BotSharp.WebHost/BotSharp.WebHost.csproj b/BotSharp.WebHost/BotSharp.WebHost.csproj
new file mode 100644
index 00000000..efcd6af0
--- /dev/null
+++ b/BotSharp.WebHost/BotSharp.WebHost.csproj
@@ -0,0 +1,105 @@
+
+
+
+ netcoreapp2.1
+ Portable;win10-x64;centos.7-x64
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/BotSharp.WebHost/Program.cs b/BotSharp.WebHost/Program.cs
new file mode 100644
index 00000000..19cc1605
--- /dev/null
+++ b/BotSharp.WebHost/Program.cs
@@ -0,0 +1,34 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.Logging;
+
+namespace BotSharp.WebHost
+{
+ public class Program
+ {
+ public static void Main(string[] args)
+ {
+ BuildWebHost(args).Run();
+ }
+
+ public static IWebHost BuildWebHost(string[] args) =>
+ Microsoft.AspNetCore.WebHost.CreateDefaultBuilder(args)
+ .ConfigureAppConfiguration((hostingContext, config) => {
+
+ var env = hostingContext.HostingEnvironment;
+ var settings = Directory.GetFiles($"{env.ContentRootPath}{Path.DirectorySeparatorChar}Settings", "*.json");
+ settings.ToList().ForEach(setting => {
+ config.AddJsonFile(setting, optional: false, reloadOnChange: true);
+ });
+ })
+ .UseUrls("http://0.0.0.0:3112")
+ .UseStartup()
+ .Build();
+ }
+}
diff --git a/BotSharp.UnitTest/Settings/settings.app.json b/BotSharp.WebHost/Settings/app.json
similarity index 100%
rename from BotSharp.UnitTest/Settings/settings.app.json
rename to BotSharp.WebHost/Settings/app.json
diff --git a/BotSharp.UnitTest/Settings/settings.bot.json b/BotSharp.WebHost/Settings/bot.json
similarity index 100%
rename from BotSharp.UnitTest/Settings/settings.bot.json
rename to BotSharp.WebHost/Settings/bot.json
diff --git a/BotSharp.UnitTest/Settings/config_jieba_mitie_sklearn.yml b/BotSharp.WebHost/Settings/config_jieba_mitie_sklearn.yml
similarity index 100%
rename from BotSharp.UnitTest/Settings/config_jieba_mitie_sklearn.yml
rename to BotSharp.WebHost/Settings/config_jieba_mitie_sklearn.yml
diff --git a/BotSharp.UnitTest/Settings/config_mitie_sklearn.yml b/BotSharp.WebHost/Settings/config_mitie_sklearn.yml
similarity index 100%
rename from BotSharp.UnitTest/Settings/config_mitie_sklearn.yml
rename to BotSharp.WebHost/Settings/config_mitie_sklearn.yml
diff --git a/BotSharp.UnitTest/Settings/config_spacy.yml b/BotSharp.WebHost/Settings/config_spacy.yml
similarity index 100%
rename from BotSharp.UnitTest/Settings/config_spacy.yml
rename to BotSharp.WebHost/Settings/config_spacy.yml
diff --git a/BotSharp.UnitTest/Settings/settings.db.json b/BotSharp.WebHost/Settings/db.json
similarity index 100%
rename from BotSharp.UnitTest/Settings/settings.db.json
rename to BotSharp.WebHost/Settings/db.json
diff --git a/BotSharp.WebHost/Startup.cs b/BotSharp.WebHost/Startup.cs
new file mode 100644
index 00000000..43fd69d7
--- /dev/null
+++ b/BotSharp.WebHost/Startup.cs
@@ -0,0 +1,49 @@
+using System;
+using System.IO;
+using System.Linq;
+using EntityFrameworkCore.BootKit;
+using Microsoft.AspNetCore.Builder;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.AspNetCore.Http;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.DependencyInjection;
+using Newtonsoft.Json.Serialization;
+
+namespace BotSharp.WebHost
+{
+ public partial class Startup
+ {
+ public Startup(IConfiguration configuration)
+ {
+ Configuration = configuration;
+ }
+
+ public IConfiguration Configuration { get; }
+
+ public void ConfigureServices(IServiceCollection services)
+ {
+ services.AddMvc(options =>
+ {
+ options.RespectBrowserAcceptHeader = true;
+ }).AddJsonOptions(options =>
+ {
+ options.SerializerSettings.Converters.Add(new Newtonsoft.Json.Converters.StringEnumConverter());
+ options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
+ });
+ }
+
+ public void Configure(IApplicationBuilder app, IHostingEnvironment env)
+ {
+ if (env.IsDevelopment())
+ {
+ app.UseDeveloperExceptionPage();
+ }
+
+ app.UseMvc();
+
+ Database.Configuration = Configuration;
+ Database.ContentRootPath = env.ContentRootPath;
+ Database.Assemblies = new String[] { "BotSharp.Core" };
+ }
+ }
+}
diff --git a/BotSharp.sln b/BotSharp.sln
index 89af1f34..eb99c20b 100644
--- a/BotSharp.sln
+++ b/BotSharp.sln
@@ -7,6 +7,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BotSharp.UnitTest", "BotSha
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BotSharp.Core", "BotSharp.Core\BotSharp.Core.csproj", "{95780673-2A1A-4953-962F-C46CBFDD07FF}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BotSharp.RestApi", "BotSharp.RestApi\BotSharp.RestApi.csproj", "{80DDAA05-69BC-49DD-96A4-37345E7A2E20}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BotSharp.WebHost", "BotSharp.WebHost\BotSharp.WebHost.csproj", "{03DCA427-327A-4FC9-9A2F-57D17F16708C}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -21,6 +25,14 @@ Global
{95780673-2A1A-4953-962F-C46CBFDD07FF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{95780673-2A1A-4953-962F-C46CBFDD07FF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{95780673-2A1A-4953-962F-C46CBFDD07FF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {80DDAA05-69BC-49DD-96A4-37345E7A2E20}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {80DDAA05-69BC-49DD-96A4-37345E7A2E20}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {80DDAA05-69BC-49DD-96A4-37345E7A2E20}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {80DDAA05-69BC-49DD-96A4-37345E7A2E20}.Release|Any CPU.Build.0 = Release|Any CPU
+ {03DCA427-327A-4FC9-9A2F-57D17F16708C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {03DCA427-327A-4FC9-9A2F-57D17F16708C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {03DCA427-327A-4FC9-9A2F-57D17F16708C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {03DCA427-327A-4FC9-9A2F-57D17F16708C}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE