aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2022-10-21 17:53:20 +0200
committerHimbeerserverDE <himbeerserverde@gmail.com>2022-10-21 17:53:20 +0200
commitad92a218c34a08d33cd82ed2c339276b663e0060 (patch)
tree0badca1a247922ba95cfa710dab5d151d33cb960
parente524ba7744f74856645e081f77d3ba9c09c862ca (diff)
add login call
-rw-r--r--Cargo.toml1
-rw-r--r--src/call/account.rs20
-rw-r--r--src/call/mod.rs1
-rw-r--r--src/lib.rs1
4 files changed, 23 insertions, 0 deletions
diff --git a/Cargo.toml b/Cargo.toml
index f3f4bf6..93f7413 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -8,3 +8,4 @@ edition = "2021"
[dependencies]
reqwest = { version = "0.11", features = ["blocking", "cookies"] }
url = "2.2.2"
+xmlrpc = "0.15.1"
diff --git a/src/call/account.rs b/src/call/account.rs
new file mode 100644
index 0000000..c2434a7
--- /dev/null
+++ b/src/call/account.rs
@@ -0,0 +1,20 @@
+use std::collections::BTreeMap;
+
+// Contains login information. Used to create an API session.
+pub(crate) struct Login<'a> {
+ pub(crate) user: &'a str,
+ pub(crate) pass: &'a str,
+ pub(crate) case_insensitive: bool,
+}
+
+impl From<Login<'_>> for xmlrpc::Value {
+ fn from(login: Login<'_>) -> Self {
+ let mut map = BTreeMap::new();
+
+ map.insert("user".into(), login.user.into());
+ map.insert("pass".into(), login.pass.into());
+ map.insert("case-insensitive".into(), login.case_insensitive.into());
+
+ xmlrpc::Value::Struct(map)
+ }
+}
diff --git a/src/call/mod.rs b/src/call/mod.rs
new file mode 100644
index 0000000..b0edc6c
--- /dev/null
+++ b/src/call/mod.rs
@@ -0,0 +1 @@
+pub mod account;
diff --git a/src/lib.rs b/src/lib.rs
index f4687c8..13ad3f5 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1,3 +1,4 @@
+pub mod call;
pub mod client;
pub mod error;