Implemented version endpoint
This commit is contained in:
parent
e248f3b983
commit
052dc88f14
9 changed files with 62 additions and 17 deletions
13
src/service/actix/api.rs
Normal file
13
src/service/actix/api.rs
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
use actix_web::{get, HttpResponse};
|
||||||
|
|
||||||
|
use crate::service::constants::*;
|
||||||
|
use crate::service::dto;
|
||||||
|
|
||||||
|
#[get("/version")]
|
||||||
|
pub async fn get_version() -> Result<HttpResponse, actix_web::Error> {
|
||||||
|
let current_version = dto::Version {
|
||||||
|
major: CURRENT_MAJOR_VERSION,
|
||||||
|
minor: CURRENT_MINOR_VERSION,
|
||||||
|
};
|
||||||
|
Ok(HttpResponse::Ok().json(current_version))
|
||||||
|
}
|
|
@ -4,6 +4,7 @@ use std::path::Path;
|
||||||
|
|
||||||
pub mod server;
|
pub mod server;
|
||||||
|
|
||||||
|
mod api;
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests;
|
mod tests;
|
||||||
|
|
||||||
|
@ -15,6 +16,7 @@ fn configure_app(
|
||||||
swagger_dir_path: &Path,
|
swagger_dir_path: &Path,
|
||||||
) {
|
) {
|
||||||
// TODO logging
|
// TODO logging
|
||||||
cfg.service(fs::Files::new(swagger_url, swagger_dir_path).index_file("index.html"))
|
cfg.service(web::scope("/api").service(api::get_version))
|
||||||
|
.service(fs::Files::new(swagger_url, swagger_dir_path).index_file("index.html"))
|
||||||
.service(fs::Files::new(web_url, web_dir_path).index_file("index.html"));
|
.service(fs::Files::new(web_url, web_dir_path).index_file("index.html"));
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
use actix_web::body::Body::Bytes;
|
||||||
|
use actix_web::dev::*;
|
||||||
|
use actix_web::test::TestRequest;
|
||||||
|
use actix_web::{test, App};
|
||||||
|
|
||||||
|
use crate::service::dto;
|
||||||
|
|
||||||
|
#[actix_rt::test]
|
||||||
|
async fn test_version() {
|
||||||
|
let app = App::new().configure(super::configure_test_app);
|
||||||
|
let mut service = test::init_service(app).await;
|
||||||
|
let req = TestRequest::get().uri("/api/version").to_request();
|
||||||
|
let resp = service.call(req).await.unwrap();
|
||||||
|
assert!(resp.status().is_success());
|
||||||
|
|
||||||
|
let body = match resp.response().body().as_ref() {
|
||||||
|
Some(Bytes(bytes)) => bytes,
|
||||||
|
_ => panic!("Response error"),
|
||||||
|
};
|
||||||
|
|
||||||
|
let response_json: dto::Version = serde_json::from_slice(body).unwrap();
|
||||||
|
assert_eq!(response_json, dto::Version { major: 4, minor: 0 });
|
||||||
|
}
|
|
@ -1,5 +1,6 @@
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
|
|
||||||
|
mod api;
|
||||||
mod swagger;
|
mod swagger;
|
||||||
mod web;
|
mod web;
|
||||||
|
|
||||||
|
|
5
src/service/constants.rs
Normal file
5
src/service/constants.rs
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
pub const CURRENT_MAJOR_VERSION: i32 = 4;
|
||||||
|
pub const CURRENT_MINOR_VERSION: i32 = 0;
|
||||||
|
pub const COOKIE_SESSION: &str = "session";
|
||||||
|
pub const COOKIE_USERNAME: &str = "username";
|
||||||
|
pub const COOKIE_ADMIN: &str = "admin";
|
7
src/service/dto.rs
Normal file
7
src/service/dto.rs
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
|
#[derive(PartialEq, Debug, Serialize, Deserialize)]
|
||||||
|
pub struct Version {
|
||||||
|
pub major: i32,
|
||||||
|
pub minor: i32,
|
||||||
|
}
|
|
@ -1,3 +1,6 @@
|
||||||
|
mod constants;
|
||||||
|
mod dto;
|
||||||
|
|
||||||
#[cfg(feature = "service-actix")]
|
#[cfg(feature = "service-actix")]
|
||||||
mod actix;
|
mod actix;
|
||||||
#[cfg(feature = "service-actix")]
|
#[cfg(feature = "service-actix")]
|
||||||
|
|
|
@ -20,17 +20,13 @@ use crate::db::DB;
|
||||||
use crate::index;
|
use crate::index;
|
||||||
use crate::lastfm;
|
use crate::lastfm;
|
||||||
use crate::playlist;
|
use crate::playlist;
|
||||||
|
use crate::service::constants::*;
|
||||||
|
use crate::service::dto;
|
||||||
use crate::thumbnails;
|
use crate::thumbnails;
|
||||||
use crate::user;
|
use crate::user;
|
||||||
use crate::utils;
|
use crate::utils;
|
||||||
use crate::vfs::VFSSource;
|
use crate::vfs::VFSSource;
|
||||||
|
|
||||||
const CURRENT_MAJOR_VERSION: i32 = 4;
|
|
||||||
const CURRENT_MINOR_VERSION: i32 = 0;
|
|
||||||
const COOKIE_SESSION: &str = "session";
|
|
||||||
const COOKIE_USERNAME: &str = "username";
|
|
||||||
const COOKIE_ADMIN: &str = "admin";
|
|
||||||
|
|
||||||
pub fn get_routes() -> Vec<rocket::Route> {
|
pub fn get_routes() -> Vec<rocket::Route> {
|
||||||
routes![
|
routes![
|
||||||
version,
|
version,
|
||||||
|
@ -207,15 +203,9 @@ impl From<VFSPathBuf> for PathBuf {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(PartialEq, Debug, Serialize, Deserialize)]
|
|
||||||
pub struct Version {
|
|
||||||
pub major: i32,
|
|
||||||
pub minor: i32,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[get("/version")]
|
#[get("/version")]
|
||||||
fn version() -> Json<Version> {
|
fn version() -> Json<dto::Version> {
|
||||||
let current_version = Version {
|
let current_version = dto::Version {
|
||||||
major: CURRENT_MAJOR_VERSION,
|
major: CURRENT_MAJOR_VERSION,
|
||||||
minor: CURRENT_MINOR_VERSION,
|
minor: CURRENT_MINOR_VERSION,
|
||||||
};
|
};
|
||||||
|
|
|
@ -8,6 +8,7 @@ use super::api;
|
||||||
use crate::config;
|
use crate::config;
|
||||||
use crate::ddns;
|
use crate::ddns;
|
||||||
use crate::index;
|
use crate::index;
|
||||||
|
use crate::service::dto;
|
||||||
use crate::vfs;
|
use crate::vfs;
|
||||||
|
|
||||||
use super::test::get_test_environment;
|
use super::test::get_test_environment;
|
||||||
|
@ -57,8 +58,8 @@ fn version() {
|
||||||
assert_eq!(response.status(), Status::Ok);
|
assert_eq!(response.status(), Status::Ok);
|
||||||
|
|
||||||
let response_body = response.body_string().unwrap();
|
let response_body = response.body_string().unwrap();
|
||||||
let response_json: api::Version = serde_json::from_str(&response_body).unwrap();
|
let response_json: dto::Version = serde_json::from_str(&response_body).unwrap();
|
||||||
assert_eq!(response_json, api::Version { major: 4, minor: 0 });
|
assert_eq!(response_json, dto::Version { major: 4, minor: 0 });
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
Loading…
Add table
Reference in a new issue