added error handling to extract_auth_token workflow

This commit is contained in:
Valmo Trindade
2024-09-19 00:49:00 -03:00
parent 39ffb21721
commit 5c49a26aa4
4 changed files with 61 additions and 19 deletions

View File

@@ -4,9 +4,9 @@ private _atak_server_instance_password = missionNamespace getVariable "_atak_ser
private _authentication = [_atak_server_instance, _atak_server_instance_username, _atak_server_instance_password]; private _authentication = [_atak_server_instance, _atak_server_instance_username, _atak_server_instance_password];
_atak_server_instance_token = ("armatak" callExtension ["get_auth_token", _authentication]) select 0; _atak_server_instance_token = ("armatak" callExtension ["get_auth_token", [_authentication]]) select 0;
if ((_atak_server_instance_token != "") and !(["error", _atak_server_instance_token, false] call BIS_fnc_inString)) then { if ((_atak_server_instance_token != "") and !(["ERROR", _atak_server_instance_token, false] call BIS_fnc_inString)) then {
missionNamespace setVariable ["_atak_server_instance_token", _atak_server_instance_token]; missionNamespace setVariable ["_atak_server_instance_token", _atak_server_instance_token];
private _warning = format ["<t color='#2B7319'>ARMATAK</t><br/> %1", "Authorized"]; private _warning = format ["<t color='#2B7319'>ARMATAK</t><br/> %1", "Authorized"];

View File

@@ -19,16 +19,17 @@ if (isServer && _activated) exitWith {
missionNamespace setVariable ["_atak_server_instance_username", _atak_ots_api_username]; missionNamespace setVariable ["_atak_server_instance_username", _atak_ots_api_username];
missionNamespace setVariable ["_atak_server_instance_password", _atak_ots_api_password]; missionNamespace setVariable ["_atak_server_instance_password", _atak_ots_api_password];
/* _atak_server_instance_token = call armatak_fnc_extract_auth_token;
_atak_server_instance_token = call armatak_fnc_extract_auth_token;
if (_atak_server_instance_token == "") then { if (_atak_server_instance_token == "") then {
private _warning = format ["<t color='#FF0000'>ARMATAK</t><br/> %1", "Connection Failed"]; private _warning = format ["<t color='#FF0000'>ARMATAK</t><br/> %1", "Connection Failed"];
[[_warning, 2]] call CBA_fnc_notify; [[_warning, 2]] call CBA_fnc_notify;
} else { } else {
private _warning = format ["<t color='#2B7319'>ARMATAK</t><br/> %1", "Connected"]; private _warning = format ["<t color='#2B7319'>ARMATAK</t><br/> %1", "Connected"];
[[_warning, 2]] call CBA_fnc_notify; [[_warning, 2]] call CBA_fnc_notify;
}; };
/*
if (isMultiplayer) then { if (isMultiplayer) then {
[{ [{

View File

@@ -1,4 +1,5 @@
use crate::structs::{LoginInfo, LoginPayload}; use crate::structs::{LoginInfo, LoginPayload};
use log::error;
use reqwest; use reqwest;
use serde_json; use serde_json;
@@ -15,20 +16,48 @@ pub fn get_auth_token(payload: LoginPayload) -> String {
.post(&parsed_address) .post(&parsed_address)
.body(request_body) .body(request_body)
.header("Content-Type", "application/json") .header("Content-Type", "application/json")
.send() .send();
.unwrap();
let response_body: serde_json::Value = serde_json::from_str(&response.text().unwrap()).unwrap(); match response {
Ok(result) => {
let response_body: Result<serde_json::Value, _> =
serde_json::from_str(&result.text().unwrap());
let csrf_token = response_body["response"]["csrf_token"].as_str().unwrap(); match response_body {
Ok(result) => {
let csrf_token = result["response"]["csrf_token"].as_str();
return csrf_token.to_string() match csrf_token {
Some(result) => {
return result.to_string();
}
None => {
let message = "ERROR: Provided JSON doesnt match a valid CSRF Token";
error!("{}", message);
return message.to_string();
}
}
}
Err(error) => {
error!("{}", error);
return "ERROR: failed to parse the response body to a valid JSON".to_string();
}
}
}
Err(error) => {
error!("{}", error);
return "ERROR: failed to fetch the OTS API".to_string();
}
}
} }
pub(crate) mod markers { pub(crate) mod markers {
use log::info; use log::info;
use crate::structs::Marker; use crate::{structs::Marker, util::post_marker};
pub fn get(placeholder: String) -> &'static str { pub fn get(placeholder: String) -> &'static str {
info!("{}", placeholder); info!("{}", placeholder);
@@ -38,7 +67,7 @@ pub(crate) mod markers {
pub fn post(data: Vec<Marker>) -> &'static str { pub fn post(data: Vec<Marker>) -> &'static str {
for item in data { for item in data {
info!("{} - {}", item.uid, item.name) post_marker(item);
} }
return "not implemented yet"; return "not implemented yet";

View File

@@ -1,5 +1,17 @@
use log::info;
use crate::structs::Marker;
pub fn get_uuid() -> String { pub fn get_uuid() -> String {
use uuid::Uuid; use uuid::Uuid;
Uuid::new_v4().to_string() Uuid::new_v4().to_string()
} }
pub async fn post_marker(marker: Marker) -> String {
let placeholder = format!("{} - {}", marker.uid, marker.name);
info!("{}", placeholder);
return placeholder
}