about summary refs log tree commit diff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs50
1 files changed, 36 insertions, 14 deletions
diff --git a/src/main.rs b/src/main.rs
index 0e57ed5..e91476b 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -10,14 +10,14 @@ async fn main() -> Result<(), std::io::Error> {
 
     info!("Starting the kittybox server...");
 
-    let redis_uri: String;
-    match env::var("REDIS_URI") {
+    let backend_uri: String;
+    match env::var("BACKEND_URI") {
         Ok(val) => {
-            debug!("Redis connection: {}", val);
-            redis_uri = val
+            debug!("Backend URI: {}", val);
+            backend_uri = val
         }
         Err(_) => {
-            error!("REDIS_URI is not set, cannot find a database");
+            error!("BACKEND_URI is not set, cannot find a database");
             std::process::exit(1);
         }
     };
@@ -63,13 +63,35 @@ async fn main() -> Result<(), std::io::Error> {
     let host = env::var("SERVE_AT")
         .ok()
         .unwrap_or_else(|| "0.0.0.0:8080".to_string());
-    let app = kittybox::get_app_with_redis(
-        token_endpoint,
-        authorization_endpoint,
-        redis_uri,
-        media_endpoint,
-        internal_token,
-    )
-    .await;
-    app.listen(host).await
+
+    if backend_uri.starts_with("redis") {
+        #[cfg(redis)]
+        {
+            let app = kittybox::get_app_with_redis(
+                token_endpoint,
+                authorization_endpoint,
+                backend_uri,
+                media_endpoint,
+                internal_token,
+            ).await;
+            app.listen(host).await
+        }
+        #[cfg(not(redis))]
+        {
+            println!("The Redis backend was disabled at build-time. Please recompile the package with --features=redis.");
+            std::process::exit(1);
+        }
+    } else if backend_uri.starts_with("file") {
+        let app = kittybox::get_app_with_file(
+            token_endpoint,
+            authorization_endpoint,
+            backend_uri,
+            media_endpoint,
+            internal_token
+        ).await;
+        app.listen(host).await
+    } else {
+        println!("Unknown backend, not starting.");
+        std::process::exit(1);
+    }
 }