set command
This commit is contained in:
parent
f087dcf3c2
commit
b0e080d1ee
|
@ -9,6 +9,6 @@ edition = "2021"
|
||||||
dirs = "5.0.1"
|
dirs = "5.0.1"
|
||||||
serde = { version = "1.0.192", features = ["derive"] }
|
serde = { version = "1.0.192", features = ["derive"] }
|
||||||
serde_json = "1.0"
|
serde_json = "1.0"
|
||||||
reqwest = "0.11.22"
|
reqwest = { version = "0.11.22", features = ["json"] }
|
||||||
rofi = "0.3.0"
|
rofi = "0.3.0"
|
||||||
tokio = { version = "1", features = ["full"] }
|
tokio = { version = "1", features = ["full"] }
|
||||||
|
|
116
README.org
116
README.org
|
@ -24,7 +24,7 @@ edition = "2021"
|
||||||
dirs = "5.0.1"
|
dirs = "5.0.1"
|
||||||
serde = { version = "1.0.192", features = ["derive"] }
|
serde = { version = "1.0.192", features = ["derive"] }
|
||||||
serde_json = "1.0"
|
serde_json = "1.0"
|
||||||
reqwest = "0.11.22"
|
reqwest = { version = "0.11.22", features = ["json"] }
|
||||||
rofi = "0.3.0"
|
rofi = "0.3.0"
|
||||||
tokio = { version = "1", features = ["full"] }
|
tokio = { version = "1", features = ["full"] }
|
||||||
#+end_src
|
#+end_src
|
||||||
|
@ -79,7 +79,8 @@ struct Member {
|
||||||
#+begin_src rust :tangle src/main.rs :comments link
|
#+begin_src rust :tangle src/main.rs :comments link
|
||||||
fn main() {
|
fn main() {
|
||||||
if std::env::args().len() > 1 {
|
if std::env::args().len() > 1 {
|
||||||
let command = std::env::args().nth(1).expect("No command given");
|
let augs: Vec<String> = std::env::args().collect();
|
||||||
|
let command = &augs[1];
|
||||||
let config_path: String;
|
let config_path: String;
|
||||||
match dirs::config_dir() {
|
match dirs::config_dir() {
|
||||||
Some(x) => {
|
Some(x) => {
|
||||||
|
@ -90,7 +91,7 @@ fn main() {
|
||||||
},
|
},
|
||||||
"set" => {
|
"set" => {
|
||||||
if std::env::args().len() > 2 {
|
if std::env::args().len() > 2 {
|
||||||
match set_member(config_path, std::env::args().nth(2).expect("No member given")) {
|
match set_member(config_path, &augs[2..]) {
|
||||||
Ok(_) => (),
|
Ok(_) => (),
|
||||||
Err(e) => println!("{e}"),
|
Err(e) => println!("{e}"),
|
||||||
}
|
}
|
||||||
|
@ -179,7 +180,7 @@ TODO let system = get_system(&config_path);
|
||||||
TODO }
|
TODO }
|
||||||
*/
|
*/
|
||||||
|
|
||||||
fn set_member(config_path: String, member: String) -> Result<(), &'static str> {
|
fn set_member(config_path: String, tf_members: &[String]) -> Result<(), &'static str> {
|
||||||
let config = get_config(&config_path);
|
let config = get_config(&config_path);
|
||||||
if config == Value::Null {
|
if config == Value::Null {
|
||||||
return Err("Config not found. Stopping");
|
return Err("Config not found. Stopping");
|
||||||
|
@ -187,31 +188,35 @@ fn set_member(config_path: String, member: String) -> Result<(), &'static str> {
|
||||||
|
|
||||||
let system: System = get_system(&config_path);
|
let system: System = get_system(&config_path);
|
||||||
|
|
||||||
let mut flag = false;
|
let mut to_front: Vec<Member> = Vec::new();
|
||||||
|
for member in tf_members {
|
||||||
for mem in &system.members {
|
for mem in &system.members {
|
||||||
if mem.name.to_lowercase() == member.to_lowercase() {
|
if mem.name.to_lowercase() == member.to_lowercase() || mem.alias.to_lowercase() == member.to_lowercase() {
|
||||||
flag = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if flag {
|
|
||||||
println!("Member {member} found");
|
println!("Member {member} found");
|
||||||
get_fronters(&config["pk_key"].as_str().unwrap(), &system.pk_userid, &config["sp_key"].as_str().unwrap(), &system);
|
to_front.push(mem.clone());
|
||||||
|
|
||||||
|
break;
|
||||||
Ok(())
|
|
||||||
} else {
|
|
||||||
Err("Member {member} not found")
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if to_front.len() != 0 {
|
||||||
|
let fronters = get_fronters(&config["pk_key"].as_str().unwrap(), &config["sp_key"].as_str().unwrap(), &system);
|
||||||
|
|
||||||
|
pk_set_fronters(&config["pk_key"].as_str().unwrap(), &system, to_front, &fronters);
|
||||||
|
}
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn memberlist(config_path: String) {
|
fn memberlist(config_path: String) {
|
||||||
let sys = get_system(&config_path);
|
let sys = get_system(&config_path);
|
||||||
|
|
||||||
for mem in sys.members {
|
for mem in sys.members {
|
||||||
|
if mem.name != mem.alias {
|
||||||
|
println!("{} / {}", mem.name, mem.alias);
|
||||||
|
} else {
|
||||||
println!("{}", mem.name);
|
println!("{}", mem.name);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
#+end_src
|
#+end_src
|
||||||
|
@ -238,22 +243,22 @@ fn pk_get_members(key: &str, sysid: &str) -> Vec<Value> {
|
||||||
|
|
||||||
***** Get fronters
|
***** Get fronters
|
||||||
#+begin_src rust :tangle src/main.rs :comments link
|
#+begin_src rust :tangle src/main.rs :comments link
|
||||||
fn pk_get_fronters(key: &str, sysid: &str) -> Vec<String> {
|
fn sp_get_fronters(key: &str, sys: &System) -> Vec<Member> {
|
||||||
let url = format!("{}/systems/{}/fronters", PK_URL, sysid);
|
let url = format!("{}/fronters", SP_URL);
|
||||||
|
|
||||||
let res = http_get_request(url,key);
|
let res = http_get_request(url,key);
|
||||||
let data: Value = serde_json::from_str(&res.unwrap()).unwrap();
|
let datas: Vec<Value> = serde_json::from_str(&res.unwrap()).unwrap();
|
||||||
println!("{:?}", data);
|
|
||||||
let memberdata = &data["members"].as_array();
|
|
||||||
|
|
||||||
let mut members: Vec<String> = Vec::new();
|
let mut members: Vec<Member> = Vec::new();
|
||||||
for member in memberdata {
|
for data in datas {
|
||||||
for m in member.into_iter() {
|
let sp_id = &data["content"]["member"].as_str().unwrap();
|
||||||
let mname = m["name"].as_str().unwrap();
|
for member in &sys.members {
|
||||||
members.push(String::from(mname));
|
if &member.sp_id == sp_id {
|
||||||
|
members.push(member.clone());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
return members;
|
return members;
|
||||||
}
|
}
|
||||||
#+end_src
|
#+end_src
|
||||||
|
@ -261,25 +266,12 @@ fn pk_get_fronters(key: &str, sysid: &str) -> Vec<String> {
|
||||||
**** Simplyplural
|
**** Simplyplural
|
||||||
***** Get user ID
|
***** Get user ID
|
||||||
#+begin_src rust :tangle src/main.rs :comments link
|
#+begin_src rust :tangle src/main.rs :comments link
|
||||||
fn sp_get_fronters(key: &str, sys: &System) -> Vec<String> {
|
fn sp_get_userid(key: &str) -> String {
|
||||||
let url = format!("{}/fronters", SP_URL);
|
let url = format!("{}/me", SP_URL);
|
||||||
|
|
||||||
let res = http_get_request(url,key);
|
let res = http_get_request(url,key);
|
||||||
let datas: Vec<Value> = serde_json::from_str(&res.unwrap()).unwrap();
|
let json_res : Value = serde_json::from_str(&res.unwrap()).unwrap();
|
||||||
|
return json_res["id"].as_str().unwrap().to_string();
|
||||||
let mut members: Vec<String> = Vec::new();
|
|
||||||
for data in datas {
|
|
||||||
let sp_id = &data["content"]["member"].as_str().unwrap();
|
|
||||||
let mut push_name = String::new();
|
|
||||||
for member in &sys.members {
|
|
||||||
if &member.sp_id == sp_id {
|
|
||||||
push_name = String::from(&member.name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
members.push(push_name);
|
|
||||||
|
|
||||||
}
|
|
||||||
return members;
|
|
||||||
}
|
}
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
@ -407,11 +399,10 @@ fn get_system(config_path: &str) -> System {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_fronters(pk_key: &str, pk_sysid: &str, sp_key: &str, sys: &System) -> HashMap<String, Vec<String>> {
|
fn get_fronters(pk_key: &str, sp_key: &str, sys: &System) -> HashMap<String, Vec<Member>> {
|
||||||
let mut fronters: HashMap<String, Vec<String>> = HashMap::new();
|
let mut fronters: HashMap<String, Vec<Member>> = HashMap::new();
|
||||||
fronters.insert(String::from("pk"), pk_get_fronters(pk_key, pk_sysid));
|
fronters.insert(String::from("pk"), pk_get_fronters(pk_key, sys));
|
||||||
fronters.insert(String::from("sp"), sp_get_fronters(sp_key, sys));
|
fronters.insert(String::from("sp"), sp_get_fronters(sp_key, sys));
|
||||||
println!("{:?}", fronters);
|
|
||||||
|
|
||||||
return fronters;
|
return fronters;
|
||||||
}
|
}
|
||||||
|
@ -432,4 +423,35 @@ async fn http_get_request(url: String, key: &str) -> Result<String, Box<dyn std:
|
||||||
.await?;
|
.await?;
|
||||||
Ok(res)
|
Ok(res)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#[tokio::main]
|
||||||
|
async fn http_post_request(url: String, key: &str, body: &HashMap<&str, Vec<String>>) -> Result<(), Box<dyn std::error::Error>> {
|
||||||
|
let client = reqwest::Client::new();
|
||||||
|
let _ = client
|
||||||
|
.post(url)
|
||||||
|
.json(body)
|
||||||
|
.header(USER_AGENT, "Pluralsync")
|
||||||
|
.header(AUTHORIZATION, key)
|
||||||
|
.send()
|
||||||
|
.await?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
#[tokio::main]
|
||||||
|
async fn http_patch_request(url: String, key: &str) -> Result<String, Box<dyn std::error::Error>> {
|
||||||
|
let client = reqwest::Client::new();
|
||||||
|
let res = client
|
||||||
|
.patch(url)
|
||||||
|
.body("wiwiwiw")
|
||||||
|
.header(USER_AGENT, "Pluralsync")
|
||||||
|
.header(AUTHORIZATION, key)
|
||||||
|
.send()
|
||||||
|
.await?
|
||||||
|
.text()
|
||||||
|
.await?;
|
||||||
|
Ok(res)
|
||||||
|
}
|
||||||
|
*/
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
48
TODO.org
48
TODO.org
|
@ -8,44 +8,52 @@
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:COOKIE_DATA: recursive
|
:COOKIE_DATA: recursive
|
||||||
:END:
|
:END:
|
||||||
*** Milestone 1.0 [5/20][25%]
|
*** Milestone 1.0 [10/22][45%]
|
||||||
**** Main functions [2/10][20%]
|
**** Main functions [4/11][36%]
|
||||||
***** Finished Add `sync` command
|
***** Finished Add `sync` command
|
||||||
***** InProgress Add `set` command [0/2]
|
***** HighPriority Add `set` command [2/3]
|
||||||
****** LowPriority [SET] Add empty
|
****** HighPriority [SET] Add empty
|
||||||
****** InProgress [SET] Add set
|
****** Finished [SET] Add set
|
||||||
***** LowPriority Add `get` command
|
****** Finished Adapt to set multiple arguments
|
||||||
|
***** HighPriority Add `get` command
|
||||||
***** LowPriority Add `add` command [0/2]
|
***** LowPriority Add `add` command [0/2]
|
||||||
****** LowPriority [ADD] Add empty
|
****** LowPriority [ADD] Add empty
|
||||||
****** LowPriority [ADD] Add set
|
****** LowPriority [ADD] Add set
|
||||||
***** LowPriority Add `setgroup` command
|
***** LowPriority Add `setgroup` command
|
||||||
***** Finished Add `memberlist` command
|
***** Finished Add `memberlist` command
|
||||||
**** Utils [3/9][33%]
|
**** Utils [6/10][60%]
|
||||||
***** Json loading [2/2]
|
***** Json loading [2/2]
|
||||||
****** Finished Add new function to get the config create empty in path if not exists
|
****** Finished Add new function to get the config create empty in path if not exists
|
||||||
****** Finished `Get system` if Value::Null sync and load json
|
****** Finished `Get system` if Value::Null sync and load json
|
||||||
***** Finished Get current front
|
***** Finished Get current front
|
||||||
***** InProgress http PATCH request
|
***** Finished http PATCH request
|
||||||
***** InProgress http POST request
|
***** Finished http POST request
|
||||||
|
***** Finished Set members know the alias
|
||||||
***** HighPriority Compare if sent members are currently fronting and keep them otherwise add to fronting array
|
***** HighPriority Compare if sent members are currently fronting and keep them otherwise add to fronting array
|
||||||
***** HighPriority Check for mismatch in fronting between pluralkit and simplyplural
|
***** HighPriority Check for mismatch in fronting between pluralkit and simplyplural
|
||||||
***** LowPriority Get fronters handles the front file
|
***** LowPriority Get fronters handles the front file
|
||||||
***** LowPriority Rofi stuff
|
***** HighPriority Rofi stuff
|
||||||
**** Doc [0/1][0%]
|
**** Doc [0/1][0%]
|
||||||
***** Functions [0/1]
|
***** Functions [0/1]
|
||||||
****** Backlog separate memberlist into its own code block in the readme
|
****** Backlog Separate memberlist into its own code block in the readme
|
||||||
|
|
||||||
** Kanban
|
** Kanban
|
||||||
| Backlog | LowPriority | HighPriority | InProgress | Finished |
|
| Backlog | LowPriority | HighPriority | InProgress | Finished |
|
||||||
|--------------------------------+--------------------------------+--------------------------------+-------------------------+--------------------------------|
|
|--------------------------------+--------------------------------+--------------------------------+------------+--------------------------------|
|
||||||
| [[/home/alicia/git/pluralshit/TODO.org::separate memberlist into its own code block in the readme][separate memberlist into its o]] | [[/home/alicia/git/pluralshit/TODO.org::\[SET\] Add empty][{SET} Add empty]] | [[/home/alicia/git/pluralshit/TODO.org::Compare if sent members are currently fronting and keep them otherwise add to fronting array][Compare if sent members are cu]] | [[/home/alicia/git/pluralshit/TODO.org::Add `set` command \[0/2\]][Add `set` command {0/2}]] | [[/home/alicia/git/pluralshit/TODO.org::Add `sync` command][Add `sync` command]] |
|
| [[/home/alicia/git/pluralshit/TODO.org::separate memberlist into its own code block in the readme][separate memberlist into its o]] | [[/home/alicia/git/pluralshit/TODO.org::Add `add` command \[0/2\]][Add `add` command {0/2}]] | [[/home/alicia/git/pluralshit/TODO.org::Add `set` command \[2/3\]][Add `set` command {2/3}]] | | [[/home/alicia/git/pluralshit/TODO.org::Add `sync` command][Add `sync` command]] |
|
||||||
| | [[/home/alicia/git/pluralshit/TODO.org::Add `get` command][Add `get` command]] | [[/home/alicia/git/pluralshit/TODO.org::Check for mismatch in fronting between pluralkit and simplyplural][Check for mismatch in fronting]] | [[/home/alicia/git/pluralshit/TODO.org::\[SET\] Add set][{SET} Add set]] | [[/home/alicia/git/pluralshit/TODO.org::Add `memberlist` command][Add `memberlist` command]] |
|
| | [[/home/alicia/git/pluralshit/TODO.org::\[ADD\] Add empty][{ADD} Add empty]] | [[/home/alicia/git/pluralshit/TODO.org::\[SET\] Add empty][{SET} Add empty]] | | [[/home/alicia/git/pluralshit/TODO.org::\[SET\] Add set][{SET} Add set]] |
|
||||||
| | [[/home/alicia/git/pluralshit/TODO.org::Add `add` command \[0/2\]][Add `add` command {0/2}]] | | [[/home/alicia/git/pluralshit/TODO.org::http PATCH request][http PATCH request]] | [[/home/alicia/git/pluralshit/TODO.org::Add new function to get the config create empty in path if not exists][Add new function to get the co]] |
|
| | [[/home/alicia/git/pluralshit/TODO.org::\[ADD\] Add set][{ADD} Add set]] | [[/home/alicia/git/pluralshit/TODO.org::Add `get` command][Add `get` command]] | | [[/home/alicia/git/pluralshit/TODO.org::Adapt to set multiple arguments][Adapt to set multiple argument]] |
|
||||||
| | [[/home/alicia/git/pluralshit/TODO.org::\[ADD\] Add empty][{ADD} Add empty]] | | [[/home/alicia/git/pluralshit/TODO.org::http POST request][http POST request]] | [[/home/alicia/git/pluralshit/TODO.org::`Get system` if Value::Null sync and load json][`Get system` if Value::Null sy]] |
|
| | [[/home/alicia/git/pluralshit/TODO.org::Add `setgroup` command][Add `setgroup` command]] | [[/home/alicia/git/pluralshit/TODO.org::Compare if sent members are currently fronting and keep them otherwise add to fronting array][Compare if sent members are cu]] | | [[/home/alicia/git/pluralshit/TODO.org::Add `memberlist` command][Add `memberlist` command]] |
|
||||||
| | [[/home/alicia/git/pluralshit/TODO.org::\[ADD\] Add set][{ADD} Add set]] | | | [[/home/alicia/git/pluralshit/TODO.org::Get current front][Get current front]] |
|
| | [[/home/alicia/git/pluralshit/TODO.org::Get fronters handles the front file][Get fronters handles the front]] | [[/home/alicia/git/pluralshit/TODO.org::Check for mismatch in fronting between pluralkit and simplyplural][Check for mismatch in fronting]] | | [[/home/alicia/git/pluralshit/TODO.org::Add new function to get the config create empty in path if not exists][Add new function to get the co]] |
|
||||||
| | [[/home/alicia/git/pluralshit/TODO.org::Add `setgroup` command][Add `setgroup` command]] | | | |
|
| | | [[/home/alicia/git/pluralshit/TODO.org::Rofi stuff][Rofi stuff]] | | [[/home/alicia/git/pluralshit/TODO.org::`Get system` if Value::Null sync and load json][`Get system` if Value::Null sy]] |
|
||||||
| | [[/home/alicia/git/pluralshit/TODO.org::Get fronters handles the front file][Get fronters handles the front]] | | | |
|
| | | | | [[/home/alicia/git/pluralshit/TODO.org::Get current front][Get current front]] |
|
||||||
| | [[/home/alicia/git/pluralshit/TODO.org::Rofi stuff][Rofi stuff]] | | | |
|
| | | | | [[/home/alicia/git/pluralshit/TODO.org::http PATCH request][http PATCH request]] |
|
||||||
|
| | | | | [[/home/alicia/git/pluralshit/TODO.org::http POST request][http POST request]] |
|
||||||
|
| | | | | [[/home/alicia/git/pluralshit/TODO.org::Set members know the alias][Set members know the alias]] |
|
||||||
|
| | | | | |
|
||||||
|
| | | | | |
|
||||||
|
| | | | | |
|
||||||
|
| | | | | |
|
||||||
| | | | | |
|
| | | | | |
|
||||||
| | | | | |
|
| | | | | |
|
||||||
#+TBLFM: @1='(kanban-headers $#)::@2$1..@>$>='(kanban-zero @# $# nil (list (buffer-file-name)))
|
#+TBLFM: @1='(kanban-headers $#)::@2$1..@>$>='(kanban-zero @# $# nil (list (buffer-file-name)))
|
||||||
|
|
109
src/main.rs
109
src/main.rs
|
@ -43,7 +43,8 @@ struct Member {
|
||||||
// [[file:../README.org::*Main][Main:1]]
|
// [[file:../README.org::*Main][Main:1]]
|
||||||
fn main() {
|
fn main() {
|
||||||
if std::env::args().len() > 1 {
|
if std::env::args().len() > 1 {
|
||||||
let command = std::env::args().nth(1).expect("No command given");
|
let augs: Vec<String> = std::env::args().collect();
|
||||||
|
let command = &augs[1];
|
||||||
let config_path: String;
|
let config_path: String;
|
||||||
match dirs::config_dir() {
|
match dirs::config_dir() {
|
||||||
Some(x) => {
|
Some(x) => {
|
||||||
|
@ -54,7 +55,7 @@ fn main() {
|
||||||
},
|
},
|
||||||
"set" => {
|
"set" => {
|
||||||
if std::env::args().len() > 2 {
|
if std::env::args().len() > 2 {
|
||||||
match set_member(config_path, std::env::args().nth(2).expect("No member given")) {
|
match set_member(config_path, &augs[2..]) {
|
||||||
Ok(_) => (),
|
Ok(_) => (),
|
||||||
Err(e) => println!("{e}"),
|
Err(e) => println!("{e}"),
|
||||||
}
|
}
|
||||||
|
@ -139,7 +140,7 @@ TODO let system = get_system(&config_path);
|
||||||
TODO }
|
TODO }
|
||||||
*/
|
*/
|
||||||
|
|
||||||
fn set_member(config_path: String, member: String) -> Result<(), &'static str> {
|
fn set_member(config_path: String, tf_members: &[String]) -> Result<(), &'static str> {
|
||||||
let config = get_config(&config_path);
|
let config = get_config(&config_path);
|
||||||
if config == Value::Null {
|
if config == Value::Null {
|
||||||
return Err("Config not found. Stopping");
|
return Err("Config not found. Stopping");
|
||||||
|
@ -147,31 +148,35 @@ fn set_member(config_path: String, member: String) -> Result<(), &'static str> {
|
||||||
|
|
||||||
let system: System = get_system(&config_path);
|
let system: System = get_system(&config_path);
|
||||||
|
|
||||||
let mut flag = false;
|
let mut to_front: Vec<Member> = Vec::new();
|
||||||
|
for member in tf_members {
|
||||||
for mem in &system.members {
|
for mem in &system.members {
|
||||||
if mem.name.to_lowercase() == member.to_lowercase() {
|
if mem.name.to_lowercase() == member.to_lowercase() || mem.alias.to_lowercase() == member.to_lowercase() {
|
||||||
flag = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if flag {
|
|
||||||
println!("Member {member} found");
|
println!("Member {member} found");
|
||||||
get_fronters(&config["pk_key"].as_str().unwrap(), &system.pk_userid, &config["sp_key"].as_str().unwrap(), &system);
|
to_front.push(mem.clone());
|
||||||
|
|
||||||
|
break;
|
||||||
Ok(())
|
|
||||||
} else {
|
|
||||||
Err("Member {member} not found")
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if to_front.len() != 0 {
|
||||||
|
let fronters = get_fronters(&config["pk_key"].as_str().unwrap(), &config["sp_key"].as_str().unwrap(), &system);
|
||||||
|
|
||||||
|
pk_set_fronters(&config["pk_key"].as_str().unwrap(), &system, to_front, &fronters);
|
||||||
|
}
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn memberlist(config_path: String) {
|
fn memberlist(config_path: String) {
|
||||||
let sys = get_system(&config_path);
|
let sys = get_system(&config_path);
|
||||||
|
|
||||||
for mem in sys.members {
|
for mem in sys.members {
|
||||||
|
if mem.name != mem.alias {
|
||||||
|
println!("{} / {}", mem.name, mem.alias);
|
||||||
|
} else {
|
||||||
println!("{}", mem.name);
|
println!("{}", mem.name);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
// Set member:1 ends here
|
// Set member:1 ends here
|
||||||
|
@ -195,24 +200,40 @@ fn pk_get_members(key: &str, sysid: &str) -> Vec<Value> {
|
||||||
// Get system:1 ends here
|
// Get system:1 ends here
|
||||||
|
|
||||||
// [[file:../README.org::*Get fronters][Get fronters:1]]
|
// [[file:../README.org::*Get fronters][Get fronters:1]]
|
||||||
fn pk_get_fronters(key: &str, sysid: &str) -> Vec<String> {
|
fn pk_get_fronters(key: &str, sys: &System) -> Vec<Member> {
|
||||||
let url = format!("{}/systems/{}/fronters", PK_URL, sysid);
|
let url = format!("{}/systems/{}/fronters", PK_URL, sys.pk_userid);
|
||||||
|
|
||||||
let res = http_get_request(url,key);
|
let res = http_get_request(url,key);
|
||||||
let data: Value = serde_json::from_str(&res.unwrap()).unwrap();
|
let data: Value = serde_json::from_str(&res.unwrap()).unwrap();
|
||||||
println!("{:?}", data);
|
|
||||||
let memberdata = &data["members"].as_array();
|
let memberdata = &data["members"].as_array();
|
||||||
|
|
||||||
let mut members: Vec<String> = Vec::new();
|
let mut members: Vec<Member> = Vec::new();
|
||||||
for member in memberdata {
|
for member in memberdata {
|
||||||
for m in member.into_iter() {
|
for m in member.into_iter() {
|
||||||
let mname = m["name"].as_str().unwrap();
|
for dbmem in &sys.members {
|
||||||
members.push(String::from(mname));
|
if m["name"].as_str().unwrap() == dbmem.name {
|
||||||
|
members.push(dbmem.clone());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return members;
|
return members;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn pk_set_fronters(key: &str, sys: &System, to_front: Vec<Member>, _fronters: &HashMap<String, Vec<Member>>) {
|
||||||
|
let url = format!("{}/systems/{}/switches", PK_URL, sys.pk_userid);
|
||||||
|
|
||||||
|
// if not fronting
|
||||||
|
|
||||||
|
let mut frontcodes = Vec::new();
|
||||||
|
for tf in to_front {
|
||||||
|
frontcodes.push(tf.pk_id);
|
||||||
|
}
|
||||||
|
let mut body: HashMap<&str, Vec<String>> = HashMap::new();
|
||||||
|
body.insert("members", frontcodes);
|
||||||
|
let _ = http_post_request(url, key, &body);
|
||||||
|
}
|
||||||
// Get fronters:1 ends here
|
// Get fronters:1 ends here
|
||||||
|
|
||||||
// [[file:../README.org::*Get user ID][Get user ID:1]]
|
// [[file:../README.org::*Get user ID][Get user ID:1]]
|
||||||
|
@ -257,22 +278,20 @@ fn get_sp_id(mem: &Member, ids: &HashMap<String, String>) -> String {
|
||||||
// Get ID from member:1 ends here
|
// Get ID from member:1 ends here
|
||||||
|
|
||||||
// [[file:../README.org::*Get fronters][Get fronters:1]]
|
// [[file:../README.org::*Get fronters][Get fronters:1]]
|
||||||
fn sp_get_fronters(key: &str, sys: &System) -> Vec<String> {
|
fn sp_get_fronters(key: &str, sys: &System) -> Vec<Member> {
|
||||||
let url = format!("{}/fronters", SP_URL);
|
let url = format!("{}/fronters", SP_URL);
|
||||||
|
|
||||||
let res = http_get_request(url,key);
|
let res = http_get_request(url,key);
|
||||||
let datas: Vec<Value> = serde_json::from_str(&res.unwrap()).unwrap();
|
let datas: Vec<Value> = serde_json::from_str(&res.unwrap()).unwrap();
|
||||||
|
|
||||||
let mut members: Vec<String> = Vec::new();
|
let mut members: Vec<Member> = Vec::new();
|
||||||
for data in datas {
|
for data in datas {
|
||||||
let sp_id = &data["content"]["member"].as_str().unwrap();
|
let sp_id = &data["content"]["member"].as_str().unwrap();
|
||||||
let mut push_name = String::new();
|
|
||||||
for member in &sys.members {
|
for member in &sys.members {
|
||||||
if &member.sp_id == sp_id {
|
if &member.sp_id == sp_id {
|
||||||
push_name = String::from(&member.name);
|
members.push(member.clone());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
members.push(push_name);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
return members;
|
return members;
|
||||||
|
@ -342,11 +361,10 @@ fn get_system(config_path: &str) -> System {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_fronters(pk_key: &str, pk_sysid: &str, sp_key: &str, sys: &System) -> HashMap<String, Vec<String>> {
|
fn get_fronters(pk_key: &str, sp_key: &str, sys: &System) -> HashMap<String, Vec<Member>> {
|
||||||
let mut fronters: HashMap<String, Vec<String>> = HashMap::new();
|
let mut fronters: HashMap<String, Vec<Member>> = HashMap::new();
|
||||||
fronters.insert(String::from("pk"), pk_get_fronters(pk_key, pk_sysid));
|
fronters.insert(String::from("pk"), pk_get_fronters(pk_key, sys));
|
||||||
fronters.insert(String::from("sp"), sp_get_fronters(sp_key, sys));
|
fronters.insert(String::from("sp"), sp_get_fronters(sp_key, sys));
|
||||||
println!("{:?}", fronters);
|
|
||||||
|
|
||||||
return fronters;
|
return fronters;
|
||||||
}
|
}
|
||||||
|
@ -366,4 +384,35 @@ async fn http_get_request(url: String, key: &str) -> Result<String, Box<dyn std:
|
||||||
.await?;
|
.await?;
|
||||||
Ok(res)
|
Ok(res)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#[tokio::main]
|
||||||
|
async fn http_post_request(url: String, key: &str, body: &HashMap<&str, Vec<String>>) -> Result<(), Box<dyn std::error::Error>> {
|
||||||
|
let client = reqwest::Client::new();
|
||||||
|
let _ = client
|
||||||
|
.post(url)
|
||||||
|
.json(body)
|
||||||
|
.header(USER_AGENT, "Pluralsync")
|
||||||
|
.header(AUTHORIZATION, key)
|
||||||
|
.send()
|
||||||
|
.await?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
#[tokio::main]
|
||||||
|
async fn http_patch_request(url: String, key: &str) -> Result<String, Box<dyn std::error::Error>> {
|
||||||
|
let client = reqwest::Client::new();
|
||||||
|
let res = client
|
||||||
|
.patch(url)
|
||||||
|
.body("wiwiwiw")
|
||||||
|
.header(USER_AGENT, "Pluralsync")
|
||||||
|
.header(AUTHORIZATION, key)
|
||||||
|
.send()
|
||||||
|
.await?
|
||||||
|
.text()
|
||||||
|
.await?;
|
||||||
|
Ok(res)
|
||||||
|
}
|
||||||
|
*/
|
||||||
// Http Request handler:1 ends here
|
// Http Request handler:1 ends here
|
||||||
|
|
Loading…
Reference in New Issue