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}