public async Task <BaseSearchResponse <Area> > SearchAsync(BasicSearchCriteria criteria) { var response = new BaseSearchResponse <Area>(); if (criteria == null) { criteria = new BasicSearchCriteria(); } var query = _context.Areas.Where(v => v.Status == ObjectStatus.Active); // filter by name of area if (!string.IsNullOrEmpty(criteria.Keyword)) { query = query.Where(v => v.Name.Contains(criteria.Keyword)); } response.Total = await query.CountAsync(); // paging if (criteria.Page.HasValue && criteria.Length.HasValue && criteria.Page.Value > 0 && criteria.Length.Value > 0) { query = query.Skip(criteria.Length.Value * (criteria.Page.Value - 1)).Take(criteria.Length.Value); } var area = await query.ToListAsync(); response.Items = area; return(response); }
public IndexerPageableRequestChain GetSearchRequests(BasicSearchCriteria searchCriteria) { var pageableRequests = new IndexerPageableRequestChain(); pageableRequests.Add(GetPagedRequests(string.Format("{0}", searchCriteria.SanitizedSearchTerm), searchCriteria)); return(pageableRequests); }
public IndexerPageableRequestChain GetSearchRequests(BasicSearchCriteria searchCriteria) { var pageableRequests = new IndexerPageableRequestChain(); pageableRequests.Add(GetRequest(searchCriteria.SanitizedSearchTerm)); return(pageableRequests); }
public IndexerPageableRequestChain GetSearchRequests(BasicSearchCriteria searchCriteria) { var parameters = GetBasicSearchParameters(searchCriteria.SanitizedSearchTerm, searchCriteria.Categories); var pageableRequests = new IndexerPageableRequestChain(); pageableRequests.Add(GetRequest(parameters)); return(pageableRequests); }
public override Task <IndexerPageableQueryResult> Fetch(BasicSearchCriteria searchCriteria) { if (!SupportsSearch) { return(Task.FromResult(new IndexerPageableQueryResult())); } return(FetchReleases(g => SetCookieFunctions(g).GetSearchRequests(searchCriteria))); }
public async Task <BaseSearchResponse <CustomerViewModel> > Search([FromQuery] BasicSearchCriteria criteria) { var result = await _customerService.SearchAsync(criteria); return(new BaseSearchResponse <CustomerViewModel> { SearchAt = result.SearchAt, Total = result.Total, Items = result.Items.Select(i => i.ToViewModel()).ToList() }); }
public IndexerPageableRequestChain GetSearchRequests(BasicSearchCriteria searchCriteria) { _logger.Trace("Getting Basic search"); var pageableRequests = new IndexerPageableRequestChain(); var variables = GetQueryVariableDefaults(searchCriteria); pageableRequests.Add(GetRequest(variables)); return(pageableRequests); }
public IndexerPageableRequestChain GetSearchRequests(BasicSearchCriteria searchCriteria) { var capabilities = _capabilitiesProvider.GetCapabilities(Settings, Definition); var pageableRequests = new IndexerPageableRequestChain(); var parameters = new NameValueCollection(); if (searchCriteria.SearchTerm.IsNotNullOrWhiteSpace() && capabilities.SearchAvailable) { parameters.Add("q", NewsnabifyTitle(searchCriteria.SearchTerm)); } pageableRequests.Add(GetPagedRequests(searchCriteria, parameters)); return(pageableRequests); }
public IndexerPageableRequestChain GetSearchRequests(BasicSearchCriteria searchCriteria) { var pageableRequests = new IndexerPageableRequestChain(); if (searchCriteria.SearchTerm.IsNotNullOrWhiteSpace()) { var titleYearSearchQuery = string.Format("{0}", searchCriteria.SanitizedSearchTerm); pageableRequests.Add(GetRequest("search-torrents", searchCriteria.Categories, string.Format("&type=name&query={0}", titleYearSearchQuery.Trim()))); } else { pageableRequests.Add(GetRequest("latest-torrents", searchCriteria.Categories, "")); } return(pageableRequests); }
public IndexerPageableRequestChain GetSearchRequests(BasicSearchCriteria searchCriteria) { var pageableRequests = new IndexerPageableRequestChain(); var query = new TorrentQuery(); if (searchCriteria.Categories?.Length > 0) { query.Category = Capabilities.Categories.MapTorznabCapsToTrackers(searchCriteria.Categories).Select(int.Parse).ToArray(); } if (searchCriteria.SearchTerm.IsNotNullOrWhiteSpace()) { query.Search = searchCriteria.SanitizedSearchTerm; } pageableRequests.Add(GetRequest(query)); return(pageableRequests); }
public IndexerPageableRequestChain GetSearchRequests(BasicSearchCriteria searchCriteria) { var pageableRequests = new IndexerPageableRequestChain(); var parameters = new BroadcastheNetTorrentQuery(); var searchString = searchCriteria.SearchTerm != null ? searchCriteria.SearchTerm : ""; var btnResults = searchCriteria.Limit.GetValueOrDefault(); if (btnResults == 0) { btnResults = (int)Capabilities.LimitsDefault; } parameters.Search = searchString.Replace(" ", "%"); var btnOffset = searchCriteria.Offset.GetValueOrDefault(); pageableRequests.Add(GetPagedRequests(parameters, btnResults, btnOffset)); return(pageableRequests); }
public IndexerPageableRequestChain GetSearchRequests(BasicSearchCriteria searchCriteria) { return(new IndexerPageableRequestChain()); }
public abstract Task<IndexerPageableQueryResult> Fetch(BasicSearchCriteria searchCriteria);
protected virtual async Task <ValidationFailure> TestConnection() { try { var parser = GetParser(); parser.CookiesUpdater = (cookies, expiration) => { _indexerStatusService.UpdateCookies(Definition.Id, cookies, expiration); }; var generator = GetRequestGenerator(); generator = SetCookieFunctions(generator); var testCriteria = new BasicSearchCriteria { SearchType = "search" }; if (!SupportsRss) { testCriteria.SearchTerm = "test"; } var firstRequest = generator.GetSearchRequests(testCriteria).GetAllTiers().FirstOrDefault()?.FirstOrDefault(); if (firstRequest == null) { return(new ValidationFailure(string.Empty, "No rss feed query available. This may be an issue with the indexer or your indexer category settings.")); } var releases = await FetchPage(firstRequest, parser); if (releases.Releases.Empty()) { return(new ValidationFailure(string.Empty, "Query successful, but no results were returned from your indexer. This may be an issue with the indexer or your indexer category settings.")); } } catch (IndexerAuthException ex) { _logger.Warn("Indexer returned result for RSS URL, Credentials appears to be invalid: " + ex.Message); return(new ValidationFailure("", ex.Message)); } catch (RequestLimitReachedException ex) { _logger.Warn("Request limit reached: " + ex.Message); } catch (CloudFlareCaptchaException ex) { if (ex.IsExpired) { return(new ValidationFailure("CaptchaToken", "CloudFlare CAPTCHA token expired, please Refresh.")); } else { return(new ValidationFailure("CaptchaToken", "Site protected by CloudFlare CAPTCHA. Valid CAPTCHA token required.")); } } catch (UnsupportedFeedException ex) { _logger.Warn(ex, "Indexer feed is not supported"); return(new ValidationFailure(string.Empty, "Indexer feed is not supported: " + ex.Message)); } catch (IndexerException ex) { _logger.Warn(ex, "Unable to connect to indexer"); return(new ValidationFailure(string.Empty, "Unable to connect to indexer. " + ex.Message)); } catch (HttpException ex) { if (ex.Response.StatusCode == HttpStatusCode.BadRequest && ex.Response.Content.Contains("not support the requested query")) { _logger.Warn(ex, "Indexer does not support the query"); return(new ValidationFailure(string.Empty, "Indexer does not support the current query. Check if the categories and or searching for movies are supported. Check the log for more details.")); } else { _logger.Warn(ex, "Unable to connect to indexer"); return(new ValidationFailure(string.Empty, "Unable to connect to indexer, check the log for more details")); } } catch (Exception ex) { _logger.Warn(ex, "Unable to connect to indexer"); return(new ValidationFailure(string.Empty, "Unable to connect to indexer, check the log for more details")); } return(null); }
public Task <BaseSearchResponse <Supplier> > SearchAsync(BasicSearchCriteria criteria) { throw new NotImplementedException(); }
public IndexerPageableRequestChain GetSearchRequests(BasicSearchCriteria searchCriteria) { return(GetSearchRequestsCommon(searchCriteria, string.Format("{0}", searchCriteria.SanitizedSearchTerm))); }
public IndexerPageableRequestChain GetSearchRequests(BasicSearchCriteria searchCriteria) { var request = GetRequest(searchCriteria.SanitizedSearchTerm, searchCriteria.Categories); return(GetRequestChain(request, 2)); }
public IndexerPageableRequestChain GetSearchRequests(BasicSearchCriteria searchCriteria) => PerformRequest(searchCriteria);
public Task <BaseSearchResponse <Models.Type> > SearchAsync(BasicSearchCriteria criteria) { throw new NotImplementedException(); }
public IndexerPageableRequestChain GetSearchRequests(BasicSearchCriteria searchCriteria) => GetRequestWithSearchType(searchCriteria, "anime");