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

Remove Warp HTTP Tracker #231

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
2 changes: 1 addition & 1 deletion src/apis/responses.rs
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ pub fn failed_to_reload_keys_response<E: Error>(e: E) -> Response {
unhandled_rejection_response(format!("failed to reload keys: {e}"))
}

/// This error response is to keep backward compatibility with the old Warp API.
/// This error response is to keep backward compatibility with the old API.
/// It should be a plain text or json.
#[must_use]
pub fn unhandled_rejection_response(reason: String) -> Response {
Expand Down
6 changes: 2 additions & 4 deletions src/http/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,11 @@

use serde::{Deserialize, Serialize};

pub mod axum_implementation;
pub mod percent_encoding;
pub mod server;
pub mod warp_implementation;
pub mod v1;

#[derive(Serialize, Deserialize, Copy, Clone, PartialEq, Eq, Debug)]
pub enum Version {
Warp,
Axum,
V1,
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ use axum::extract::FromRequestParts;
use axum::http::request::Parts;
use axum::response::{IntoResponse, Response};

use crate::http::axum_implementation::query::Query;
use crate::http::axum_implementation::requests::announce::{Announce, ParseAnnounceQueryError};
use crate::http::axum_implementation::responses;
use crate::http::v1::query::Query;
use crate::http::v1::requests::announce::{Announce, ParseAnnounceQueryError};
use crate::http::v1::responses;

pub struct ExtractRequest(pub Announce);

Expand Down Expand Up @@ -53,8 +53,8 @@ mod tests {
use std::str::FromStr;

use super::extract_announce_from;
use crate::http::axum_implementation::requests::announce::{Announce, Compact, Event};
use crate::http::axum_implementation::responses::error::Error;
use crate::http::v1::requests::announce::{Announce, Compact, Event};
use crate::http::v1::responses::error::Error;
use crate::protocol::info_hash::InfoHash;
use crate::tracker::peer;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ use axum::http::request::Parts;
use axum::response::{IntoResponse, Response};
use serde::Deserialize;

use crate::http::axum_implementation::handlers::common::auth;
use crate::http::axum_implementation::responses;
use crate::http::v1::handlers::common::auth;
use crate::http::v1::responses;
use crate::tracker::auth::Key;

pub struct Extract(pub Key);
Expand Down Expand Up @@ -85,7 +85,7 @@ fn custom_error(rejection: &PathRejection) -> responses::error::Error {
mod tests {

use super::parse_key;
use crate::http::axum_implementation::responses::error::Error;
use crate::http::v1::responses::error::Error;

fn assert_error_response(error: &Error, error_message: &str) {
assert!(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ use axum::http::request::Parts;
use axum::response::Response;
use axum_client_ip::RightmostXForwardedFor;

use crate::http::axum_implementation::services::peer_ip_resolver::ClientIpSources;
use crate::http::v1::services::peer_ip_resolver::ClientIpSources;

pub struct Extract(pub ClientIpSources);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ use axum::extract::FromRequestParts;
use axum::http::request::Parts;
use axum::response::{IntoResponse, Response};

use crate::http::axum_implementation::query::Query;
use crate::http::axum_implementation::requests::scrape::{ParseScrapeQueryError, Scrape};
use crate::http::axum_implementation::responses;
use crate::http::v1::query::Query;
use crate::http::v1::requests::scrape::{ParseScrapeQueryError, Scrape};
use crate::http::v1::responses;

pub struct ExtractRequest(pub Scrape);

Expand Down Expand Up @@ -53,8 +53,8 @@ mod tests {
use std::str::FromStr;

use super::extract_scrape_from;
use crate::http::axum_implementation::requests::scrape::Scrape;
use crate::http::axum_implementation::responses::error::Error;
use crate::http::v1::requests::scrape::Scrape;
use crate::http::v1::responses::error::Error;
use crate::protocol::info_hash::InfoHash;

struct TestInfoHash {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@ use axum::extract::State;
use axum::response::{IntoResponse, Response};
use log::debug;

use crate::http::axum_implementation::extractors::announce_request::ExtractRequest;
use crate::http::axum_implementation::extractors::authentication_key::Extract as ExtractKey;
use crate::http::axum_implementation::extractors::client_ip_sources::Extract as ExtractClientIpSources;
use crate::http::axum_implementation::handlers::common::auth;
use crate::http::axum_implementation::requests::announce::{Announce, Compact, Event};
use crate::http::axum_implementation::responses::{self, announce};
use crate::http::axum_implementation::services::peer_ip_resolver::ClientIpSources;
use crate::http::axum_implementation::services::{self, peer_ip_resolver};
use crate::http::v1::extractors::announce_request::ExtractRequest;
use crate::http::v1::extractors::authentication_key::Extract as ExtractKey;
use crate::http::v1::extractors::client_ip_sources::Extract as ExtractClientIpSources;
use crate::http::v1::handlers::common::auth;
use crate::http::v1::requests::announce::{Announce, Compact, Event};
use crate::http::v1::responses::{self, announce};
use crate::http::v1::services::peer_ip_resolver::ClientIpSources;
use crate::http::v1::services::{self, peer_ip_resolver};
use crate::protocol::clock::{Current, Time};
use crate::tracker::auth::Key;
use crate::tracker::peer::Peer;
Expand Down Expand Up @@ -141,9 +141,9 @@ mod tests {

use torrust_tracker_test_helpers::configuration;

use crate::http::axum_implementation::requests::announce::Announce;
use crate::http::axum_implementation::responses;
use crate::http::axum_implementation::services::peer_ip_resolver::ClientIpSources;
use crate::http::v1::requests::announce::Announce;
use crate::http::v1::responses;
use crate::http::v1::services::peer_ip_resolver::ClientIpSources;
use crate::protocol::info_hash::InfoHash;
use crate::tracker::services::common::tracker_factory;
use crate::tracker::{peer, Tracker};
Expand Down Expand Up @@ -197,8 +197,8 @@ mod tests {
use std::sync::Arc;

use super::{private_tracker, sample_announce_request, sample_client_ip_sources};
use crate::http::axum_implementation::handlers::announce::handle_announce;
use crate::http::axum_implementation::handlers::announce::tests::assert_error_response;
use crate::http::v1::handlers::announce::handle_announce;
use crate::http::v1::handlers::announce::tests::assert_error_response;
use crate::tracker::auth;

#[tokio::test]
Expand Down Expand Up @@ -238,8 +238,8 @@ mod tests {
use std::sync::Arc;

use super::{sample_announce_request, sample_client_ip_sources, whitelisted_tracker};
use crate::http::axum_implementation::handlers::announce::handle_announce;
use crate::http::axum_implementation::handlers::announce::tests::assert_error_response;
use crate::http::v1::handlers::announce::handle_announce;
use crate::http::v1::handlers::announce::tests::assert_error_response;

#[tokio::test]
async fn it_should_fail_when_the_announced_torrent_is_not_whitelisted() {
Expand All @@ -266,9 +266,9 @@ mod tests {
use std::sync::Arc;

use super::{sample_announce_request, tracker_on_reverse_proxy};
use crate::http::axum_implementation::handlers::announce::handle_announce;
use crate::http::axum_implementation::handlers::announce::tests::assert_error_response;
use crate::http::axum_implementation::services::peer_ip_resolver::ClientIpSources;
use crate::http::v1::handlers::announce::handle_announce;
use crate::http::v1::handlers::announce::tests::assert_error_response;
use crate::http::v1::services::peer_ip_resolver::ClientIpSources;

#[tokio::test]
async fn it_should_fail_when_the_right_most_x_forwarded_for_header_ip_is_not_available() {
Expand All @@ -295,9 +295,9 @@ mod tests {
use std::sync::Arc;

use super::{sample_announce_request, tracker_not_on_reverse_proxy};
use crate::http::axum_implementation::handlers::announce::handle_announce;
use crate::http::axum_implementation::handlers::announce::tests::assert_error_response;
use crate::http::axum_implementation::services::peer_ip_resolver::ClientIpSources;
use crate::http::v1::handlers::announce::handle_announce;
use crate::http::v1::handlers::announce::tests::assert_error_response;
use crate::http::v1::services::peer_ip_resolver::ClientIpSources;

#[tokio::test]
async fn it_should_fail_when_the_client_ip_from_the_connection_info_is_not_available() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use std::panic::Location;

use thiserror::Error;

use crate::http::axum_implementation::responses;
use crate::http::v1::responses;
use crate::tracker::auth;

#[derive(Debug, Error)]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use crate::http::axum_implementation::responses;
use crate::http::axum_implementation::services::peer_ip_resolver::PeerIpResolutionError;
use crate::http::v1::responses;
use crate::http::v1::services::peer_ip_resolver::PeerIpResolutionError;

impl From<PeerIpResolutionError> for responses::error::Error {
fn from(err: PeerIpResolutionError) -> Self {
Expand All @@ -13,8 +13,8 @@ impl From<PeerIpResolutionError> for responses::error::Error {
mod tests {
use std::panic::Location;

use crate::http::axum_implementation::responses;
use crate::http::axum_implementation::services::peer_ip_resolver::PeerIpResolutionError;
use crate::http::v1::responses;
use crate::http::v1::services::peer_ip_resolver::PeerIpResolutionError;

fn assert_error_response(error: &responses::error::Error, error_message: &str) {
assert!(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ use axum::extract::State;
use axum::response::{IntoResponse, Response};
use log::debug;

use crate::http::axum_implementation::extractors::authentication_key::Extract as ExtractKey;
use crate::http::axum_implementation::extractors::client_ip_sources::Extract as ExtractClientIpSources;
use crate::http::axum_implementation::extractors::scrape_request::ExtractRequest;
use crate::http::axum_implementation::requests::scrape::Scrape;
use crate::http::axum_implementation::services::peer_ip_resolver::{self, ClientIpSources};
use crate::http::axum_implementation::{responses, services};
use crate::http::v1::extractors::authentication_key::Extract as ExtractKey;
use crate::http::v1::extractors::client_ip_sources::Extract as ExtractClientIpSources;
use crate::http::v1::extractors::scrape_request::ExtractRequest;
use crate::http::v1::requests::scrape::Scrape;
use crate::http::v1::services::peer_ip_resolver::{self, ClientIpSources};
use crate::http::v1::{responses, services};
use crate::tracker::auth::Key;
use crate::tracker::{ScrapeData, Tracker};

Expand Down Expand Up @@ -99,9 +99,9 @@ mod tests {

use torrust_tracker_test_helpers::configuration;

use crate::http::axum_implementation::requests::scrape::Scrape;
use crate::http::axum_implementation::responses;
use crate::http::axum_implementation::services::peer_ip_resolver::ClientIpSources;
use crate::http::v1::requests::scrape::Scrape;
use crate::http::v1::responses;
use crate::http::v1::services::peer_ip_resolver::ClientIpSources;
use crate::protocol::info_hash::InfoHash;
use crate::tracker::services::common::tracker_factory;
use crate::tracker::Tracker;
Expand Down Expand Up @@ -147,7 +147,7 @@ mod tests {
use std::sync::Arc;

use super::{private_tracker, sample_client_ip_sources, sample_scrape_request};
use crate::http::axum_implementation::handlers::scrape::handle_scrape;
use crate::http::v1::handlers::scrape::handle_scrape;
use crate::tracker::{auth, ScrapeData};

#[tokio::test]
Expand Down Expand Up @@ -189,7 +189,7 @@ mod tests {
use std::sync::Arc;

use super::{sample_client_ip_sources, sample_scrape_request, whitelisted_tracker};
use crate::http::axum_implementation::handlers::scrape::handle_scrape;
use crate::http::v1::handlers::scrape::handle_scrape;
use crate::tracker::ScrapeData;

#[tokio::test]
Expand All @@ -212,9 +212,9 @@ mod tests {
use std::sync::Arc;

use super::{sample_scrape_request, tracker_on_reverse_proxy};
use crate::http::axum_implementation::handlers::scrape::handle_scrape;
use crate::http::axum_implementation::handlers::scrape::tests::assert_error_response;
use crate::http::axum_implementation::services::peer_ip_resolver::ClientIpSources;
use crate::http::v1::handlers::scrape::handle_scrape;
use crate::http::v1::handlers::scrape::tests::assert_error_response;
use crate::http::v1::services::peer_ip_resolver::ClientIpSources;

#[tokio::test]
async fn it_should_fail_when_the_right_most_x_forwarded_for_header_ip_is_not_available() {
Expand All @@ -240,9 +240,9 @@ mod tests {
use std::sync::Arc;

use super::{sample_scrape_request, tracker_not_on_reverse_proxy};
use crate::http::axum_implementation::handlers::scrape::handle_scrape;
use crate::http::axum_implementation::handlers::scrape::tests::assert_error_response;
use crate::http::axum_implementation::services::peer_ip_resolver::ClientIpSources;
use crate::http::v1::handlers::scrape::handle_scrape;
use crate::http::v1::handlers::scrape::tests::assert_error_response;
use crate::http::v1::services::peer_ip_resolver::ClientIpSources;

#[tokio::test]
async fn it_should_fail_when_the_client_ip_from_the_connection_info_is_not_available() {
Expand Down
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ impl std::fmt::Display for FieldValuePairSet {
mod tests {

mod url_query {
use crate::http::axum_implementation::query::Query;
use crate::http::v1::query::Query;

#[test]
fn should_parse_the_query_params_from_an_url_query_string() {
Expand Down Expand Up @@ -227,7 +227,7 @@ mod tests {
}

mod should_allow_more_than_one_value_for_the_same_param {
use crate::http::axum_implementation::query::Query;
use crate::http::v1::query::Query;

#[test]
fn instantiated_from_a_vector() {
Expand All @@ -249,7 +249,7 @@ mod tests {
}

mod should_be_displayed {
use crate::http::axum_implementation::query::Query;
use crate::http::v1::query::Query;

#[test]
fn with_one_param() {
Expand All @@ -270,7 +270,7 @@ mod tests {
}

mod param_name_value_pair {
use crate::http::axum_implementation::query::NameValuePair;
use crate::http::v1::query::NameValuePair;

#[test]
fn should_parse_a_single_query_param() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ use std::str::FromStr;
use thiserror::Error;
use torrust_tracker_located_error::{Located, LocatedError};

use crate::http::axum_implementation::query::{ParseQueryError, Query};
use crate::http::axum_implementation::responses;
use crate::http::percent_encoding::{percent_decode_info_hash, percent_decode_peer_id};
use crate::http::v1::query::{ParseQueryError, Query};
use crate::http::v1::responses;
use crate::protocol::info_hash::{ConversionError, InfoHash};
use crate::tracker::peer::{self, IdConversionError};

Expand Down Expand Up @@ -280,8 +280,8 @@ mod tests {

mod announce_request {

use crate::http::axum_implementation::query::Query;
use crate::http::axum_implementation::requests::announce::{
use crate::http::v1::query::Query;
use crate::http::v1::requests::announce::{
Announce, Compact, Event, COMPACT, DOWNLOADED, EVENT, INFO_HASH, LEFT, PEER_ID, PORT, UPLOADED,
};
use crate::protocol::info_hash::InfoHash;
Expand Down Expand Up @@ -350,8 +350,8 @@ mod tests {

mod when_it_is_instantiated_from_the_url_query_params {

use crate::http::axum_implementation::query::Query;
use crate::http::axum_implementation::requests::announce::{
use crate::http::v1::query::Query;
use crate::http::v1::requests::announce::{
Announce, COMPACT, DOWNLOADED, EVENT, INFO_HASH, LEFT, PEER_ID, PORT, UPLOADED,
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ use std::panic::Location;
use thiserror::Error;
use torrust_tracker_located_error::{Located, LocatedError};

use crate::http::axum_implementation::query::Query;
use crate::http::axum_implementation::responses;
use crate::http::percent_encoding::percent_decode_info_hash;
use crate::http::v1::query::Query;
use crate::http::v1::responses;
use crate::protocol::info_hash::{ConversionError, InfoHash};

pub type NumberOfBytes = i64;
Expand Down Expand Up @@ -85,8 +85,8 @@ mod tests {

mod scrape_request {

use crate::http::axum_implementation::query::Query;
use crate::http::axum_implementation::requests::scrape::{Scrape, INFO_HASH};
use crate::http::v1::query::Query;
use crate::http::v1::requests::scrape::{Scrape, INFO_HASH};
use crate::protocol::info_hash::InfoHash;

#[test]
Expand All @@ -107,8 +107,8 @@ mod tests {

mod when_it_is_instantiated_from_the_url_query_params {

use crate::http::axum_implementation::query::Query;
use crate::http::axum_implementation::requests::scrape::{Scrape, INFO_HASH};
use crate::http::v1::query::Query;
use crate::http::v1::requests::scrape::{Scrape, INFO_HASH};

#[test]
fn it_should_fail_if_the_query_does_not_include_the_info_hash_param() {
Expand Down
Loading