Example #1
0
        /// <summary>
        /// Initializes the envrionment settings.
        /// </summary>
        static Environment()
        {
            var section = ConfigurationManager.GetSection("SinaSectionGroup/SinaSection") as AMicroblogAPIConfigurationSection;

            if (null != section)
            {
                Environment.ResponseErrorHandlingEnabled = section.ResponseErrorHandlingConfig.Enabled;
                Environment.Configuration = section;

                foreach (HandlerConfigurationElement element in section.ResponseErrorHandlingConfig)
                {
                    if (string.IsNullOrEmpty(element.Type))
                    {
                        throw new AMicroblogException(LocalErrorCode.ArgumentNotProvided, "Handler type not provided in responseErrorHandling configuration section.");
                    }

                    var type      = Type.GetType(element.Type, true, true);
                    var errorCode = element.ErrorCode;
                    if (string.IsNullOrEmpty(errorCode))
                    {
                        errorCode = "*";
                    }

                    var interfaceName = "IResponseErrorHandler";
                    var inter         = type.GetInterface(interfaceName, false);
                    if (null == inter)
                    {
                        throw new AMicroblogException(LocalErrorCode.ArgumentInvalid, "Type '{0}' does not implement {1}.", element.Type, interfaceName);
                    }

                    ResponseErrorHandlers.Add(new HandlerConfiguration()
                    {
                        Type = type, ErrorCode = errorCode
                    });
                }

                if (Environment.ResponseErrorHandlingEnabled)
                {
                    Environment.ResponseError += new EventHandler <ResponseErrorEventArgs>(HandleResponseError);
                }
            }
            NameValueCollection SinaSection = (NameValueCollection)ConfigurationManager.GetSection("SinaSectionGroup/SinaSection");

            AppKey      = SinaSection["AppKey"];
            AppSecret   = SinaSection["AppSecret"];
            RedirectUri = SinaSection["CallBackURI"];
            //AppKey = ConfigurationManager.AppSettings["appKey"];
            //AppSecret = ConfigurationManager.AppSettings["appSecret"];
            //RedirectUri = ConfigurationManager.AppSettings["redirectUri"];
            if (string.IsNullOrEmpty(AppKey) || string.IsNullOrEmpty(AppSecret))
            {
                throw new AMicroblogException(LocalErrorCode.AppKeyOrSecretNotProvided, "appKey or appSecret not configured in application config file.");
            }
        }
