torrust-index-backend 2.0.0-alpha.3

The backend (API) for the Torrust Index project.
Documentation
//! API context: `settings`.
//!
//! This API context is responsible for handling the application settings.
//!
//! # Endpoints
//!
//! - [Get all settings](#get-all-settings)
//! - [Update all settings](#update-all-settings)
//! - [Get site name](#get-site-name)
//! - [Get public settings](#get-public-settings)
//!
//! # Get all settings
//!
//! `GET /v1/settings`
//!
//! Returns all settings.
//!
//! **Example request**
//!
//! ```bash
//! curl \
//!   --header "Content-Type: application/json" \
//!   --header "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjp7InVzZXJfaWQiOjEsInVzZXJuYW1lIjoiaW5kZXhhZG1pbiIsImFkbWluaXN0cmF0b3IiOnRydWV9LCJleHAiOjE2ODYyMTU3ODh9.4k8ty27DiWwOk4WVcYEhIrAndhpXMRWnLZ3i_HlJnvI" \
//!   --request GET \
//!   "http://127.0.0.1:3001/v1/settings"
//! ```
//!
//! **Example response** `200`
//!
//! ```json
//! {
//!   "data": {
//!     "website": {
//!       "name": "Torrust"
//!     },
//!     "tracker": {
//!       "url": "udp://localhost:6969",
//!       "mode": "Public",
//!       "api_url": "http://localhost:1212",
//!       "token": "MyAccessToken",
//!       "token_valid_seconds": 7257600
//!     },
//!     "net": {
//!       "port": 3001,
//!       "base_url": null
//!     },
//!     "auth": {
//!       "email_on_signup": "Optional",
//!       "min_password_length": 6,
//!       "max_password_length": 64,
//!       "secret_key": "MaxVerstappenWC2021"
//!     },
//!     "database": {
//!       "connect_url": "sqlite://./storage/database/data.db?mode=rwc"
//!     },
//!     "mail": {
//!       "email_verification_enabled": false,
//!       "from": "example@email.com",
//!       "reply_to": "noreply@email.com",
//!       "username": "",
//!       "password": "",
//!       "server": "",
//!       "port": 25
//!     },
//!     "image_cache": {
//!       "max_request_timeout_ms": 1000,
//!       "capacity": 128000000,
//!       "entry_size_limit": 4000000,
//!       "user_quota_period_seconds": 3600,
//!       "user_quota_bytes": 64000000
//!     },
//!     "api": {
//!       "default_torrent_page_size": 10,
//!       "max_torrent_page_size": 30
//!     },
//!     "tracker_statistics_importer": {
//!       "torrent_info_update_interval": 3600
//!     }
//!   }
//! }
//! ```
//! **Resource**
//!
//! Refer to the [`TorrustBackend`](crate::config::TorrustBackend)
//! struct for more information about the response attributes.
//!
//! # Update all settings
//!
//! **NOTICE**: This endpoint to update the settings does not work when you use
//! environment variables to configure the application. You need to use a
//! configuration file instead. Because settings are persisted in that file.
//! Refer to the issue [#144](https://github.com/torrust/torrust-index-backend/issues/144)
//! for more information.
//!
//! `POST /v1/settings`
//!
//! **Example request**
//!
//! ```bash
//! curl \
//!   --header "Content-Type: application/json" \
//!   --header "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjp7InVzZXJfaWQiOjEsInVzZXJuYW1lIjoiaW5kZXhhZG1pbiIsImFkbWluaXN0cmF0b3IiOnRydWV9LCJleHAiOjE2ODYyMTU3ODh9.4k8ty27DiWwOk4WVcYEhIrAndhpXMRWnLZ3i_HlJnvI" \
//!   --request POST \
//!   --data '{"website":{"name":"Torrust"},"tracker":{"url":"udp://localhost:6969","mode":"Public","api_url":"http://localhost:1212","token":"MyAccessToken","token_valid_seconds":7257600},"net":{"port":3001,"base_url":null},"auth":{"email_on_signup":"Optional","min_password_length":6,"max_password_length":64,"secret_key":"MaxVerstappenWC2021"},"database":{"connect_url":"sqlite://./storage/database/data.db?mode=rwc"},"mail":{"email_verification_enabled":false,"from":"example@email.com","reply_to":"noreply@email.com","username":"","password":"","server":"","port":25},"image_cache":{"max_request_timeout_ms":1000,"capacity":128000000,"entry_size_limit":4000000,"user_quota_period_seconds":3600,"user_quota_bytes":64000000},"api":{"default_torrent_page_size":10,"max_torrent_page_size":30},"tracker_statistics_importer":{"torrent_info_update_interval":3600}}' \
//!   "http://127.0.0.1:3001/v1/settings"
//! ```
//!
//! The response contains the settings that were updated.
//!
//! **Resource**
//!
//! Refer to the [`TorrustBackend`](crate::config::TorrustBackend)
//! struct for more information about the response attributes.
//!
//! # Get site name
//!
//! `GET /v1/settings/name`
//!
//! It returns the name of the site.
//!
//! **Example request**
//!
//! ```bash
//! curl \
//!   --header "Content-Type: application/json" \
//!   --request GET \
//!   "http://127.0.0.1:3001/v1/settings/name"
//! ```
//!
//! **Example response** `200`
//!
//! ```json
//! {
//!   "data":"Torrust"
//! }
//! ```
//!
//! # Get public settings
//!
//! `GET /v1/settings/public`
//!
//! It returns all the public settings.
//!
//! **Example request**
//!
//! ```bash
//! curl \
//!   --header "Content-Type: application/json" \
//!   --request GET \
//!   "http://127.0.0.1:3001/v1/settings/public"
//! ```
//!
//! **Example response** `200`
//!
//! ```json
//! {
//!   "data": {
//!     "website_name": "Torrust",
//!     "tracker_url": "udp://localhost:6969",
//!     "tracker_mode": "Public",
//!     "email_on_signup": "Optional"
//!   }
//! }
//! ```
//!
//! **Resource**
//!
//! Refer to the [`ConfigurationPublic`](crate::config::ConfigurationPublic)
//! struct for more information about the response attributes.
pub mod handlers;
pub mod routes;