|
1 | 1 | use chrono::{DateTime, Utc};
|
2 |
| -use failure::err_msg; |
3 |
| -use log::warn; |
| 2 | +use failure::{err_msg, ResultExt}; |
4 | 3 | use reqwest::header::{HeaderValue, ACCEPT, USER_AGENT};
|
5 | 4 | use semver::Version;
|
6 | 5 | use serde::Deserialize;
|
@@ -32,6 +31,16 @@ pub(crate) struct ReleaseData {
|
32 | 31 | pub(crate) downloads: i32,
|
33 | 32 | }
|
34 | 33 |
|
| 34 | +impl Default for ReleaseData { |
| 35 | + fn default() -> ReleaseData { |
| 36 | + ReleaseData { |
| 37 | + release_time: Utc::now(), |
| 38 | + yanked: false, |
| 39 | + downloads: 0, |
| 40 | + } |
| 41 | + } |
| 42 | +} |
| 43 | + |
35 | 44 | #[derive(Debug)]
|
36 | 45 | pub struct CrateOwner {
|
37 | 46 | pub(crate) avatar: String,
|
@@ -62,28 +71,24 @@ impl Api {
|
62 | 71 | .ok_or_else(|| err_msg("index is missing an api base url"))
|
63 | 72 | }
|
64 | 73 |
|
65 |
| - pub fn get_crate_data(&self, name: &str) -> CrateData { |
66 |
| - let owners = self.get_owners(name).unwrap_or_else(|err| { |
67 |
| - warn!("Failed to get owners for {}: {}", name, err); |
68 |
| - Vec::new() |
69 |
| - }); |
| 74 | + pub fn get_crate_data(&self, name: &str) -> Result<CrateData> { |
| 75 | + let owners = self |
| 76 | + .get_owners(name) |
| 77 | + .context(format!("Failed to get owners for {}", name))?; |
70 | 78 |
|
71 |
| - CrateData { owners } |
| 79 | + Ok(CrateData { owners }) |
72 | 80 | }
|
73 | 81 |
|
74 |
| - pub(crate) fn get_release_data(&self, name: &str, version: &str) -> ReleaseData { |
| 82 | + pub(crate) fn get_release_data(&self, name: &str, version: &str) -> Result<ReleaseData> { |
75 | 83 | let (release_time, yanked, downloads) = self
|
76 | 84 | .get_release_time_yanked_downloads(name, version)
|
77 |
| - .unwrap_or_else(|err| { |
78 |
| - warn!("Failed to get crate data for {}-{}: {}", name, version, err); |
79 |
| - (Utc::now(), false, 0) |
80 |
| - }); |
| 85 | + .context(format!("Failed to get crate data for {}-{}", name, version))?; |
81 | 86 |
|
82 |
| - ReleaseData { |
| 87 | + Ok(ReleaseData { |
83 | 88 | release_time,
|
84 | 89 | yanked,
|
85 | 90 | downloads,
|
86 |
| - } |
| 91 | + }) |
87 | 92 | }
|
88 | 93 |
|
89 | 94 | /// Get release_time, yanked and downloads from the registry's API
|
|
0 commit comments