Example #2
0
        public int Load(System.Reflection.Assembly assembly)
        {
            int count = 0;

            foreach (var t in assembly.GetTypes())
            {
                if (t.GetInterface("IAgentRequestingHandler") != null && !t.IsAbstract && t.IsClass)
                {
                    try
                    {
                        count++;
                        var handler = (IAgentRequestingHandler)Activator.CreateInstance(t);
                        handler.Init(Gateway, assembly);
                        AgentRequestingHandler.Add(handler);
                        Gateway.HttpServer.Log(BeetleX.EventArgs.LogType.Info, $"gateway load {t.Name}[{assembly.GetName().Version}] agent requesting handler success");
                        RouteBinderAttribute routeBinderAttribute = t.GetCustomAttribute <RouteBinderAttribute>(false);
                        if (routeBinderAttribute != null)
                        {
                            if (string.IsNullOrEmpty(routeBinderAttribute.RouteUrl))
                            {
                                Gateway.Pluginer.SetAgentRequesting(handler.Name);
                            }
                            else
                            {
                                var route = Gateway.Routes.NewOrGet(routeBinderAttribute.RouteUrl, null, null, routeBinderAttribute.ApiLoader);
                                route.Pluginer.SetAgentRequesting(handler.Name);
                            }
                        }
                        mPlugins[handler.Name] = handler;
                        InitPluginEnabled(handler);
                        LoadSetting(handler);
                        SaveSetting(handler, false);
                    }
                    catch (Exception e_)
                    {
                        Gateway.HttpServer.Log(BeetleX.EventArgs.LogType.Error, $"gateway load {t.GetType()} agent requesting handler error {e_.Message} {e_.StackTrace}");
                    }
                }


                if (t.GetInterface("IHeaderWritingHandler") != null && !t.IsAbstract && t.IsClass)
                {
                    try
                    {
                        count++;
                        var handler = (IHeaderWritingHandler)Activator.CreateInstance(t);
                        handler.Init(Gateway, assembly);
                        HeaderWritingHandlers.Add(handler);
                        Gateway.HttpServer.Log(BeetleX.EventArgs.LogType.Info, $"gateway load {t.Name}[{assembly.GetName().Version}] header writing handler success");
                        RouteBinderAttribute routeBinderAttribute = t.GetCustomAttribute <RouteBinderAttribute>(false);
                        if (routeBinderAttribute != null)
                        {
                            if (string.IsNullOrEmpty(routeBinderAttribute.RouteUrl))
                            {
                                Gateway.Pluginer.SetHeaderWriting(handler.Name);
                            }
                            else
                            {
                                var route = Gateway.Routes.NewOrGet(routeBinderAttribute.RouteUrl, null, null, routeBinderAttribute.ApiLoader);
                                route.Pluginer.SetHeaderWriting(handler.Name);
                            }
                        }
                        mPlugins[handler.Name] = handler;
                        InitPluginEnabled(handler);
                        LoadSetting(handler);
                        SaveSetting(handler, false);
                    }
                    catch (Exception e_)
                    {
                        Gateway.HttpServer.Log(BeetleX.EventArgs.LogType.Error, $"gateway load {t.GetType()} header writing handler error {e_.Message} {e_.StackTrace}");
                    }
                }


                if (t.GetInterface("IResponseErrorHandler") != null && !t.IsAbstract && t.IsClass)
                {
                    try
                    {
                        count++;
                        var handler = (IResponseErrorHandler)Activator.CreateInstance(t);
                        handler.Init(Gateway, assembly);
                        ResponseErrorHandlers.Add(handler);
                        Gateway.HttpServer.Log(BeetleX.EventArgs.LogType.Info, $"gateway load {t.Name}[{assembly.GetName().Version}] response error handler success");
                        mPlugins[handler.Name] = handler;
                        InitPluginEnabled(handler);
                        LoadSetting(handler);
                        SaveSetting(handler, false);
                    }
                    catch (Exception e_)
                    {
                        Gateway.HttpServer.Log(BeetleX.EventArgs.LogType.Error, $"gateway load {t.GetType()} response error handler error {e_.Message} {e_.StackTrace}");
                    }
                }


                if (t.GetInterface("IRequestingHandler") != null && !t.IsAbstract && t.IsClass)
                {
                    try
                    {
                        count++;
                        var handler = (IRequestingHandler)Activator.CreateInstance(t);
                        handler.Init(Gateway, assembly);
                        RequestingHandlers.Add(handler);
                        Gateway.HttpServer.Log(BeetleX.EventArgs.LogType.Info, $"gateway load {t.Name}[{assembly.GetName().Version}] requesting handler success");
                        RouteBinderAttribute routeBinderAttribute = t.GetCustomAttribute <RouteBinderAttribute>(false);
                        if (routeBinderAttribute != null)
                        {
                            if (string.IsNullOrEmpty(routeBinderAttribute.RouteUrl))
                            {
                                Gateway.Pluginer.SetRequesting(handler.Name);
                            }
                            else
                            {
                                var route = Gateway.Routes.NewOrGet(routeBinderAttribute.RouteUrl, null, null, routeBinderAttribute.ApiLoader);
                                route.Pluginer.SetRequesting(handler.Name);
                            }
                        }
                        mPlugins[handler.Name] = handler;
                        InitPluginEnabled(handler);
                        LoadSetting(handler);
                        SaveSetting(handler, false);
                    }
                    catch (Exception e_)
                    {
                        Gateway.HttpServer.Log(BeetleX.EventArgs.LogType.Error, $"gateway load {t.GetType()} requesting handler error {e_.Message} {e_.StackTrace}");
                    }
                }

                if (t.GetInterface("IRespondingHandler") != null && !t.IsAbstract && t.IsClass)
                {
                    try
                    {
                        count++;
                        var handler = (IRespondingHandler)Activator.CreateInstance(t);
                        handler.Init(Gateway, assembly);
                        RespondingHandlers.Add(handler);
                        Gateway.HttpServer.Log(BeetleX.EventArgs.LogType.Info, $"gateway load {t.Name}[{assembly.GetName().Version}] responding handler success");
                        RouteBinderAttribute routeBinderAttribute = t.GetCustomAttribute <RouteBinderAttribute>(false);
                        if (routeBinderAttribute != null)
                        {
                            if (string.IsNullOrEmpty(routeBinderAttribute.RouteUrl))
                            {
                                Gateway.Pluginer.SetResponding(handler.Name);
                            }
                            else
                            {
                                var route = Gateway.Routes.NewOrGet(routeBinderAttribute.RouteUrl, null, null, routeBinderAttribute.ApiLoader);
                                route.Pluginer.SetResponding(handler.Name);
                            }
                        }
                        mPlugins[handler.Name] = handler;
                        InitPluginEnabled(handler);
                        LoadSetting(handler);
                        SaveSetting(handler, false);
                    }
                    catch (Exception e_)
                    {
                        Gateway.HttpServer.Log(BeetleX.EventArgs.LogType.Error, $"gateway load {t.GetType()} responding handler error {e_.Message} {e_.StackTrace}");
                    }
                }


                if (t.GetInterface("IRequestedHandler") != null && !t.IsAbstract && t.IsClass)
                {
                    try
                    {
                        count++;
                        var handler = (IRequestedHandler)Activator.CreateInstance(t);
                        handler.Init(Gateway, assembly);
                        RequestedHandlers.Add(handler);
                        Gateway.HttpServer.Log(BeetleX.EventArgs.LogType.Info, $"gateway load {t.Name}[{assembly.GetName().Version}] requested handler success");
                        RouteBinderAttribute routeBinderAttribute = t.GetCustomAttribute <RouteBinderAttribute>(false);
                        if (routeBinderAttribute != null)
                        {
                            if (string.IsNullOrEmpty(routeBinderAttribute.RouteUrl))
                            {
                                Gateway.Pluginer.SetRequested(handler.Name);
                            }
                            else
                            {
                                var route = Gateway.Routes.NewOrGet(routeBinderAttribute.RouteUrl, null, null, routeBinderAttribute.ApiLoader);
                                route.Pluginer.SetRequested(handler.Name);
                            }
                        }
                        mPlugins[handler.Name] = handler;
                        InitPluginEnabled(handler);
                        LoadSetting(handler);
                        SaveSetting(handler, false);
                    }
                    catch (Exception e_)
                    {
                        Gateway.HttpServer.Log(BeetleX.EventArgs.LogType.Error, $"gateway load {t.GetType()} requested handler error {e_.Message} {e_.StackTrace}");
                    }
                }

                if (t.GetInterface("IGetServerHandler") != null && !t.IsAbstract && t.IsClass)
                {
                    try
                    {
                        count++;
                        var handler = (IGetServerHandler)Activator.CreateInstance(t);
                        handler.Init(Gateway, assembly);
                        GetServerHandlers.Add(handler);
                        Gateway.HttpServer.Log(BeetleX.EventArgs.LogType.Info, $"gateway load {t.Name}[{assembly.GetName().Version}] route get server handler success");
                        RouteBinderAttribute routeBinderAttribute = t.GetCustomAttribute <RouteBinderAttribute>(false);
                        if (routeBinderAttribute != null)
                        {
                            if (string.IsNullOrEmpty(routeBinderAttribute.RouteUrl))
                            {
                                Gateway.Pluginer.SetRequested(handler.Name);
                            }
                            else
                            {
                                var route = Gateway.Routes.NewOrGet(routeBinderAttribute.RouteUrl, null, null, routeBinderAttribute.ApiLoader);
                                route.Pluginer.GetServerHandler = handler;
                            }
                        }
                        mPlugins[handler.Name] = handler;
                        InitPluginEnabled(handler);
                        LoadSetting(handler);
                        SaveSetting(handler, false);
                    }
                    catch (Exception e_)
                    {
                        Gateway.HttpServer.Log(BeetleX.EventArgs.LogType.Error, $"gateway load {t.GetType()} route get server handler error {e_.Message} {e_.StackTrace}");
                    }
                }
                if (t.GetInterface("IGatewayLoader") != null && !t.IsAbstract && t.IsClass)
                {
                    try
                    {
                        count++;
                        var handler = (IGatewayLoader)Activator.CreateInstance(t);
                        handler.Init(Gateway, assembly);
                        LoaderHandlers.Add(handler);
                        Gateway.HttpServer.Log(BeetleX.EventArgs.LogType.Info, $"gateway load {t.GetType()}[{assembly.GetName().Version}] gateway loader handler success");
                        mPlugins[handler.Name] = handler;
                        InitPluginEnabled(handler);
                        LoadSetting(handler);
                        SaveSetting(handler, false);
                    }
                    catch (Exception e_)
                    {
                        Gateway.HttpServer.Log(BeetleX.EventArgs.LogType.Error, $"gateway load {t.GetType()} gateway loader handler error {e_.Message} {e_.StackTrace}");
                    }
                }
            }

            return(count);
        }
