Преглед на файлове

Update metadata.rs

Properly check forbidden and allowed lists, skip tracks where allowed list is set but is empty.
Evgeny S преди 7 години
родител
ревизия
8bd9174370
променени са 1 файла, в които са добавени 15 реда и са изтрити 4 реда
  1. 15 4
      src/metadata.rs

+ 15 - 4
src/metadata.rs

@@ -17,18 +17,29 @@ fn parse_restrictions<'s, I>(restrictions: I, country: &str, catalogue: &str) ->
     where I: IntoIterator<Item = &'s protocol::metadata::Restriction>
 {
     let mut forbidden = "".to_string();
+    let mut has_forbidden = false;
+
     let mut allowed = "".to_string();
+    let mut has_allowed = false;
+
     let rs = restrictions.into_iter().filter(|r|
         r.get_catalogue_str().contains(&catalogue.to_owned())
     );
 
     for r in rs {
-        forbidden.push_str(r.get_countries_forbidden());
-        allowed.push_str(r.get_countries_allowed());
+        if r.has_countries_forbidden() {
+            forbidden.push_str(r.get_countries_forbidden());
+            has_forbidden = true;
+        }
+
+        if r.has_countries_allowed() {
+            allowed.push_str(r.get_countries_allowed());
+            has_allowed = true;
+        }
     }
 
-    (forbidden == "" || !countrylist_contains(forbidden.as_str(), country)) &&
-    (allowed == "" || countrylist_contains(allowed.as_str(), country))
+    (!has_forbidden || !countrylist_contains(forbidden.as_str(), country)) &&
+    (!has_allowed || countrylist_contains(allowed.as_str(), country))
 }
 
 pub trait MetadataTrait : Send + 'static {