diff options
| author | Samantaz Fox <coding@samantaz.fr> | 2022-03-06 02:27:45 +0100 |
|---|---|---|
| committer | Samantaz Fox <coding@samantaz.fr> | 2022-03-29 20:31:23 +0200 |
| commit | fb2a331f79fcc42ac2c17ea349943ab2ba6ad0fe (patch) | |
| tree | 31c2f61f0adfb571d5c69078c5018bd843488f19 /src | |
| parent | c888524523195382a5da171545441eaf0662ab01 (diff) | |
| download | invidious-fb2a331f79fcc42ac2c17ea349943ab2ba6ad0fe.tar.gz invidious-fb2a331f79fcc42ac2c17ea349943ab2ba6ad0fe.tar.bz2 invidious-fb2a331f79fcc42ac2c17ea349943ab2ba6ad0fe.zip | |
Add a function to parse search filters from invidious URL params
Diffstat (limited to 'src')
| -rw-r--r-- | src/invidious/search/filters.cr | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/invidious/search/filters.cr b/src/invidious/search/filters.cr index c5e91aae..d7154d21 100644 --- a/src/invidious/search/filters.cr +++ b/src/invidious/search/filters.cr @@ -192,6 +192,42 @@ module Invidious::Search return {filters, channel, cleaned_query, subscriptions} end + def self.from_iv_params(params : HTTP::Params) : Filters + # Temporary variables + filters = Filters.new + + if type = params["type"]? + filters.type = Type.parse?(type) || Type::All + params.delete("type") + end + + if date = params["date"]? + filters.date = Date.parse?(date) || Date::None + params.delete("date") + end + + if duration = params["duration"]? + filters.duration = Duration.parse?(duration) || Duration::None + params.delete("duration") + end + + features = params.fetch_all("features") + if !features.empty? + # Un-array input so it can be treated as a comma-separated list + features = features[0].split(',') if features.size == 1 + + filters.features = parse_features(features) || Features::None + params.delete_all("features") + end + + if sort = params["sort"]? + filters.sort = Sort.parse?(sort) || Sort::Relevance + params.delete("sort") + end + + return filters + end + # ------------------- # Youtube params # ------------------- |
