summaryrefslogtreecommitdiffstats
path: root/librepology
diff options
context:
space:
mode:
Diffstat (limited to 'librepology')
-rw-r--r--librepology/.gitignore1
-rw-r--r--librepology/Cargo.toml9
-rw-r--r--librepology/src/lib.rs9
-rw-r--r--librepology/src/packagefilters.rs81
-rw-r--r--librepology/src/v1/restapi.rs5
-rw-r--r--librepology/src/v1/types/package.rs38
6 files changed, 41 insertions, 102 deletions
diff --git a/librepology/.gitignore b/librepology/.gitignore
new file mode 100644
index 0000000..eb5a316
--- /dev/null
+++ b/librepology/.gitignore
@@ -0,0 +1 @@
+target
diff --git a/librepology/Cargo.toml b/librepology/Cargo.toml
index 7dadd2f..51afe45 100644
--- a/librepology/Cargo.toml
+++ b/librepology/Cargo.toml
@@ -11,7 +11,6 @@ readme = "./README.md"
keywords = ["api", "repology"]
categories = ["data-structures", "api-bindings"]
license = "MPL-2.0"
-license-file = "./LICENSE"
[badges]
maintenance = { status = "actively-developed" }
@@ -25,12 +24,6 @@ url_serde = "0.2"
failure = "0.1"
log = "0.4"
derive_more = "0.14"
+derive-new = "0.5"
curl = "0.4"
-filters = { version = "0.3", optional = true }
-derive-new = { version = "0.5", optional = true }
-
-[features]
-# By default, we include the filters functionality
-default = [ "packagefilters" ]
-packagefilters = ["filters", "derive-new"]
diff --git a/librepology/src/lib.rs b/librepology/src/lib.rs
index 76992fd..d0904a4 100644
--- a/librepology/src/lib.rs
+++ b/librepology/src/lib.rs
@@ -5,16 +5,9 @@ extern crate url;
extern crate url_serde;
extern crate curl;
-#[cfg(feature = "packagefilters")]
-extern crate filters;
-#[cfg(feature = "packagefilters")]
-#[macro_use] extern crate derive_new;
-
#[macro_use] extern crate serde_derive;
#[macro_use] extern crate log;
#[macro_use] extern crate derive_more;
+#[macro_use] extern crate derive_new;
pub mod v1;
-
-#[cfg(feature = "packagefilters")]
-pub mod packagefilters;
diff --git a/librepology/src/packagefilters.rs b/librepology/src/packagefilters.rs
deleted file mode 100644
index d1293d4..0000000
--- a/librepology/src/packagefilters.rs
+++ /dev/null
@@ -1,81 +0,0 @@
-use filters::filter::Filter;
-
-use crate::v1::types::{Package, Repo, Name, Status, Version, License, Maintainer};
-
-
-#[derive(new, Debug)]
-pub struct PackageRepoNameFilter(Repo);
-
-/// Filter implementation for PackageRepoNameFilter
-///
-/// filters based on _equality_!
-impl Filter<Package> for PackageRepoNameFilter {
- fn filter(&self, package: &Package) -> bool {
- self.0 == *package.repo()
- }
-}
-
-
-#[derive(new, Debug)]
-pub struct PackageNameFilter(Name);
-
-/// Filter implementation for PackageNameFilter
-///
-/// filters based on _equality_!
-impl Filter<Package> for PackageNameFilter {
- fn filter(&self, package: &Package) -> bool {
- self.0 == *package.name()
- }
-}
-
-
-#[derive(new, Debug)]
-pub struct PackageVersionFilter(Version);
-
-/// Filter implementation for PackageVersionFilter
-///
-/// filters based on _equality_!
-impl Filter<Package> for PackageVersionFilter {
- fn filter(&self, package: &Package) -> bool {
- self.0 == *package.version()
- }
-}
-
-
-#[derive(new, Debug)]
-pub struct PackageStatusFilter(Status);
-
-/// Filter implementation for PackageStatusFilter
-///
-/// filters based on _equality_!
-impl Filter<Package> for PackageStatusFilter {
- fn filter(&self, package: &Package) -> bool {
- package.status().map(|s| self.0 == *s).unwrap_or(false)
- }
-}
-
-
-#[derive(new, Debug)]
-pub struct PackageLicenseFilter(License);
-
-/// Filter implementation for PackageLicenseFilter
-///
-/// filters based on _equality_!
-impl Filter<Package> for PackageLicenseFilter {
- fn filter(&self, package: &Package) -> bool {
- package.licenses().map(|lcs| lcs.iter().any(|l| self.0 == *l)).unwrap_or(false)
- }
-}
-
-
-#[derive(new, Debug)]
-pub struct PackageMaintainerFilter(Maintainer);
-
-/// Filter implementation for PackageMaintainerFilter
-///
-/// filters based on _equality_!
-impl Filter<Package> for PackageMaintainerFilter {
- fn filter(&self, package: &Package) -> bool {
- package.maintainers().map(|mts| mts.iter().any(|m| self.0 == *m)).unwrap_or(false)
- }
-}
diff --git a/librepology/src/v1/restapi.rs b/librepology/src/v1/restapi.rs
index bc1a693..1e8711c 100644
--- a/librepology/src/v1/restapi.rs
+++ b/librepology/src/v1/restapi.rs
@@ -42,17 +42,20 @@ impl Api for RestApi {
fn project<N: AsRef<str>>(&self, name: N) -> Result<Vec<Package>> {
let url = format!("{}api/v1/project/{}", self.repology, name.as_ref());
+ trace!("Request: {}", url);
serde_json::from_str(&self.send_request(url)?).map_err(Error::from)
}
fn problems_for_repo<R: AsRef<str>>(&self, repo: R) -> Result<Vec<Problem>> {
let url = format!("{}api/v1/repository/{}/problems", self.repology, repo.as_ref());
+ trace!("Request: {}", url);
serde_json::from_str(&self.send_request(url)?).map_err(Error::from)
}
fn problems_for_maintainer<M: AsRef<str>>(&self, maintainer: M) -> Result<Vec<Problem>> {
let url = format!("{}api/v1/maintainer/{}/problems", self.repology, maintainer.as_ref());
+ trace!("Request: {}", url);
serde_json::from_str(&self.send_request(url)?).map_err(Error::from)
}
-} \ No newline at end of file
+}
diff --git a/librepology/src/v1/types/package.rs b/librepology/src/v1/types/package.rs
index fc66faa..4623fd3 100644
--- a/librepology/src/v1/types/package.rs
+++ b/librepology/src/v1/types/package.rs
@@ -5,8 +5,17 @@ pub struct Package {
/// name of repository for this package
repo: Repo,
- /// name
- name: Name,
+ /// package name(s) as used in repository - generic one and/or source package name and/or binary package name, whichever is applicable
+ name: Option<Name>,
+
+ /// package name(s) as used in repository - generic one and/or source package name and/or binary package name, whichever is applicable
+ srcname: Option<Name>,
+
+ /// package name(s) as used in repository - generic one and/or source package name and/or binary package name, whichever is applicable
+ binname: Option<Name>,
+
+ /// package name as shown to the user by Repology
+ visiblename: Option<Name>,
/// version
version: Version,
@@ -35,8 +44,29 @@ impl Package {
&self.repo
}
- pub fn name(&self) -> &Name {
- &self.name
+ pub fn name(&self) -> Option<&Name> {
+ self.name.as_ref()
+ }
+
+ pub fn srcname(&self) -> Option<&Name> {
+ self.srcname.as_ref()
+ }
+
+ pub fn binname(&self) -> Option<&Name> {
+ self.binname.as_ref()
+ }
+
+ pub fn visiblename(&self) -> Option<&Name> {
+ self.visiblename.as_ref()
+ }
+
+ /// Get name, srcname, binname or visiblename, whatever is set
+ /// (in this order)
+ pub fn any_name(&self) -> Option<&Name> {
+ self.name()
+ .or_else(|| self.srcname())
+ .or_else(|| self.binname())
+ .or_else(|| self.visiblename())
}
pub fn version(&self) -> &Version {