Skip to content

Commit fb24737

Browse files
cli-s1ncocool97
authored andcommitted
chore(api): clean routes management code
1 parent 3be9d31 commit fb24737

20 files changed

+136
-467
lines changed

Cargo.lock

Lines changed: 37 additions & 38 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,6 @@ sea-orm-migration = "1.1.17"
3636
serde = {version = "1.0.228", default-features = false, features = ["derive"]}
3737
serde_json = "1.0.145"
3838
serde_norway = "0.9.42"
39-
strum = "0.27.2"
40-
strum_macros = "0.27.2"
4139
tokio = "1.47.1"
4240
tower = "0.5.2"
4341
tower-http = "0.6.6"

cli/src/server_controller.rs

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use std::collections::BTreeMap;
33
use anyhow::{Result, bail};
44
use appledb_common::api_models::{ServerErrorResponse, TaskProgress};
55
use appledb_common::db_models::OperatingSystem;
6-
use appledb_common::routes::{AdminRoutes, PublicRoutes};
6+
use appledb_common::routes::{ADMIN_ROUTES_PREFIX, PUBLIC_ROUTES_PREFIX};
77
use appledb_common::{IPSWEntitlements, IPSWFrameworks};
88
use reqwest::{Client, ClientBuilder, StatusCode};
99
use serde::Serialize;
@@ -47,11 +47,11 @@ impl ServerController {
4747
}
4848

4949
fn gen_admin_url<S: AsRef<str>>(&self, path: S) -> String {
50-
self.gen_url(format!("{}{}", AdminRoutes::route_prefix(), path.as_ref()))
50+
self.gen_url(format!("{ADMIN_ROUTES_PREFIX}{}", path.as_ref()))
5151
}
5252

5353
fn gen_public_url<S: AsRef<str>>(&self, path: S) -> String {
54-
self.gen_url(format!("{}{}", PublicRoutes::route_prefix(), path.as_ref()))
54+
self.gen_url(format!("{PUBLIC_ROUTES_PREFIX}{}", path.as_ref()))
5555
}
5656

5757
async fn get<T: DeserializeOwned>(&self, url: String) -> Result<T> {
@@ -63,7 +63,7 @@ impl ServerController {
6363
}
6464

6565
pub async fn get_operating_systems(&self) -> Result<Vec<OperatingSystem>> {
66-
self.get(self.gen_public_url(PublicRoutes::GetOperatingSystems.to_string()))
66+
self.get(self.gen_public_url("/operating_systems/all"))
6767
.await
6868
}
6969

@@ -72,24 +72,17 @@ impl ServerController {
7272
entitlements: IPSWEntitlements,
7373
) -> Result<String> {
7474
return self
75-
.post(
76-
self.gen_admin_url(AdminRoutes::PostExecutableEntitlements.to_string()),
77-
entitlements,
78-
)
75+
.post(self.gen_admin_url("/executable/entitlements"), entitlements)
7976
.await;
8077
}
8178

8279
pub async fn post_executable_frameworks(&self, frameworks: IPSWFrameworks) -> Result<String> {
8380
return self
84-
.post(
85-
self.gen_admin_url(AdminRoutes::PostExecutableFrameworks.to_string()),
86-
frameworks,
87-
)
81+
.post(self.gen_admin_url("/executable/frameworks"), frameworks)
8882
.await;
8983
}
9084

9185
pub async fn get_running_tasks(&self) -> Result<BTreeMap<String, TaskProgress>> {
92-
self.get(self.gen_public_url(PublicRoutes::GetRunningTasks.to_string()))
93-
.await
86+
self.get(self.gen_public_url("/tasks/running")).await
9487
}
9588
}

common/Cargo.toml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@ anyhow = { workspace = true }
1313
entity = { workspace = true }
1414
serde = { workspace = true }
1515
serde_json = { workspace = true }
16-
strum = { workspace = true }
17-
strum_macros = { workspace = true }
1816
tokio = { workspace = true, features = ["fs"] }
1917
url = { workspace = true }
2018
utoipa = { workspace = true, features = ["axum_extras"] }

common/src/routes.rs

