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); }
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); }
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); }
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); }