Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add privacy methods to the TrackerMode enum #871

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 47 additions & 1 deletion packages/primitives/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
//! by the tracker server crate, but also by other crates in the Torrust
//! ecosystem.
use std::collections::BTreeMap;
use std::fmt;
use std::str::FromStr;
use std::time::Duration;

use info_hash::InfoHash;
Expand Down Expand Up @@ -67,7 +69,7 @@
///
/// Refer to [Torrust Tracker Configuration](https://docs.rs/torrust-tracker-configuration)
/// to know how to configure the tracker to run in each mode.
#[derive(Serialize, Deserialize, Copy, Clone, PartialEq, Eq, Debug)]
#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
pub enum TrackerMode {
/// Will track every new info hash and serve every peer.
#[serde(rename = "public")]
Expand All @@ -85,3 +87,47 @@
#[serde(rename = "private_listed")]
PrivateListed,
}

impl Default for TrackerMode {
fn default() -> Self {
Self::Public
}

Check warning on line 94 in packages/primitives/src/lib.rs

View check run for this annotation

Codecov / codecov/patch

packages/primitives/src/lib.rs#L92-L94

Added lines #L92 - L94 were not covered by tests
}

impl fmt::Display for TrackerMode {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let display_str = match self {
TrackerMode::Public => "public",
TrackerMode::Listed => "listed",
TrackerMode::Private => "private",
TrackerMode::PrivateListed => "private_listed",

Check warning on line 103 in packages/primitives/src/lib.rs

View check run for this annotation

Codecov / codecov/patch

packages/primitives/src/lib.rs#L98-L103

Added lines #L98 - L103 were not covered by tests
};
write!(f, "{display_str}")
}

Check warning on line 106 in packages/primitives/src/lib.rs

View check run for this annotation

Codecov / codecov/patch

packages/primitives/src/lib.rs#L105-L106

Added lines #L105 - L106 were not covered by tests
}

impl FromStr for TrackerMode {
type Err = String;

fn from_str(s: &str) -> Result<Self, Self::Err> {
match s.to_lowercase().as_str() {
"public" => Ok(TrackerMode::Public),
"listed" => Ok(TrackerMode::Listed),
"private" => Ok(TrackerMode::Private),
"private_listed" => Ok(TrackerMode::PrivateListed),
_ => Err(format!("Unknown tracker mode: {s}")),

Check warning on line 118 in packages/primitives/src/lib.rs

View check run for this annotation

Codecov / codecov/patch

packages/primitives/src/lib.rs#L112-L118

Added lines #L112 - L118 were not covered by tests
}
}

Check warning on line 120 in packages/primitives/src/lib.rs

View check run for this annotation

Codecov / codecov/patch

packages/primitives/src/lib.rs#L120

Added line #L120 was not covered by tests
}

impl TrackerMode {
#[must_use]
pub fn is_open(&self) -> bool {
matches!(self, TrackerMode::Public | TrackerMode::Listed)
}

Check warning on line 127 in packages/primitives/src/lib.rs

View check run for this annotation

Codecov / codecov/patch

packages/primitives/src/lib.rs#L125-L127

Added lines #L125 - L127 were not covered by tests

#[must_use]
pub fn is_close(&self) -> bool {
!self.is_open()
}

Check warning on line 132 in packages/primitives/src/lib.rs

View check run for this annotation

Codecov / codecov/patch

packages/primitives/src/lib.rs#L130-L132

Added lines #L130 - L132 were not covered by tests
}
2 changes: 1 addition & 1 deletion src/core/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -547,7 +547,7 @@ impl Tracker {
) -> Result<Tracker, databases::error::Error> {
let database = Arc::new(databases::driver::build(&config.db_driver, &config.db_path)?);

let mode = config.mode;
let mode = config.mode.clone();

Ok(Tracker {
//config,
Expand Down
Loading