Ejemplo n.º 1
0
 /// <summary>
 /// プラグインクラスのインスタンスを作成する
 /// </summary>
 /// <returns>プラグインクラスのインスタンス</returns>
 public IPlugin CreateInstance(IPluginHost host)
 {
     try
     {
         //アセンブリを読み込む
         Assembly asm = Assembly.LoadFrom(this.Location);
         //クラス名からインスタンスを作成する
         Plugins.IPlugin plugin = (Plugins.IPlugin)asm.CreateInstance(this.ClassName);
         //IPluginHostの設定
         plugin.Host = host;
         try
         {
             plugin.Config = PluginSettings.loadSettings(this.ClassName);
         }
         catch (ConfigLoadException cle)
         {
         }
         catch (PluginConfigNotFoundException pcnfe)
         {
         }
         return(plugin);
     }
     catch
     {
         return(null);
     }
 }
Ejemplo n.º 2
0
        public PluginConfig GetPluginConfig(Plugins.IPlugin plugin)
        {
            PluginConfig cfg;

            if (!KV.TryGetValue(plugin.GetType().GetHashCode(), out cfg))
            {
                cfg = KV[plugin.GetType().GetHashCode()] = new PluginConfig();
            }
            return(cfg);
        }
Ejemplo n.º 3
0
        private void LoadPlugins()
        {
            PluginInfo[] pis = PluginInfo.FindPlugins();
            mPlugins = new Plugins.IPlugin[pis.Length];

            for (int i = 0; i < mPlugins.Length; i++)
            {
                mPlugins[i]        = pis[i].CreateInstance();
                mPlugins[i].Logger = mLogger;
                ToolStripMenuItem mi = new ToolStripMenuItem(mPlugins[i].Name);
                mi.Click += new EventHandler(menuPlugin_Click);
                Plugins_ToolStripMenuItem.DropDownItems.Add(mi);
            }
        }
Ejemplo n.º 4
0
 /// <summary>
 /// プラグインクラスのインスタンスを作成する
 /// </summary>
 /// <returns>プラグインクラスのインスタンス</returns>
 public Plugins.IPlugin CreateInstance()
 {
     try
     {
         // アセンブリを読み込む
         Assembly asm = Assembly.LoadFrom(this.Location);
         // クラス名からインスタンスを作成する
         Plugins.IPlugin plugin = (Plugins.IPlugin)asm.CreateInstance(this.ClassName);
         return(plugin);
     }
     catch
     {
         return(null);
     }
 }
Ejemplo n.º 5
0
        HtmlContainer.HtmlContainer GetHtmlContainerForImages(UrlContainer.UrlContainer uc)
        {
            if (IsIgnore(uc.Url))
            {
                return(null);
            }

            // URLに対応するプラグインを検索,見つかればCookie取得
            Plugins.IPlugin plugin = FindPlugin(uc);
            var             hc     = new HtmlContainer.HtmlContainer(uc, mCookieContainer);

            // Htmlを取得しない
            if (mSettings.UrlFilter.Filter(uc.Url))
            {
                mSettings.Logger.Write("Downloader", "URL フィルタが適用されました > " + uc.Url);
                return(hc);
            }
            // Htmlを取得する
            if (mSettings.TitleFilter.Filter(hc.Title))
            {
                mSettings.Logger.Write("Downloader", "タイトルフィルタが適用されました > " + hc.Title);
                return(hc);
            }

            mSettings.Logger.Write("Downloader", uc.Url + " を取得しました");
            if (plugin != null && plugin.IsExclusive)
            {
                hc.AttributeUrlList = plugin.GetImageUrlList(uc, mSettings.Formats);
            }
            else
            {
                if (mSettings.ParseHrefAttr)
                {
                    hc.UpdateAttributeUrlList("a", "href", mSettings.Formats);
                }
                if (mSettings.ParseImgTag)
                {
                    hc.UpdateAttributeUrlList("img", "src", mSettings.Formats);
                    hc.UpdateAttributeUrlList("img", "data-src", mSettings.Formats);
                }
            }
            return(hc);
        }
Ejemplo n.º 6
0
        HtmlContainer.HtmlContainer GetHtmlContainerForLinks(UrlContainer.UrlContainer uc)
        {
            if (IsIgnore(uc.Url))
            {
                return(null);
            }

            // URLに対応するプラグインを検索,見つかればCookie取得
            Plugins.IPlugin plugin = FindPlugin(uc);
            var             hc     = new HtmlContainer.HtmlContainer(uc, mCookieContainer);

            if (plugin != null && plugin.IsExclusive)
            {
                hc.AttributeUrlList = plugin.GetLinkList(hc);
            }
            if (hc.AttributeUrlList.Count == 0)
            {
                hc.UpdateAttributeUrlList("a", "href", new string[] { "php", "phtml", "html", "htm", "" });
            }
            return(hc);
        }
Ejemplo n.º 7
0
 /// <summary>
 /// Load plugins from assembly and instiniate them to list.
 /// </summary>
 /// <returns></returns>
 public static IEnumerable <IPlugin> LoadPluginsEnumerable()
 {
     // Load query's processors.
     System.Reflection.Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
     //Console.WriteLine("ASSEMBLIES PROCEED: {0}\n", assemblies.Length);
     Console.WriteLine("\nDETECTED PLUGINS:");
     foreach (System.Reflection.Assembly assembly in assemblies)
     {
         // Get all types for assembly.
         foreach (System.Type type in assembly.GetTypes())
         {
             // Check if this type is subclass of query.
             if (type.GetInterface("IPlugin") != null)
             {
                 // Instiniating querie processor.
                 Plugins.IPlugin instance = (Plugins.IPlugin)Activator.CreateInstance(type);
                 Console.WriteLine("{0}", type.Name);
                 yield return(instance);
             }
         }
     }
 }