1 pub mod cli;
2 pub mod handler;
3
4 use anyhow::{anyhow, Result};
5 use log::debug;
6 use reqwest::Client;
7 use smbpndk_model::{AppCreate, Fun};
8 use smbpndk_networking::{constants::BASE_URL, get_token};
9
10 async fn get_fun_apps() -> Result<Vec<Fun>> {
11 // Get current token
12 let token = get_token().await?;
13
14 let response = Client::new()
15 .get([BASE_URL, "v1/fun_apps"].join(""))
16 .header("Authorization", token)
17 .send()
18 .await?;
19
20 match response.status() {
21 reqwest::StatusCode::OK => {
22 let fun_apps: Vec<Fun> = response.json().await?;
23 Ok(fun_apps)
24 }
25 _ => Err(anyhow!("Failed to fetch fun apps.")),
26 }
27 }
28
29 async fn get_fun_app(id: &str) -> Result<Fun> {
30 // Get current token
31 let token = get_token().await?;
32
33 let response = Client::new()
34 .get([BASE_URL, "v1/fun_apps/", id].join(""))
35 .header("Authorization", token)
36 .send()
37 .await?;
38
39 match response.status() {
40 reqwest::StatusCode::OK => {
41 let fun_app: Fun = response.json().await?;
42 println!("Auth app requested: {fun_app:#?}");
43 Ok(fun_app)
44 }
45 _ => Err(anyhow!(format!("Failed to find an fun app with id: {id}."))),
46 }
47 }
48
49 async fn delete_fun_app(id: String) -> Result<()> {
50 // Get current token
51 let token = get_token().await?;
52
53 let response = Client::new()
54 .delete([BASE_URL, "v1/fun_apps/", &id].join(""))
55 .header("Authorization", token)
56 .send()
57 .await?;
58
59 match response.status() {
60 reqwest::StatusCode::OK => {
61 debug!("Project deleted.");
62 Ok(())
63 }
64 _ => Err(anyhow!("Failed to delete an fun app.")),
65 }
66 }
67
68 async fn create_fun_app(fun_app: AppCreate) -> Result<Fun> {
69 // Get current token
70 let token = get_token().await?;
71
72 let response = Client::new()
73 .post([BASE_URL, "v1/fun_apps"].join(""))
74 .json(&fun_app)
75 .header("Authorization", token)
76 .send()
77 .await?;
78
79 match response.status() {
80 reqwest::StatusCode::CREATED => {
81 let fun_app: Fun = response.json().await?;
82 println!("Project created: {fun_app:#?}");
83 Ok(fun_app)
84 }
85 _ => Err(anyhow!("Failed to create an fun app.")),
86 }
87 }