Able to get token
This commit is contained in:
+6
-6
@@ -3,7 +3,7 @@ pub const SECONDS_TO_SLEEP: u64 = 5;
|
|||||||
|
|
||||||
pub const APP_NAME: &str = "catapult";
|
pub const APP_NAME: &str = "catapult";
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone, Debug)]
|
||||||
pub struct App {
|
pub struct App {
|
||||||
pub api_url: String,
|
pub api_url: String,
|
||||||
pub auth_url: String,
|
pub auth_url: String,
|
||||||
@@ -22,8 +22,8 @@ pub async fn load_app() -> Result<App, std::io::Error> {
|
|||||||
let service_passphrase_env = envy::environment::get_env("SERVICE_PASSPHRASE").await;
|
let service_passphrase_env = envy::environment::get_env("SERVICE_PASSPHRASE").await;
|
||||||
|
|
||||||
let envs = vec![
|
let envs = vec![
|
||||||
auth_url_env,
|
|
||||||
api_url_env,
|
api_url_env,
|
||||||
|
auth_url_env,
|
||||||
service_username_env,
|
service_username_env,
|
||||||
service_passphrase_env,
|
service_passphrase_env,
|
||||||
];
|
];
|
||||||
@@ -42,10 +42,10 @@ pub async fn load_app() -> Result<App, std::io::Error> {
|
|||||||
if envs_valid {
|
if envs_valid {
|
||||||
match textsender_models::config::auxiliary::load_config().await {
|
match textsender_models::config::auxiliary::load_config().await {
|
||||||
Ok(twilio_config) => Ok(App {
|
Ok(twilio_config) => Ok(App {
|
||||||
api_url: String::new(),
|
api_url: envs[0].value.clone(),
|
||||||
auth_url: String::new(),
|
auth_url: envs[1].value.clone(),
|
||||||
service_username: String::new(),
|
service_username: envs[2].value.clone(),
|
||||||
service_passphrase: String::new(),
|
service_passphrase: envs[3].value.clone(),
|
||||||
twilio_config: twilio_config,
|
twilio_config: twilio_config,
|
||||||
}),
|
}),
|
||||||
Err(err) => Err(err),
|
Err(err) => Err(err),
|
||||||
|
|||||||
@@ -14,6 +14,8 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
println!("App: {app:?}");
|
||||||
|
|
||||||
let auth = catapult::service::auth::Auth {
|
let auth = catapult::service::auth::Auth {
|
||||||
app: app.clone()
|
app: app.clone()
|
||||||
};
|
};
|
||||||
@@ -26,6 +28,8 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
println!("Access token: {}", token.access_token);
|
||||||
|
|
||||||
let mut svc = catapult::service::Service {
|
let mut svc = catapult::service::Service {
|
||||||
app: app.clone(),
|
app: app.clone(),
|
||||||
token
|
token
|
||||||
|
|||||||
+39
-4
@@ -53,18 +53,53 @@ pub mod auth {
|
|||||||
let endpoint = String::from("api/v1/service/login");
|
let endpoint = String::from("api/v1/service/login");
|
||||||
let api_url = format!("{}/{endpoint}", self.app.auth_url);
|
let api_url = format!("{}/{endpoint}", self.app.auth_url);
|
||||||
|
|
||||||
|
println!("Url: {api_url:?}");
|
||||||
|
|
||||||
let payload = serde_json::json!({
|
let payload = serde_json::json!({
|
||||||
"username": self.app.auth_url,
|
"username": &self.app.service_username,
|
||||||
"passphrase": self.app.api_url
|
"passphrase": &self.app.service_passphrase,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
println!("Payload: {payload:?}");
|
||||||
|
|
||||||
match client.post(api_url).json(&payload).send().await {
|
match client.post(api_url).json(&payload).send().await {
|
||||||
Ok(response) => match response.status() {
|
Ok(response) => match response.status() {
|
||||||
reqwest::StatusCode::OK => {
|
reqwest::StatusCode::OK => {
|
||||||
println!("Response: {response:?}");
|
println!("Response: {response:?}");
|
||||||
match response.json().await {
|
match response.text().await {
|
||||||
Ok(val) => {
|
Ok(val) => {
|
||||||
Ok(val)
|
match serde_json::from_str::<serde_json::Value>(&val) {
|
||||||
|
Ok(j) => {
|
||||||
|
println!("Good");
|
||||||
|
let message = &j["message"];
|
||||||
|
let data = &j["data"];
|
||||||
|
|
||||||
|
println!("Message: {message:?}");
|
||||||
|
println!("Data: {data:?}");
|
||||||
|
match j.get("data") {
|
||||||
|
Some(serde_json::Value::Array(lrs)) => {
|
||||||
|
if lrs.is_empty() {
|
||||||
|
Err(std::io::Error::other("Error response is empty"))
|
||||||
|
} else {
|
||||||
|
let lr = lrs[0].clone();
|
||||||
|
let ll: textsender_models::token::LoginResult = match serde_json::from_value(lr) { Ok(lr) => lr,
|
||||||
|
Err(err) => {
|
||||||
|
return Err(std::io::Error::other(err.to_string()));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Ok(ll)
|
||||||
|
// Ok(textsender_models::token::LoginResult::default())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_ => {
|
||||||
|
Err(std::io::Error::other("Error parsing response"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Err(err) => {
|
||||||
|
Err(std::io::Error::other(err.to_string()))
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
Err(std::io::Error::other(err))
|
Err(std::io::Error::other(err))
|
||||||
|
|||||||
Reference in New Issue
Block a user