public static async Task Search(string input) { if (string.IsNullOrEmpty(input)) return; state = EnumSearchState.Started; notifyState(); ISearchProvider provider=null; var re_source=new Regex(@"(from:\s*(\w+))"); var m = re_source.Match(input); if (m.Success) { var type=m.Groups[2].Value.ToLower(); switch (type) { case "baidu": provider = new BaiduSearchProvider(); break; case "xiami": provider = new XiamiSearchProvider(); break; case "douban": provider = new DoubanSearchProvider(); break; default: break; } input = re_source.Replace(input, ""); } if (provider == null) provider = new XiamiSearchProvider(); state = EnumSearchState.Working; var sr=await provider.Search(input); if (sr != null && state != EnumSearchState.Cancelling) { MessageBus.Instance.Publish(sr); notifyState(sr); } state = EnumSearchState.Finished; notifyState(); }
public static void Cancel() { Task.Run(() => { NetAccess.CancelAsync(); }); state = EnumSearchState.Finished; notifyState(); }
public static async Task Search(string input, EnumSearchType t = EnumSearchType.all) { if (string.IsNullOrEmpty(input)) { return; } state = EnumSearchState.Started; var searchInfo = new SearchResult { Keyword = input, SearchType = t }; notifyState(searchInfo); ISearchProvider provider = null; var re_source = new Regex(@"(source:\s*(\w+))"); var m = re_source.Match(input); if (m.Success) { var type = m.Groups[2].Value.ToLower(); switch (type) { case "baidu": provider = new BaiduSearchProvider(); break; case "xiami": provider = new XiamiSearchProvider(); break; case "douban": provider = new DoubanSearchProvider(); break; default: break; } input = re_source.Replace(input, ""); } if (provider == null) { provider = new XiamiSearchProvider(); } state = EnumSearchState.Working; try { var sr = await provider.Search(input, t); if (sr != null && state != EnumSearchState.Cancelling) { MessageBus.Instance.Publish(sr); notifyState(sr); } } catch (Exception e) { Logger.Error(e); } state = EnumSearchState.Finished; notifyState(searchInfo); }
public static void Cancel() { NetAccess.CancelAsync(); state = EnumSearchState.Cancelling; }