Пример #1
0
        private List <Result> InstallPlugin(Query query)
        {
            List <Result>   results  = new List <Result>();
            HttpWebResponse response = HttpRequest.CreateGetHttpResponse(pluginSearchUrl + query.ActionParameters[1], null, null, null);
            Stream          s        = response.GetResponseStream();

            if (s != null)
            {
                StreamReader reader = new StreamReader(s, Encoding.UTF8);
                string       json   = reader.ReadToEnd();
                WoxPlugin    o      = JsonConvert.DeserializeObject <WoxPlugin>(json);
                foreach (WoxPluginResult r in o.result)
                {
                    WoxPluginResult r1 = r;
                    results.Add(new Result()
                    {
                        Title    = r.name,
                        SubTitle = r.description,
                        IcoPath  = "Images\\plugin.png",
                        Action   = e => {
                            DialogResult result = MessageBox.Show("Are your sure to install " + r.name + " plugin",
                                                                  "Install plugin", MessageBoxButtons.YesNo);

                            if (result == DialogResult.Yes)
                            {
                                string folder = Path.Combine(Path.GetTempPath(), "WoxPluginDownload");
                                if (!Directory.Exists(folder))
                                {
                                    Directory.CreateDirectory(folder);
                                }
                                string filePath = Path.Combine(folder, Guid.NewGuid().ToString() + ".wox");

                                context.StartLoadingBar();
                                ThreadPool.QueueUserWorkItem(delegate {
                                    using (WebClient Client = new WebClient()) {
                                        try {
                                            Client.DownloadFile(r1.download, filePath);
                                            context.InstallPlugin(filePath);
                                            context.ReloadPlugins();
                                        }
                                        catch (Exception exception) {
                                            MessageBox.Show("download plugin " + r.name + "failed. " + exception.Message);
                                        }
                                        finally {
                                            context.StopLoadingBar();
                                        }
                                    }
                                });
                            }
                            return(false);
                        }
                    });
                }
            }
            return(results);
        }
Пример #2
0
        private List <Result> ResultForInstallPlugin(Query query)
        {
            List <Result> results    = new List <Result>();
            string        pluginName = query.SecondSearch;

            if (string.IsNullOrEmpty(pluginName))
            {
                return(results);
            }
            string json;

            try
            {
                json = Http.Get(pluginSearchUrl + pluginName).Result;
            }
            catch (WebException e)
            {
                //todo happlebao add option in log to decide give user prompt or not
                context.API.ShowMsg("PluginManagement.ResultForInstallPlugin: Can't connect to Wox plugin website, check your conenction");
                Log.Exception("|PluginManagement.ResultForInstallPlugin|Can't connect to Wox plugin website, check your conenction", e);
                return(new List <Result>());
            }
            List <WoxPluginResult> searchedPlugins;

            try
            {
                searchedPlugins = JsonConvert.DeserializeObject <List <WoxPluginResult> >(json);
            }
            catch (JsonSerializationException e)
            {
                context.API.ShowMsg("PluginManagement.ResultForInstallPlugin: Coundn't parse api search results, Please update your Wox!");
                Log.Exception("|PluginManagement.ResultForInstallPlugin|Coundn't parse api search results, Please update your Wox!", e);
                return(results);
            }

            foreach (WoxPluginResult r in searchedPlugins)
            {
                WoxPluginResult r1 = r;
                results.Add(new Result
                {
                    Title                 = r.name,
                    SubTitle              = r.description,
                    IcoPath               = "Images\\plugin.png",
                    TitleHighlightData    = StringMatcher.FuzzySearch(query.SecondSearch, r.name).MatchData,
                    SubTitleHighlightData = StringMatcher.FuzzySearch(query.SecondSearch, r.description).MatchData,
                    Action                = c =>
                    {
                        MessageBoxResult result = MessageBox.Show("Are you sure you wish to install the \'" + r.name + "\' plugin",
                                                                  "Install plugin", MessageBoxButton.YesNo);

                        if (result == MessageBoxResult.Yes)
                        {
                            string folder = Path.Combine(Path.GetTempPath(), "WoxPluginDownload");
                            if (!Directory.Exists(folder))
                            {
                                Directory.CreateDirectory(folder);
                            }
                            string filePath = Path.Combine(folder, Guid.NewGuid().ToString() + ".wox");

                            string pluginUrl = APIBASE + "/media/" + r1.plugin_file;

                            try
                            {
                                Http.Download(pluginUrl, filePath);
                            }
                            catch (WebException e)
                            {
                                context.API.ShowMsg($"PluginManagement.ResultForInstallPlugin: download failed for <{r.name}>");
                                Log.Exception($"|PluginManagement.ResultForInstallPlugin|download failed for <{r.name}>", e);
                                return(false);
                            }
                            context.API.InstallPlugin(filePath);
                        }
                        return(false);
                    }
                });
            }
            return(results);
        }
