summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2021-04-07 18:03:43 +0200
committerMatthias Beyer <mail@beyermatthias.de>2021-04-07 18:03:50 +0200
commit8f44f7c9d7877e9dba11e09fdd1b80ffa0013d42 (patch)
tree41f38893d8d2de716518e2ea7015cce480232105
parent825a0216c4fe4fb76e2fd27621eab74dcc189e60 (diff)
lib: Fix Problems API types to match API
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
-rw-r--r--librepology/Cargo.toml1
-rw-r--r--librepology/src/v1/types/response/binname.rs14
-rw-r--r--librepology/src/v1/types/response/mod.rs4
-rw-r--r--librepology/src/v1/types/response/problem.rs60
-rw-r--r--librepology/src/v1/types/response/srcname.rs14
5 files changed, 66 insertions, 27 deletions
diff --git a/librepology/Cargo.toml b/librepology/Cargo.toml
index 9055052..ba4ef3e 100644
--- a/librepology/Cargo.toml
+++ b/librepology/Cargo.toml
@@ -22,4 +22,5 @@ serde_json = "1"
thiserror = "1"
url = "1.7"
url_serde = "0.2"
+getset = "0.1"
diff --git a/librepology/src/v1/types/response/binname.rs b/librepology/src/v1/types/response/binname.rs
new file mode 100644
index 0000000..0f90a1b
--- /dev/null
+++ b/librepology/src/v1/types/response/binname.rs
@@ -0,0 +1,14 @@
+use std::ops::Deref;
+
+// list of package downloads
+#[derive(Eq, PartialEq, Ord, PartialOrd, Clone, Debug, serde::Deserialize)]
+pub struct BinName(String);
+
+impl Deref for BinName {
+ type Target = String;
+
+ fn deref(&self) -> &Self::Target {
+ &self.0
+ }
+}
+
diff --git a/librepology/src/v1/types/response/mod.rs b/librepology/src/v1/types/response/mod.rs
index a3902ad..4ea107d 100644
--- a/librepology/src/v1/types/response/mod.rs
+++ b/librepology/src/v1/types/response/mod.rs
@@ -6,6 +6,7 @@
//! This top-level module exports all types of the submodules publicly.
//!
+mod binname;
mod category;
mod download;
mod effname;
@@ -15,11 +16,13 @@ mod name;
mod package;
mod problem;
mod repo;
+mod srcname;
mod status;
mod summary;
mod version;
mod www;
+pub use crate::v1::types::response::binname::BinName;
pub use crate::v1::types::response::category::Category;
pub use crate::v1::types::response::download::Download;
pub use crate::v1::types::response::effname::EffName;
@@ -29,6 +32,7 @@ pub use crate::v1::types::response::name::Name;
pub use crate::v1::types::response::package::Package;
pub use crate::v1::types::response::problem::Problem;
pub use crate::v1::types::response::repo::Repo;
+pub use crate::v1::types::response::srcname::SrcName;
pub use crate::v1::types::response::status::Status;
pub use crate::v1::types::response::summary::Summary;
pub use crate::v1::types::response::version::Version;
diff --git a/librepology/src/v1/types/response/problem.rs b/librepology/src/v1/types/response/problem.rs
index 309fe3d..82c5709 100644
--- a/librepology/src/v1/types/response/problem.rs
+++ b/librepology/src/v1/types/response/problem.rs
@@ -1,41 +1,47 @@
+use std::collections::HashMap;
+
use crate::v1::types::response::*;
-#[derive(Eq, PartialEq, Clone, Debug, serde::Deserialize)]
+#[derive(Eq, PartialEq, Clone, Debug, serde::Deserialize, getset::Getters)]
pub struct Problem {
+ #[serde(rename = "type")]
+ #[getset(get = "pub")]
+ problemtype: String,
+
+ #[serde(rename = "data")]
+ #[getset(get = "pub")]
+ data: HashMap<String, String>,
+
#[serde(rename = "repo")]
+ #[getset(get = "pub")]
repo: Repo,
#[serde(rename = "name")]
- name: Name,
+ #[getset(get = "pub")]
+ name: Option<Name>,
- #[serde(rename = "effname")]
- effname: EffName,
+ #[serde(rename = "srcname")]
+ #[getset(get = "pub")]
+ srcname: SrcName,
- #[serde(rename = "maintainer")]
- maintainer: Maintainer,
+ #[serde(rename = "binname")]
+ #[getset(get = "pub")]
+ binname: BinName,
- #[serde(rename = "problem")]
- problem: String,
-}
+ #[serde(rename = "rawversion")]
+ #[getset(get = "pub")]
+ rawversion: String,
-impl Problem {
- pub fn repo(&self) -> &Repo {
- &self.repo
- }
+ #[serde(rename = "maintainers")]
+ #[getset(get = "pub")]
+ maintainers: Vec<Maintainer>,
- pub fn name(&self) -> &Name {
- &self.name
- }
-
- pub fn effname(&self) -> &EffName {
- &self.effname
- }
-
- pub fn maintainer(&self) -> &Maintainer {
- &self.maintainer
- }
+ #[serde(rename = "effname")]
+ #[getset(get = "pub")]
+ effname: EffName,
- pub fn problem_description(&self) -> &String {
- &self.problem
- }
+ #[serde(rename = "version")]
+ #[getset(get = "pub")]
+ version: String,
}
+
diff --git a/librepology/src/v1/types/response/srcname.rs b/librepology/src/v1/types/response/srcname.rs
new file mode 100644
index 0000000..d652d71
--- /dev/null
+++ b/librepology/src/v1/types/response/srcname.rs
@@ -0,0 +1,14 @@
+use std::ops::Deref;
+
+// list of package downloads
+#[derive(Eq, PartialEq, Ord, PartialOrd, Clone, Debug, serde::Deserialize)]
+pub struct SrcName(String);
+
+impl Deref for SrcName {
+ type Target = String;
+
+ fn deref(&self) -> &Self::Target {
+ &self.0
+ }
+}
+