cli/
utils.rs

1use super::*;
2use colored::*;
3use std::fs::{File, OpenOptions};
4use std::io::{Read, Write};
5
6#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq)]
7pub struct ClientReqRes {
8    pub request: String,
9    pub response: String,
10}
11
12pub fn print_err(err: &str) {
13    println!("Error: {}", err.red());
14}
15
16pub fn read_file(file_name: &str) -> Option<String> {
17    let mut file = match File::open(file_name) {
18        Ok(f) => f,
19        Err(_) => {
20            print_err(&format!("File \"{}\" not found", file_name));
21            return None;
22        }
23    };
24    let mut file_data = String::new();
25    match file.read_to_string(&mut file_data) {
26        Ok(_) => (),
27        Err(_) => {
28            print_err(&format!("Could not read data from file \"{}\"", file_name));
29            return None;
30        }
31    };
32    Some(file_data)
33}
34pub fn get_oas_value_version(file: &str) -> Option<(serde_json::Value, String)> {
35    let swagger_str = match read_file(file) {
36        Some(s) => s,
37        None => {
38            print_err(&format!("Failed at reading swagger file \"{}\"", file));
39            return None;
40        }
41    };
42    let swagger_value: serde_json::Value = if let Ok(s) = serde_json::from_str(&swagger_str) {
43        s
44    } else if let Ok(s) = serde_yaml::from_str::<serde_json::Value>(&swagger_str) {
45        s
46    } else {
47        print_err(&format!("Failed at parsing swagger json file:\"{}\"", file));
48        return None;
49    };
50    let version = swagger_value["openapi"]
51        .to_string()
52        .trim()
53        .replace('\"', "");
54    Some((swagger_value, version))
55}
56
57pub fn write_to_file(file_name: &str, value: String) {
58    match OpenOptions::new()
59        .write(true)
60        .truncate(true)
61        .create(true)
62        .open(file_name)
63    {
64        Ok(mut r) => match r.write_all(value.as_bytes()) {
65            Ok(_) => (),
66            Err(_) => {
67                print_err(&format!("Failed writing to file \"{}\"", &file_name));
68            }
69        },
70        Err(_) => {
71            print_err(&format!("Failed creating \"{}\" file", &file_name));
72        }
73    };
74}