Ejemplo n.º 1
0
        /// <summary>
        /// Konstruktor
        /// </summary>
        /// <param name="port">Der Port auf dem der Server höhren soll</param>
        /// <param name="context">Der Serverkontext</param>
        public HttpServer(int port, HttpServerContext context)
        {
            Context = new HttpServerContext
                      (
                context.Uri,
                port,
                context.AssetPath,
                context.ConfigPath,
                context.ContextPath,
                context.Culture,
                context.Log
                      );

            Port    = port;
            Culture = Context.Culture;

            InternationalizationManager.Register(typeof(HttpServer).Assembly, "webexpress");

            InternationalizationManager.Initialization(Context);
            PluginManager.Initialization(Context);
            ApplicationManager.Initialization(Context);
            ModuleManager.Initialization(Context);
            ResourceManager.Initialization(Context);
            ResponseManager.Initialization(Context);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Fügt die Variablen-Wert-Paare dem Ergebnis hinzu
 /// </summary>
 /// <param name="variables">Die Variablen-Wert-Paare</param>
 public void AddVariables(IDictionary <string, string> variables)
 {
     if (variables != null)
     {
         foreach (var v in variables)
         {
             if (!Variables.ContainsKey(v.Key))
             {
                 Variables.Add(v.Key, v.Value);
             }
             else
             {
                 ModuleContext.Log.Warning(message: InternationalizationManager.I18N(InternationalizationManager.DefaultCulture, "webexpress", "resource.variable.duplicate"), args: v.Key);
             }
         }
     }
 }
Ejemplo n.º 3
0
        /// <summary>
        /// Startet den HTTPServer
        /// </summary>
        public void Start()
        {
            if (Context != null && Context.Log != null)
            {
                Context.Log.Info(message: this.I18N("httpserver.run"), args: Port);
            }

            if (Config != null)
            {
                // Plugins laden
                PluginManager.Register(Config.Deployment);

                // Internationalisierung laden
                InternationalizationManager.Register();

                // Anwendungen laden
                ApplicationManager.Register();

                // Module laden
                ModuleManager.Register();

                // Ressourcen laden
                ResourceManager.Register();

                // Statusseiten
                ResponseManager.Register();

                // Ausführung der Plugins starten
                PluginManager.Boot();

                // Ausführung der Anwendungen starten
                ApplicationManager.Boot();

                // Ausführung der Module starten
                ModuleManager.Boot();
            }

            Listener = new TcpListener(IPAddress.Any, Port);
            Listener.Start();

            var task = Task.Factory.StartNew(() =>
            {
                Run();
            }, ServerTokenSource.Token);
        }
        /// <summary>
        /// Umwandlung in ein Pfadsegment
        /// </summary>
        /// <returns>Das Pfadsegment</returns>
        public IPathSegment ToPathSegment()
        {
            var expression = @"^(\{){0,1}(([0-9a-fA-F]{8})\-([0-9a-fA-F]{4})\-([0-9a-fA-F]{4})\-([0-9a-fA-F]{4})\-([0-9a-fA-F]{12}))(\}){0,1}$";

            var callBackDisplay = new Func <string, string, CultureInfo, string>((segment, moduleID, culture) =>
            {
                var match = Regex.Match(segment, expression, RegexOptions.IgnoreCase | RegexOptions.Compiled);

                if (match.Success && string.IsNullOrWhiteSpace(Display))
                {
                    return(match.Groups[7].ToString());
                }
                else if (match.Success)
                {
                    return(string.Format
                           (
                               InternationalizationManager.I18N(culture, moduleID, Display),
                               DisplayFormat == Format.Simple ? match.Groups[7].ToString() : match.Groups[2].ToString()
                           ));
                }

                return(null);
            });

            var callBackValiables = new Func <string, IDictionary <string, string> >(segment =>
            {
                var match = Regex.Match(segment, expression, RegexOptions.IgnoreCase | RegexOptions.Compiled);

                if (match.Success)
                {
                    var dict = new Dictionary <string, string>();
                    dict.Add(VariableName, match.Groups[2].ToString());

                    return(dict);
                }

                return(null);
            });



            return(new PathSegmentVariable(expression, callBackDisplay, callBackValiables));
        }
 /// <summary>
 /// Liefert den Anzeigenamen
 /// </summary>
 /// <param name="segment">Das Segemnt</param>
 /// <param name="pluginID">Die PlugiinID</param>
 /// <param name="culture">Die Kultur</param>
 /// <returns>Der Anzeigestring zum Segment</returns>
 public string GetDisplay(string segment, string pluginID, CultureInfo culture)
 {
     return(InternationalizationManager.I18N(culture, pluginID, Display));
 }
Ejemplo n.º 6
0
 /// <summary>
 /// Internationalisierung
 /// </summary>
 /// <param name="obj">Das Objekt, welches erweitert wird</param>
 /// <param name="pluginID">Die PluginID</param>
 /// <param name="key">Der Schlüssel</param>
 /// <returns>Der Wert des Schlüssels in der aktuellen Sprache</returns>
 public static string I18N(this II18N obj, string pluginID, string key)
 {
     return(InternationalizationManager.I18N(obj.Culture, pluginID, key));
 }
Ejemplo n.º 7
0
 /// <summary>
 /// Internationalisierung
 /// </summary>
 /// <param name="obj">Das Objekt, welches erweitert wird</param>
 /// <param name="key">Der Schlüssel</param>
 /// <returns>Der Wert des Schlüssels in der aktuellen Sprache</returns>
 public static string I18N(this II18N obj, string key)
 {
     return(InternationalizationManager.I18N(obj, key));
 }