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, Pkt};
8 use smbpndk_networking::{constants::BASE_URL, get_token};
9
10 async fn get_pkt_apps() -> Result<Vec<Pkt>> {
11 // Get current token
12 let token = get_token().await?;
13
14 let response = Client::new()
15 .get([BASE_URL, "v1/pkt_apps"].join(""))
16 .header("Authorization", token)
17 .send()
18 .await?;
19
20 match response.status() {
21 reqwest::StatusCode::OK => {
22 let apps: Vec<Pkt> = response.json().await?;
23 Ok(apps)
24 }
25 _ => Err(anyhow!("Failed to fetch Pkt apps.")),
26 }
27 }
28
29 async fn get_pkt_app(id: &str) -> Result<Pkt> {
30 // Get current token
31 let token = get_token().await?;
32
33 let response = Client::new()
34 .get([BASE_URL, "v1/pkt_apps/", id].join(""))
35 .header("Authorization", token)
36 .send()
37 .await?;
38
39 match response.status() {
40 reqwest::StatusCode::OK => {
41 let auth_app: Pkt = response.json().await?;
42 println!("Pkt app requested: {auth_app:#?}");
43 Ok(auth_app)
44 }
45 _ => Err(anyhow!(format!("Failed to find an Pkt app with id: {id}."))),
46 }
47 }
48
49 async fn delete_pkt_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/pkt_apps/", &id].join(""))
55 .header("Authorization", token)
56 .send()
57 .await?;
58
59 match response.status() {
60 reqwest::StatusCode::OK => {
61 debug!("App deleted.");
62 Ok(())
63 }
64 _ => Err(anyhow!("Failed to delete an Pkt app.")),
65 }
66 }
67
68 async fn create_pkt_app(app: AppCreate) -> Result<Pkt> {
69 // Get current token
70 let token = get_token().await?;
71
72 let response = Client::new()
73 .post([BASE_URL, "v1/pkt_apps"].join(""))
74 .json(&app)
75 .header("Authorization", token)
76 .send()
77 .await?;
78
79 match response.status() {
80 reqwest::StatusCode::CREATED => {
81 let app: Pkt = response.json().await?;
82 println!("App created: {app:#?}");
83 Ok(app)
84 }
85 _ => Err(anyhow!("Failed to create an Pkt app.")),
86 }
87 }