public void Search(SearchModel model) { try { if (model == null) { return; } //if (Searchers != null && LastSearchModel == model) //!+todo need run search if all paused //{ // lastSearchModel = model; // return; //} //var saveModel if (Searchers == null || !model.IsEqualByAli(LastSearchModel)) { IEnumerable <string> arr; var customUrl = !model.Url.IsEmpty(); if (!customUrl) { arr = model.AliSearchText.SplitExt(';'); } else { arr = model.Url.SplitExt(';'); } var list = new List <AliEngine>(); foreach (var item in arr) { var aliEngine = new AliEngine { Currency = model.Currency, MinPrice = model.AliMinPrice, MaxPrice = model.AliMaxPrice, ShipCountry = model.ShipCountry, Cookies = Cookies }; var tmp = item.Trim(); if (customUrl) { aliEngine.CustomUrl = tmp; } else { aliEngine.SearchText = tmp; } list.Add(aliEngine); } StartSearch(list); } LastSearchModel = model; } catch (Exception ex) { Catch.Set(ex); } }
public Searcher FromCache(AliEngine engine) { try { if (Config.CacheTime < 1 || !Directory.Exists(Config.Pathes.Cache)) { return(null); } var path = Config.Pathes.CacheFile(engine.SearchText); if (!File.Exists(path)) { return(null); } var str = File.ReadAllText(path); var item = JsonConvert.DeserializeObject(str, typeof(Searcher)) as Searcher; if (item.AliEngine != engine) { return(null); } if (item.DateResponse == null) { return(null); } if ((DateTime.UtcNow - (DateTime)item.DateResponse).TotalDays > Config.CacheTime) { return(null); } return(item); } catch (Exception ex) { Catch.Set(ex); } return(null); }
public Searcher(AliEngine aliEngine) { AliEngine = aliEngine; }