Compare commits

..

No commits in common. "main" and "0.0.5" have entirely different histories.
main ... 0.0.5

3 changed files with 23 additions and 47 deletions

2
Cargo.lock generated
View file

@ -34,7 +34,7 @@ dependencies = [
[[package]] [[package]]
name = "api-backend" name = "api-backend"
version = "0.0.8" version = "0.0.5"
dependencies = [ dependencies = [
"axum", "axum",
"chrono", "chrono",

View file

@ -1,7 +1,7 @@
[package] [package]
authors = ["Neshura"] authors = ["Neshura"]
name = "api-backend" name = "api-backend"
version = "0.0.8" version = "0.0.5"
edition = "2021" edition = "2021"
description = "API Backend For Easier Uploading To Kavita" description = "API Backend For Easier Uploading To Kavita"
license = "GPL-3.0-or-later" license = "GPL-3.0-or-later"

View file

@ -1,6 +1,7 @@
mod logging; mod logging;
use std::collections::HashMap; use std::collections::HashMap;
use std::fmt::format;
use std::path::{Path, PathBuf}; use std::path::{Path, PathBuf};
use axum::body::BodyDataStream; use axum::body::BodyDataStream;
use axum::extract::{Request, State}; use axum::extract::{Request, State};
@ -10,7 +11,8 @@ use axum::routing::post;
use dotenv::{dotenv, var}; use dotenv::{dotenv, var};
use futures::TryStreamExt; use futures::TryStreamExt;
use log::LevelFilter; use log::LevelFilter;
use serde::{Deserialize, Serialize}; use reqwest::{Error, Response};
use serde::Serialize;
use systemd_journal_logger::JournalLog; use systemd_journal_logger::JournalLog;
use tokio::fs::File; use tokio::fs::File;
use tokio::{fs, io}; use tokio::{fs, io};
@ -198,15 +200,10 @@ async fn upload_file(state: &mut App, request: Request) {
///$KAVITA_URL/api/Library/scan-folder ///$KAVITA_URL/api/Library/scan-folder
let client = reqwest::Client::new(); let client = reqwest::Client::new();
let jwt_url = format!("{}/api/Plugin/authenticate?apiKey={}&pluginName=kwm-api", var("KAVITA_URL").expect("KAVITA_URL needs to be set in the .env file"), var("KAVITA_API_KEY").expect("KAVITA_API_KEY needs to be set in the .env file"));
match client.post(jwt_url).send().await {
Ok(data) => {
let auth: PluginAuthResponse = serde_json::from_str(&data.text().await.unwrap()).unwrap();
let url = format!("{}/api/Library/scan-folder", var("KAVITA_URL").expect("KAVITA_URL needs to be set in the .env file")); let url = format!("{}/api/Library/scan-folder", var("KAVITA_URL").expect("KAVITA_URL needs to be set in the .env file"));
let request_body = LibraryScanBody { let request_body = LibraryScanBody {
folder_path: file.format, directory: file.format,
api_key: var("KAVITA_API_KEY").expect("KAVITA_API_KEY needs to be set in the .env file") api_key: var("KAVITA_API_KEY").expect("KAVITA_API_KEY needs to be set in the .env file")
}; };
@ -214,7 +211,6 @@ async fn upload_file(state: &mut App, request: Request) {
let res = client let res = client
.post(url) .post(url)
.header(reqwest::header::AUTHORIZATION, auth.token)
.body(body) .body(body)
.send() .send()
.await; .await;
@ -227,14 +223,6 @@ async fn upload_file(state: &mut App, request: Request) {
state.log.error(format!("Error Triggering Library Scan: {e}")); state.log.error(format!("Error Triggering Library Scan: {e}"));
} }
} }
}
Err(e) => {
}
}
} }
async fn stream_to_file(path: &PathBuf, stream: BodyDataStream) -> Result<(), (StatusCode, String)> async fn stream_to_file(path: &PathBuf, stream: BodyDataStream) -> Result<(), (StatusCode, String)>
@ -261,18 +249,6 @@ async fn stream_to_file(path: &PathBuf, stream: BodyDataStream) -> Result<(), (S
#[derive(Serialize)] #[derive(Serialize)]
#[serde(rename_all="camelCase")] #[serde(rename_all="camelCase")]
struct LibraryScanBody { struct LibraryScanBody {
folder_path: String, directory: String,
api_key: String, api_key: String,
} }
#[derive(Deserialize)]
#[serde(rename_all="camelCase")]
struct PluginAuthResponse {
username: String,
token: String,
refresh_token: String,
api_key: String,
preferences: serde_json::Value,
age_restriction: serde_json::Value,
kavita_version: String
}