Radarr v3 shim for Jellyseerr (#62)
This commit was merged in pull request #62.
This commit is contained in:
@@ -3,9 +3,12 @@
|
||||
mod config;
|
||||
|
||||
use std::process::ExitCode;
|
||||
use std::sync::Arc;
|
||||
|
||||
use arr_api::{AppState, Upstreams};
|
||||
use arr_compat::CompatState;
|
||||
use arr_db::Db;
|
||||
use arr_meta::TmdbClient;
|
||||
use config::Config;
|
||||
use tower_http::trace::TraceLayer;
|
||||
|
||||
@@ -59,6 +62,8 @@ enum Error {
|
||||
Database(#[from] sqlx::Error),
|
||||
#[error("database migration: {0}")]
|
||||
Migration(#[from] sqlx::migrate::MigrateError),
|
||||
#[error("tmdb client: {0}")]
|
||||
Tmdb(#[from] arr_meta::Error),
|
||||
#[error("bind {addr}: {source}")]
|
||||
Bind {
|
||||
addr: std::net::SocketAddr,
|
||||
@@ -73,6 +78,13 @@ async fn run() -> Result<(), Error> {
|
||||
let database = Db::connect(&config.database_path).await?;
|
||||
database.migrate().await?;
|
||||
|
||||
// Jellyseerr's Radarr shim (DESIGN.md §9.4) reads the same database and
|
||||
// needs its own TMDB client for `movie/lookup`.
|
||||
let mut compat = CompatState::new(database.clone());
|
||||
if let Some(key) = &config.tmdb_api_key {
|
||||
compat = compat.with_tmdb(Arc::new(TmdbClient::new(key)?));
|
||||
}
|
||||
|
||||
let state = AppState::new(
|
||||
Upstreams::new(config.prowlarr_url, config.transmission_url)
|
||||
.with_prowlarr_api_key(config.prowlarr_api_key)
|
||||
@@ -80,7 +92,9 @@ async fn run() -> Result<(), Error> {
|
||||
)?
|
||||
.with_database(database);
|
||||
|
||||
let app = arr_api::router(state).layer(TraceLayer::new_for_http());
|
||||
let app = arr_api::router(state)
|
||||
.merge(arr_compat::router(compat))
|
||||
.layer(TraceLayer::new_for_http());
|
||||
|
||||
let listener = tokio::net::TcpListener::bind(config.bind_addr)
|
||||
.await
|
||||
|
||||
Reference in New Issue
Block a user