1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
//! Models mapping the API.

/// Result data for a search.
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct Search<T: Send + Sync> {
    /// A list of relevant results.
    pub results: Vec<T>,
    /// The number of results in the [`results`] field.
    ///
    /// [`results`]: #structfield.resultcount
    #[serde(rename = "resultcount")]
    pub result_count: u64,
    /// The type of search that was performed.
    #[serde(rename = "type")]
    pub type_: String,
    /// The version of the API in use.
    pub version: u64,
}

/// A result for a search without additional information metadata.
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct SearchResult {
    /// A longer description of the package.
    #[serde(rename = "Description")]
    pub description: Option<String>,
    /// When the package was first submitted.
    #[serde(rename = "FirstSubmitted")]
    pub first_submitted: u64,
    /// The ID of the package.
    #[serde(rename = "ID")]
    pub id: u64,
    /// When the package was last modified.
    #[serde(rename = "LastModified")]
    pub last_modified: u64,
    /// The name of the package's maintainer.
    #[serde(rename = "Maintainer")]
    pub maintainer: Option<String>,
    /// The name of the package.
    #[serde(rename = "Name")]
    pub name: String,
    /// The number of votes that the package has.
    #[serde(rename = "NumVotes")]
    pub num_votes: u64,
    /// When the package was marked as out-of-date.
    #[serde(rename = "OutOfDate")]
    pub out_of_date: Option<u64>,
    /// The name of the base package.
    #[serde(rename = "PackageBase")]
    pub package_base: String,
    /// The ID of the base package.
    #[serde(rename = "PackageBaseID")]
    pub package_base_id: u64,
    /// The relative popularity of the package.
    #[serde(rename = "Popularity")]
    pub popularity: f64,
    /// URL to the package's project home.
    #[serde(rename = "URL")]
    pub url: Option<String>,
    /// Path to the package's snapshot tar.
    #[serde(rename = "URLPath")]
    pub url_path: String,
    /// The version of the package.
    #[serde(rename = "Version")]
    pub version: String,
}

/// A result for a search _with_ additional information metadata.
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct InfoResult {
    /// A list of package names that conflicts with this package.
    #[serde(default, rename = "Conflicts")]
    pub conflicts: Vec<String>,
    /// The packages that this package depends upon.
    #[serde(rename = "Depends")]
    pub dependencies: Vec<String>,
    /// A longer description of the package.
    #[serde(rename = "Description")]
    pub description: Option<String>,
    /// When the package was first submitted.
    #[serde(rename = "FirstSubmitted")]
    pub first_submitted: u64,
    /// The ID of the package.
    #[serde(rename = "ID")]
    pub id: u64,
    /// The keywords that the package has been marked with for queryability.
    #[serde(rename = "Keywords")]
    pub keywords: Vec<String>,
    /// When the package was last modified.
    #[serde(rename = "LastModified")]
    pub last_modified: u64,
    /// The license(s) that the project is licensed under.
    #[serde(rename = "License")]
    pub license: Vec<String>,
    /// The name of the package's maintainer.
    #[serde(rename = "Maintainer")]
    pub maintainer: Option<String>,
    /// The list of dependencies to make the package.
    #[serde(default, rename = "MakeDepends")]
    pub make_depends: Vec<String>,
    /// The name of the package.
    #[serde(rename = "Name")]
    pub name: String,
    /// The number of votes that the package has.
    #[serde(rename = "NumVotes")]
    pub num_votes: u64,
    /// The packages that this package optionally depends upon.
    #[serde(default, rename = "OptDepends")]
    pub optional_dependencies: Vec<String>,
    /// When the package was marked as out-of-date.
    #[serde(rename = "OutOfDate")]
    pub out_of_date: Option<u64>,
    /// The name of the base package.
    #[serde(rename = "PackageBase")]
    pub package_base: String,
    /// The ID of the base package.
    #[serde(rename = "PackageBaseID")]
    pub package_base_id: u64,
    /// The relative popularity of the package.
    #[serde(rename = "Popularity")]
    pub popularity: f64,
    /// A list of packages this provides for.
    #[serde(default, rename = "Provides")]
    pub provides: Vec<String>,
    /// URL to the package's project home.
    #[serde(rename = "URL")]
    pub url: Option<String>,
    /// Path to the package's snapshot tar.
    #[serde(rename = "URLPath")]
    pub url_path: String,
    /// The version of the package.
    #[serde(rename = "Version")]
    pub version: String,
}