hackeraudit_api_common/
lib.rs

1extern crate serde;
2#[macro_use]
3extern crate serde_derive;
4extern crate serde_json;
5
6#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Serialize, Deserialize, Clone)]
7pub struct AuditRequestPackage {
8    pub source: String,
9    pub name: String,
10    pub version: String,
11}
12
13#[derive(Debug, Serialize, Deserialize, Clone)]
14pub struct AuditRequest {
15    pub packages: Vec<AuditRequestPackage>,
16    pub token: Option<String>,
17}
18
19#[derive(Debug, Serialize, Deserialize, Default, Clone, Copy)]
20pub struct UsageStatsItem {
21    pub bad: i64,
22    pub good: i64,
23    pub used: i64,
24}
25
26impl UsageStatsItem {
27    pub fn empty() -> Self {
28        UsageStatsItem {
29            bad: 0,
30            good: 0,
31            used: 0,
32        }
33    }
34}
35
36#[derive(Debug, Serialize, Deserialize, Default, Clone)]
37pub struct UsageStats {
38    pub patch: UsageStatsItem,
39    pub minor: UsageStatsItem,
40    pub major: UsageStatsItem,
41    pub total: UsageStatsItem,
42}
43
44impl UsageStats {
45    pub fn empty() -> Self {
46        UsageStats {
47            patch: UsageStatsItem::empty(),
48            minor: UsageStatsItem::empty(),
49            major: UsageStatsItem::empty(),
50            total: UsageStatsItem::empty(),
51        }
52    }
53}
54
55#[derive(Debug, Serialize, Deserialize, Clone)]
56pub struct AuditResponsePackage {
57    pub stats: UsageStats,
58    pub self_score_good: bool,
59    pub self_score_bad: bool,
60    pub url: Option<String>,
61}
62
63#[derive(Debug, Serialize, Deserialize, Clone)]
64pub struct AuditResponse {
65    pub packages: Vec<Result<AuditResponsePackage, String>>,
66    pub username: Option<String>,
67}