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]]
name = "api-backend"
version = "0.0.8"
version = "0.0.5"
dependencies = [
"axum",
"chrono",

View file

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

View file

@ -1,6 +1,7 @@
mod logging;
use std::collections::HashMap;
use std::fmt::format;
use std::path::{Path, PathBuf};
use axum::body::BodyDataStream;
use axum::extract::{Request, State};
@ -10,7 +11,8 @@ use axum::routing::post;
use dotenv::{dotenv, var};
use futures::TryStreamExt;
use log::LevelFilter;
use serde::{Deserialize, Serialize};
use reqwest::{Error, Response};
use serde::Serialize;
use systemd_journal_logger::JournalLog;
use tokio::fs::File;
use tokio::{fs, io};
@ -198,43 +200,29 @@ async fn upload_file(state: &mut App, request: Request) {
///$KAVITA_URL/api/Library/scan-folder
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"));
let url = format!("{}/api/Library/scan-folder", var("KAVITA_URL").expect("KAVITA_URL 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 request_body = LibraryScanBody {
directory: file.format,
api_key: var("KAVITA_API_KEY").expect("KAVITA_API_KEY needs to be set in the .env file")
};
let body = serde_json::to_string::<LibraryScanBody>(&request_body).expect("Unable to Parse LibraryScanBody");
let request_body = LibraryScanBody {
folder_path: file.format,
api_key: var("KAVITA_API_KEY").expect("KAVITA_API_KEY needs to be set in the .env file")
};
let body = serde_json::to_string::<LibraryScanBody>(&request_body).expect("Unable to Parse LibraryScanBody");
let res = client
.post(url)
.header(reqwest::header::AUTHORIZATION, auth.token)
.body(body)
.send()
.await;
match res {
Ok(_) => {
state.log.info("Scan Triggered".to_string());
}
Err(e) => {
state.log.error(format!("Error Triggering Library Scan: {e}"));
}
}
let res = client
.post(url)
.body(body)
.send()
.await;
match res {
Ok(_) => {
state.log.info("Scan Triggered".to_string());
}
Err(e) => {
state.log.error(format!("Error Triggering Library Scan: {e}"));
}
}
}
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)]
#[serde(rename_all="camelCase")]
struct LibraryScanBody {
folder_path: String,
directory: 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
}