@ -1,7 +1,9 @@
using System ;
using System.Configuration ;
using System.IO ;
using System.Linq ;
using System.Reflection ;
using System.Xml.Linq ;
using NLog ;
using NLog.Config ;
@ -34,13 +36,77 @@ namespace NzbDrone
internal static int Port
{
get { return Convert . ToInt32 ( ConfigurationManager . AppSettings . Get ( "port" ) ) ; }
get { return GetValueInt ( "Port" ) ; }
}
internal static bool LaunchBrowser
{
get { return GetValueBoolean ( "LaunchBrowser" ) ; }
}
internal static string AppDataDirectory
{
get { return Path . Combine ( ProjectRoot , "NzbDrone.Web" , "App_Data" ) ; }
}
internal static string ConfigFile
{
get { return Path . Combine ( AppDataDirectory , "Config.xml" ) ; }
}
internal static void ConfigureNlog ( )
{
LogManager . Configuration = new XmlLoggingConfiguration (
Path . Combine ( ProjectRoot , "NZBDrone.Web\\log.config" ) , false ) ;
Path . Combine ( ProjectRoot , "NzbDrone.Web\\log.config" ) , false ) ;
}
internal static void CreateDefaultConfigFile ( )
{
//Create the config file here
Directory . CreateDirectory ( AppDataDirectory ) ;
if ( ! File . Exists ( ConfigFile ) )
{
WriteDefaultConfig ( ) ;
}
}
internal static void WriteDefaultConfig ( )
{
var xDoc = new XDocument ( new XDeclaration ( "1.0" , "utf-8" , "yes" ) ) ;
xDoc . Add ( new XElement ( "Config" ,
new XElement ( "Port" , 8989 ) ,
new XElement ( "LaunchBrowser" , true )
)
) ;
xDoc . Save ( ConfigFile ) ;
}
private static string GetValue ( string key , string parent = null )
{
var xDoc = XDocument . Load ( ConfigFile ) ;
var config = xDoc . Descendants ( "Config" ) . Single ( ) ;
var parentContainer = config ;
if ( parent ! = null )
parentContainer = config . Descendants ( parent ) . Single ( ) ;
var value = parentContainer . Descendants ( key ) . Single ( ) . Value ;
return value ;
}
private static int GetValueInt ( string key , string parent = null )
{
return Convert . ToInt32 ( GetValue ( key , parent ) ) ;
}
private static bool GetValueBoolean ( string key , string parent = null )
{
return Convert . ToBoolean ( GetValue ( key , parent ) ) ;
}
}
}