2013-02-03 05:06:11 +06:00
using System ;
using System.Configuration ;
using System.Security.Authentication ;
using System.Web.Script.Serialization ;
using System.Web.Script.Services ;
using System.Web.Services ;
using Umbraco.Core ;
using Umbraco.Core.Logging ;
using Umbraco.Web.Install ;
using umbraco ;
using umbraco.businesslogic.Exceptions ;
namespace Umbraco.Web.UI.Install
{
public partial class InstallerRestService : System . Web . UI . Page
{
protected void Page_Load ( object sender , EventArgs e )
{
LogHelper . Info < InstallerRestService > ( string . Format ( "Hitting Page_Load on InstallerRestService.aspx for the requested '{0}' feed" , Request . QueryString [ "feed" ] ) ) ;
// Stop Caching in IE
Response . Cache . SetCacheability ( System . Web . HttpCacheability . NoCache ) ;
// Stop Caching in Firefox
Response . Cache . SetNoStore ( ) ;
string feed = Request . QueryString [ "feed" ] ;
string url = "http://our.umbraco.org/html/twitter" ;
if ( feed = = "progress" )
{
Response . ContentType = "application/json" ;
Response . Write ( InstallHelper . GetProgress ( ) ) ;
}
else
{
if ( feed = = "blogs" )
url = "http://our.umbraco.org/html/blogs" ;
if ( feed = = "sitebuildervids" )
url = "http://umbraco.org/feeds/videos/site-builder-foundation-html" ;
if ( feed = = "developervids" )
url = "http://umbraco.org/feeds/videos/developer-foundation-html" ;
string xmlResponse = library . GetXmlDocumentByUrl ( url ) . Current . OuterXml ;
if ( ! xmlResponse . Contains ( "System.Net.WebException" ) )
{
Response . Write ( library . GetXmlDocumentByUrl ( url ) . Current . OuterXml ) ;
}
else
{
Response . Write ( "We can't connect to umbraco.tv right now. Click <strong>Set up your new website</strong> above to continue." ) ;
}
}
}
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
2013-12-13 12:34:57 +11:00
public static string Install ( )
2013-02-03 05:06:11 +06:00
{
//if its not configured then we can continue
if ( ApplicationContext . Current = = null | | ApplicationContext . Current . IsConfigured )
{
throw new AuthenticationException ( "The application is already configured" ) ;
}
2013-12-13 12:34:57 +11:00
LogHelper . Info < InstallerRestService > ( "Running 'Install' service" ) ;
2013-02-03 05:06:11 +06:00
2013-12-13 12:34:57 +11:00
var result = ApplicationContext . Current . DatabaseContext . CreateDatabaseSchemaAndData ( ) ;
2013-02-03 05:06:11 +06:00
2013-12-13 12:34:57 +11:00
if ( result . RequiresUpgrade = = false )
{
HandleConnectionStrings ( ) ;
}
var js = new JavaScriptSerializer ( ) ;
var jsonResult = js . Serialize ( result ) ;
return jsonResult ;
}
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static string Upgrade ( )
{
//if its not configured then we can continue
if ( ApplicationContext . Current = = null | | ApplicationContext . Current . IsConfigured )
{
throw new AuthenticationException ( "The application is already configured" ) ;
}
LogHelper . Info < InstallerRestService > ( "Running 'Upgrade' service" ) ;
var result = ApplicationContext . Current . DatabaseContext . UpgradeSchemaAndData ( ) ;
HandleConnectionStrings ( ) ;
var js = new JavaScriptSerializer ( ) ;
var jsonResult = js . Serialize ( result ) ;
return jsonResult ;
}
private static void HandleConnectionStrings ( )
{
2013-02-03 05:06:11 +06:00
// Remove legacy umbracoDbDsn configuration setting if it exists and connectionstring also exists
if ( ConfigurationManager . ConnectionStrings [ Core . Configuration . GlobalSettings . UmbracoConnectionName ] ! = null )
{
Core . Configuration . GlobalSettings . RemoveSetting ( Core . Configuration . GlobalSettings . UmbracoConnectionName ) ;
}
else
{
var ex = new ArgumentNullException ( string . Format ( "ConfigurationManager.ConnectionStrings[{0}]" , Core . Configuration . GlobalSettings . UmbracoConnectionName ) , "Install / upgrade did not complete successfully, umbracoDbDSN was not set in the connectionStrings section" ) ;
LogHelper . Error < InstallerRestService > ( "" , ex ) ;
throw ex ;
}
}
}
}