Example #3
0
        public void Load(System.Reflection.Assembly assembly)
        {
            foreach (var t in assembly.GetTypes())
            {
                if (t.GetInterface("IAgentRequestingHandler") != null && !t.IsAbstract && t.IsClass)
                {
                    try
                    {
                        var handler = (IAgentRequestingHandler)Activator.CreateInstance(t);
                        handler.Init(Gateway, assembly);
                        AgentRequestingHandler.Add(handler);
                        Gateway.HttpServer.Log(BeetleX.EventArgs.LogType.Info, $"gateway load {t.Name}[{assembly.GetName().Version}] agent requesting handler success");
                    }
                    catch (Exception e_)
                    {
                        Gateway.HttpServer.Log(BeetleX.EventArgs.LogType.Error, $"gateway load {t.Name} agent requesting handler error {e_.Message} {e_.StackTrace}");
                    }
                }


                if (t.GetInterface("IHeaderWritingHandler") != null && !t.IsAbstract && t.IsClass)
                {
                    try
                    {
                        var handler = (IHeaderWritingHandler)Activator.CreateInstance(t);
                        handler.Init(Gateway, assembly);
                        HeaderWritingHandlers.Add(handler);
                        Gateway.HttpServer.Log(BeetleX.EventArgs.LogType.Info, $"gateway load {t.Name}[{assembly.GetName().Version}] header writing handler success");
                    }
                    catch (Exception e_)
                    {
                        Gateway.HttpServer.Log(BeetleX.EventArgs.LogType.Error, $"gateway load {t.Name} header writing handler error {e_.Message} {e_.StackTrace}");
                    }
                }


                if (t.GetInterface("IResponseErrorHandler") != null && !t.IsAbstract && t.IsClass)
                {
                    try
                    {
                        var handler = (IResponseErrorHandler)Activator.CreateInstance(t);
                        handler.Init(Gateway, assembly);
                        ResponseErrorHandlers.Add(handler);
                        Gateway.HttpServer.Log(BeetleX.EventArgs.LogType.Info, $"gateway load {t.Name}[{assembly.GetName().Version}] response error handler success");
                    }
                    catch (Exception e_)
                    {
                        Gateway.HttpServer.Log(BeetleX.EventArgs.LogType.Error, $"gateway load {t.Name} response error handler error {e_.Message} {e_.StackTrace}");
                    }
                }


                if (t.GetInterface("IRequestingHandler") != null && !t.IsAbstract && t.IsClass)
                {
                    try
                    {
                        var handler = (IRequestingHandler)Activator.CreateInstance(t);
                        handler.Init(Gateway, assembly);
                        RequestingHandlers.Add(handler);
                        Gateway.HttpServer.Log(BeetleX.EventArgs.LogType.Info, $"gateway load {t.Name}[{assembly.GetName().Version}] requesting handler success");
                    }
                    catch (Exception e_)
                    {
                        Gateway.HttpServer.Log(BeetleX.EventArgs.LogType.Error, $"gateway load {t.Name} requesting handler error {e_.Message} {e_.StackTrace}");
                    }
                }

                if (t.GetInterface("IRequestedHandler") != null && !t.IsAbstract && t.IsClass)
                {
                    try
                    {
                        var handler = (IRequestedHandler)Activator.CreateInstance(t);
                        handler.Init(Gateway, assembly);
                        RequestedHandlers.Add(handler);
                        Gateway.HttpServer.Log(BeetleX.EventArgs.LogType.Info, $"gateway load {t.Name}[{assembly.GetName().Version}] requested handler success");
                    }
                    catch (Exception e_)
                    {
                        Gateway.HttpServer.Log(BeetleX.EventArgs.LogType.Error, $"gateway load {t.Name} requested handler error {e_.Message} {e_.StackTrace}");
                    }
                }

                if (t.GetInterface("IGetServerHandler") != null && !t.IsAbstract && t.IsClass)
                {
                    try
                    {
                        var handler = (IGetServerHandler)Activator.CreateInstance(t);
                        handler.Init(Gateway, assembly);
                        GetServerHandlers.Add(handler);
                        Gateway.HttpServer.Log(BeetleX.EventArgs.LogType.Info, $"gateway load {t.Name}[{assembly.GetName().Version}] route get server handler success");
                    }
                    catch (Exception e_)
                    {
                        Gateway.HttpServer.Log(BeetleX.EventArgs.LogType.Error, $"gateway load {t.Name} route get server handler error {e_.Message} {e_.StackTrace}");
                    }
                }
                if (t.GetInterface("IGatewayLoader") != null && !t.IsAbstract && t.IsClass)
                {
                    try
                    {
                        var handler = (IGatewayLoader)Activator.CreateInstance(t);
                        handler.Init(Gateway, assembly);
                        LoaderHandlers.Add(handler);
                        Gateway.HttpServer.Log(BeetleX.EventArgs.LogType.Info, $"gateway load {t.Name}[{assembly.GetName().Version}] gateway loader handler success");
                    }
                    catch (Exception e_)
                    {
                        Gateway.HttpServer.Log(BeetleX.EventArgs.LogType.Error, $"gateway load {t.Name} gateway loader handler error {e_.Message} {e_.StackTrace}");
                    }
                }
            }
        }