Пример #3
0
        private List <Result> ResultForInstallPlugin(Query query)
        {
            List <Result> results    = new List <Result>();
            string        pluginName = query.SecondSearch;

            if (string.IsNullOrEmpty(pluginName))
            {
                return(results);
            }
            HttpWebResponse response = HttpRequest.CreateGetHttpResponse(pluginSearchUrl + pluginName, context.Proxy);
            Stream          s        = response.GetResponseStream();

            if (s != null)
            {
                StreamReader           reader          = new StreamReader(s, Encoding.UTF8);
                string                 json            = reader.ReadToEnd();
                List <WoxPluginResult> searchedPlugins = null;
                try
                {
                    searchedPlugins = JsonConvert.DeserializeObject <List <WoxPluginResult> >(json);
                }
                catch
                {
                    context.API.ShowMsg("Coundn't parse api search results", "Please update your Wox!", string.Empty);
                    return(results);
                }

                foreach (WoxPluginResult r in searchedPlugins)
                {
                    WoxPluginResult r1 = r;
                    results.Add(new Result
                    {
                        Title    = r.name,
                        SubTitle = r.description,
                        IcoPath  = "Images\\plugin.png",
                        Action   = e =>
                        {
                            MessageBoxResult result = MessageBox.Show("Are your sure to install " + r.name + " plugin",
                                                                      "Install plugin", MessageBoxButton.YesNo);

                            if (result == MessageBoxResult.Yes)
                            {
                                string folder = Path.Combine(Path.GetTempPath(), "WoxPluginDownload");
                                if (!Directory.Exists(folder))
                                {
                                    Directory.CreateDirectory(folder);
                                }
                                string filePath = Path.Combine(folder, Guid.NewGuid().ToString() + ".wox");

                                context.API.StartLoadingBar();
                                ThreadPool.QueueUserWorkItem(delegate
                                {
                                    using (WebClient Client = new WebClient())
                                    {
                                        try
                                        {
                                            string pluginUrl = APIBASE + "/media/" + r1.plugin_file;
                                            Client.DownloadFile(pluginUrl, filePath);
                                            context.API.InstallPlugin(filePath);
                                            context.API.ReloadPlugins();
                                        }
                                        catch (Exception exception)
                                        {
                                            MessageBox.Show("download plugin " + r.name + "failed. " + exception.Message);
                                        }
                                        finally
                                        {
                                            context.API.StopLoadingBar();
                                        }
                                    }
                                });
                            }
                            return(false);
                        }
                    });
                }
            }
            return(results);
        }
Пример #4
0
        private List <Result> ResultForInstallPlugin(Query query)
        {
            List <Result> results    = new List <Result>();
            string        pluginName = query.SecondSearch;

            if (string.IsNullOrEmpty(pluginName))
            {
                return(results);
            }
            string json;

            try
            {
                json = Http.Get(pluginSearchUrl + pluginName).Result;
            }
            catch (WebException e)
            {
                Log.Warn("Can't connect to Wox plugin website, check your conenction");
                Log.Exception(e);
                return(new List <Result>());
            }
            List <WoxPluginResult> searchedPlugins;

            try
            {
                searchedPlugins = JsonConvert.DeserializeObject <List <WoxPluginResult> >(json);
            }
            catch (JsonSerializationException e)
            {
                context.API.ShowMsg("Coundn't parse api search results", "Please update your Wox!", string.Empty);
                Log.Exception(e);
                return(results);
            }

            foreach (WoxPluginResult r in searchedPlugins)
            {
                WoxPluginResult r1 = r;
                results.Add(new Result
                {
                    Title    = r.name,
                    SubTitle = r.description,
                    IcoPath  = "Images\\plugin.png",
                    Action   = c =>
                    {
                        MessageBoxResult result = MessageBox.Show("Are your sure to install " + r.name + " plugin",
                                                                  "Install plugin", MessageBoxButton.YesNo);

                        if (result == MessageBoxResult.Yes)
                        {
                            string folder = Path.Combine(Path.GetTempPath(), "WoxPluginDownload");
                            if (!Directory.Exists(folder))
                            {
                                Directory.CreateDirectory(folder);
                            }
                            string filePath = Path.Combine(folder, Guid.NewGuid().ToString() + ".wox");

                            string pluginUrl = APIBASE + "/media/" + r1.plugin_file;

                            try
                            {
                                Http.Download(pluginUrl, filePath);
                            }
                            catch (WebException e)
                            {
                                var info = "download plugin " + r.name + "failed.";
                                MessageBox.Show(info);
                                Log.Warn(info);
                                Log.Exception(e);
                                return(false);
                            }
                            context.API.InstallPlugin(filePath);
                        }
                        return(false);
                    }
                });
            }
            return(results);
        }