diff --git a/README.md b/README.md index 6e4fe66..0417802 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,8 @@ The service provides a convenient means of sharing files without the necessity f **Requirements** - [rust](https://www.rust-lang.org/tools/install) +- [curl](https://curl.se/) +- [qr](https://jqlang.github.io/jq/) - [docker](https://www.docker.com/) - [docker-compose](https://docs.docker.com/compose/) @@ -23,7 +25,7 @@ The service provides a convenient means of sharing files without the necessity f * Anonymous Uploads * File Expiration * Burn After Reading -* QRCode +* QR code Generator * Command Line Interface (CLI) **Run Backend Service Locally** @@ -54,8 +56,8 @@ $ docker run --name pf-api --rm -p 8080:8080 \ ```sh # Ping the server. $ curl -X GET http://127.0.0.1:8080/healthz -# Upload a file. -$ curl -F "file=@{file_name}" 127.0.0.1:8080/upload +# Upload a file and then get download url. +$ curl -s -F "file=@{file_name}" 127.0.0.1:8080/upload | jq -r '.url' # Download file. $ curl -o {file_name} http://127.0.0.1:8080/{code}/{file_name} # Upload a file with basic authentication. diff --git a/api/src/database/mod.rs b/api/src/database/mod.rs index 578434b..c008ace 100644 --- a/api/src/database/mod.rs +++ b/api/src/database/mod.rs @@ -9,7 +9,7 @@ use crate::{ error::{ApiError, ApiResult}, }; use chrono::{DateTime, Utc}; -use sdk::model::response::MetaDataFileResponse; +use sdk::dto::response::MetaDataFileResponse; use serde::{Deserialize, Serialize}; use sled::IVec; use std::sync::RwLock; diff --git a/api/src/handler/file.rs b/api/src/handler/file.rs index 42d5e8a..a1f5bf1 100644 --- a/api/src/handler/file.rs +++ b/api/src/handler/file.rs @@ -6,7 +6,7 @@ use axum::{ Json, }; -use sdk::model::{ +use sdk::dto::{ request::UploadQueryParam, response::{MessageResponse, MetaDataFileResponse, UploadResponse}, }; diff --git a/api/src/handler/mod.rs b/api/src/handler/mod.rs index 3cb8aed..085c28b 100644 --- a/api/src/handler/mod.rs +++ b/api/src/handler/mod.rs @@ -1,7 +1,7 @@ pub mod file; use axum::Json; -use sdk::model::response::MessageResponse; +use sdk::dto::response::MessageResponse; pub async fn health_check() -> Json { Json(MessageResponse { diff --git a/api/src/service/file.rs b/api/src/service/file.rs index 1dbcf3c..cbf216d 100644 --- a/api/src/service/file.rs +++ b/api/src/service/file.rs @@ -6,7 +6,7 @@ use axum::extract::multipart::Field; use axum::extract::Multipart; use chrono::{DateTime, Utc}; use futures_util::TryStreamExt; -use sdk::model::request::UploadQueryParam; +use sdk::dto::request::UploadQueryParam; use std::path::PathBuf; use tokio::fs::File; use tokio::io::BufWriter; diff --git a/api/tests/api/helper/mod.rs b/api/tests/api/helper/mod.rs index df84805..a49492b 100644 --- a/api/tests/api/helper/mod.rs +++ b/api/tests/api/helper/mod.rs @@ -8,7 +8,7 @@ use api::util::tracing::INIT_SUBSCRIBER; use fake::{Fake, Faker}; use once_cell::sync::Lazy; use sdk::client::PasteFileClient; -use sdk::model::request::UploadQueryParam; +use sdk::dto::request::UploadQueryParam; use test_context::AsyncTestContext; pub struct ApiTestContext { diff --git a/api/tests/api/upload_api_test.rs b/api/tests/api/upload_api_test.rs index 3edae95..5326485 100644 --- a/api/tests/api/upload_api_test.rs +++ b/api/tests/api/upload_api_test.rs @@ -1,5 +1,5 @@ use api::{assert_err, assert_ok}; -use sdk::{error::BodyResponseError, model::request::UploadQueryParam}; +use sdk::{dto::request::UploadQueryParam, error::BodyResponseError}; use test_context::test_context; use crate::helper::ApiTestContext; diff --git a/cli/src/main.rs b/cli/src/main.rs index 3f4ed8b..2d48fd9 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -1,6 +1,6 @@ use anyhow::anyhow; use clap::{Parser, Subcommand}; -use sdk::{client::PasteFileClient, model::request::UploadQueryParam, result::ApiResponseResult}; +use sdk::{client::PasteFileClient, dto::request::UploadQueryParam, result::ApiResponseResult}; use std::{error::Error, path::PathBuf}; use tokio::io::AsyncWriteExt; @@ -191,7 +191,7 @@ mod tests { use fake::{Fake, Faker}; use once_cell::sync::Lazy; use project_root::get_project_root; - use sdk::model::response::{MessageResponse, MetaDataFileResponse, UploadResponse}; + use sdk::dto::response::{MessageResponse, MetaDataFileResponse, UploadResponse}; use std::process::Stdio; use test_context::AsyncTestContext; use tokio::io::AsyncWriteExt; diff --git a/sdk/examples/upload.rs b/sdk/examples/upload.rs index 3fe8ed6..24c5e12 100644 --- a/sdk/examples/upload.rs +++ b/sdk/examples/upload.rs @@ -1,4 +1,4 @@ -use sdk::{client::PasteFileClient, model::request::UploadQueryParam}; +use sdk::{client::PasteFileClient, dto::request::UploadQueryParam}; const SERVER_URL: &str = "127.0.0.1:8080"; diff --git a/sdk/src/client.rs b/sdk/src/client.rs index e3a5ea7..59fc202 100644 --- a/sdk/src/client.rs +++ b/sdk/src/client.rs @@ -1,11 +1,11 @@ use std::path::Path; use crate::{ - error::BodyResponseError, - model::{ + dto::{ request::UploadQueryParam, response::{MetaDataFileResponse, UploadResponse}, }, + error::BodyResponseError, result::ApiResponseResult, util::progress::progress_bar, }; diff --git a/sdk/src/model/mod.rs b/sdk/src/dto/mod.rs similarity index 100% rename from sdk/src/model/mod.rs rename to sdk/src/dto/mod.rs diff --git a/sdk/src/model/request.rs b/sdk/src/dto/request.rs similarity index 100% rename from sdk/src/model/request.rs rename to sdk/src/dto/request.rs diff --git a/sdk/src/model/response.rs b/sdk/src/dto/response.rs similarity index 100% rename from sdk/src/model/response.rs rename to sdk/src/dto/response.rs diff --git a/sdk/src/lib.rs b/sdk/src/lib.rs index a46e0f8..c022622 100644 --- a/sdk/src/lib.rs +++ b/sdk/src/lib.rs @@ -1,5 +1,5 @@ pub mod client; +pub mod dto; pub mod error; -pub mod model; pub mod result; pub mod util; diff --git a/sdk/src/result.rs b/sdk/src/result.rs index ec11673..37b17cc 100644 --- a/sdk/src/result.rs +++ b/sdk/src/result.rs @@ -1,6 +1,6 @@ use serde::{Deserialize, Serialize}; -use crate::{error::BodyResponseError, model::response::MessageResponse}; +use crate::{dto::response::MessageResponse, error::BodyResponseError}; #[derive(Debug, Serialize, Deserialize)] #[serde(untagged)]