Lines changed: 2 additions & 132 deletions
Original file line numberDiff line numberDiff line change
@@ -1,132 +1,2 @@
1-
use std::fmt::Display;
2-
3-
use strum_macros::EnumCount;
4-
5-
// ##################
6-
// Admin-specific routes (authentication required)
7-
// ##################
8-
#[derive(EnumCount)]
9-
pub enum AdminRoutes {
10-
StopRunningTask,
11-
PostExecutableEntitlements,
12-
PostExecutableFrameworks,
13-
}
14-
15-
impl AdminRoutes {
16-
pub fn route_prefix() -> &'static str {
17-
"/api/admin"
18-
}
19-
}
20-
21-
impl From<AdminRoutes> for String {
22-
fn from(value: AdminRoutes) -> Self {
23-
String::from(&value)
24-
}
25-
}
26-
27-
impl From<&AdminRoutes> for String {
28-
fn from(value: &AdminRoutes) -> Self {
29-
match value {
30-
AdminRoutes::StopRunningTask => "/tasks/{task_id}/stop".to_string(),
31-
AdminRoutes::PostExecutableEntitlements => "/executable/entitlements".to_string(),
32-
AdminRoutes::PostExecutableFrameworks => "/executable/frameworks".to_string(),
33-
}
34-
}
35-
}
36-
37-
impl Display for AdminRoutes {
38-
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
39-
write!(f, "{}", String::from(self))
40-
}
41-
}
42-
43-
// ##################
44-
// Public routes
45-
// ##################
46-
#[derive(EnumCount)]
47-
pub enum PublicRoutes {
48-
// Get stats about server
49-
GetStats,
50-
51-
// Operating systems
52-
GetOperatingSystems,
53-
GetOperatingSystemById,
54-
55-
// Devices
56-
GetDevices,
57-
GetDeviceVersions,
58-
59-
// Operating system versions
60-
GetOperatingSystemVersions,
61-
GetOperatingSystemVersionsById,
62-
GetOperatingSystemVersionsExtended,
63-
GetOperatingSystemVersionsExecutables,
64-
GetOperatingSystemVersionsFrameworks,
65-
66-
// Executables
67-
GetExecutableVersions,
68-
GetExecutableEntitlements,
69-
GetAllExecutables,
70-
GetAllExecutablesEntitlements,
71-
GetDiffExecutablesOperatingSystemVersion,
72-
73-
// Entitlements
74-
GetDiffEntitlementsExecutables,
75-
76-
// Frameworks
77-
GetDiffFrameworksExecutables,
78-
GetExecutableFrameworks,
79-
GetAllFrameworks,
80-
GetFrameworkVersions,
81-
GetFrameworkExecutables,
82-
83-
// Tasks
84-
GetRunningTasks,
85-
}
86-
87-
impl PublicRoutes {
88-
pub fn route_prefix() -> &'static str {
89-
"/api/v1"
90-
}
91-
}
92-
93-
impl From<PublicRoutes> for String {
94-
fn from(value: PublicRoutes) -> Self {
95-
String::from(&value)
96-
}
97-
}
98-
99-
impl From<&PublicRoutes> for String {
100-
fn from(value: &PublicRoutes) -> Self {
101-
match value {
102-
PublicRoutes::GetStats => "/stats".to_string(),
103-
PublicRoutes::GetOperatingSystems => "/operating_systems/all".to_string(),
104-
PublicRoutes::GetOperatingSystemById => "/operating_systems/{id}".to_string(),
105-
PublicRoutes::GetAllExecutablesEntitlements =>"/operating_systems/{id}/executable_entitlements".to_string(),
106-
PublicRoutes::GetAllExecutables => "/executables/all".to_string(),
107-
PublicRoutes::GetDevices => "/devices/all".to_string(),
108-
PublicRoutes::GetDeviceVersions => "/device/{id}/operating_system_versions".to_string(),
109-
PublicRoutes::GetOperatingSystemVersions => "/operating_system_versions/all".to_string(),
110-
PublicRoutes::GetOperatingSystemVersionsById => "/operating_system_versions/{id}".to_string(),
111-
PublicRoutes::GetOperatingSystemVersionsExtended => "/operating_system_versions/extended".to_string(),
112-
PublicRoutes::GetOperatingSystemVersionsExecutables => "/operating_system_versions/{operating_system_version_id}/executables".to_string(),
113-
PublicRoutes::GetOperatingSystemVersionsFrameworks => "/operating_system_versions/{operating_system_version_id}/frameworks".to_string(),
114-
PublicRoutes::GetExecutableVersions => "/executables/{id}/versions".to_string(),
115-
PublicRoutes::GetExecutableEntitlements => "/executable/{id}/entitlements".to_string(),
116-
PublicRoutes::GetDiffExecutablesOperatingSystemVersion => "/executables/diff/{from_operating_system_version_id}/{to_operating_system_version_id}".to_string(),
117-
PublicRoutes::GetDiffEntitlementsExecutables => "/entitlements/diff/{from_executable_id}/{to_executable_id}".to_string(),
118-
PublicRoutes::GetDiffFrameworksExecutables => "/frameworks/diff/{from_executable_id}/{to_executable_id}".to_string(),
119-
PublicRoutes::GetAllFrameworks => "/frameworks/all".to_string(),
120-
PublicRoutes::GetFrameworkVersions => "/frameworks/{id}/versions".to_string(),
121-
PublicRoutes::GetFrameworkExecutables => "/frameworks/{framework_id}/executables/{operating_system_version_id}".to_string(),
122-
PublicRoutes::GetExecutableFrameworks => "/executable/{executable_operating_system_id}/frameworks".to_string(),
123-
PublicRoutes::GetRunningTasks => "/tasks/running".to_string(),
124-
}
125-
}
126-
}
127-
128-
impl Display for PublicRoutes {
129-
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
130-
write!(f, "{}", String::from(self))
131-
}
132-
}
1+
pub const PUBLIC_ROUTES_PREFIX: &str = "/api/v1";
2+
pub const ADMIN_ROUTES_PREFIX: &str = "/api/admin";

0 commit comments

Comments
 (0)