Compare commits
7 Commits
d94b3ff310
...
b918dddb53
Author | SHA1 | Date | |
---|---|---|---|
b918dddb53 | |||
fd8f18de9a | |||
8365cc9efa | |||
3667622acc | |||
4f0180321c | |||
93d49e8a57 | |||
55c023f504 |
@ -45,7 +45,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Get current version from Cargo.toml
|
- name: Get current version from Cargo.toml
|
||||||
id: cargo-version
|
id: cargo-version
|
||||||
|
2
Cargo.lock
generated
2
Cargo.lock
generated
@ -22,7 +22,7 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "loadstar"
|
name = "loadstar"
|
||||||
version = "0.0.4"
|
version = "0.0.6"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"tiny_http",
|
"tiny_http",
|
||||||
]
|
]
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
name = "loadstar"
|
name = "loadstar"
|
||||||
description = "A simple web framework for rust"
|
description = "A simple web framework for rust"
|
||||||
repository = "https://git.kjan.de/jank/loadstar"
|
repository = "https://git.kjan.de/jank/loadstar"
|
||||||
version = "0.0.4"
|
version = "0.0.6"
|
||||||
license = "GPL-3.0-only"
|
license = "GPL-3.0-only"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
|
use std::collections::HashMap;
|
||||||
|
|
||||||
use tiny_http::Request;
|
use tiny_http::Request;
|
||||||
|
|
||||||
|
|
||||||
pub trait Url {
|
pub trait Url {
|
||||||
fn get_url_without_parameters(&self) -> String;
|
fn get_url_without_parameters(&self) -> String;
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Url for Request {
|
impl Url for Request {
|
||||||
@ -11,3 +12,102 @@ impl Url for Request {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub trait Parameters {
|
||||||
|
fn get_post_parameters(&mut self) -> HashMap<String, String>;
|
||||||
|
fn get_get_parameters(&mut self) -> Option<HashMap<String, String>>;
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Parameters for Request {
|
||||||
|
fn get_post_parameters(&mut self) -> HashMap<String, String> {
|
||||||
|
let mut content = String::new();
|
||||||
|
self.as_reader().read_to_string(&mut content).unwrap();
|
||||||
|
|
||||||
|
let mut key_value_pairs = HashMap::new();
|
||||||
|
|
||||||
|
let parts = content.split("&");
|
||||||
|
|
||||||
|
for part in parts {
|
||||||
|
let mut key_value = part.split("=");
|
||||||
|
|
||||||
|
key_value_pairs.insert(key_value.next().unwrap().to_string(), key_value.next().unwrap().to_string());
|
||||||
|
}
|
||||||
|
|
||||||
|
key_value_pairs
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_get_parameters(&mut self) -> Option<HashMap<String, String>> {
|
||||||
|
let content = self.url().split("?").nth(1);
|
||||||
|
|
||||||
|
if content.is_none() {
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
|
||||||
|
let content = content.unwrap();
|
||||||
|
|
||||||
|
let mut key_value_pairs = HashMap::new();
|
||||||
|
|
||||||
|
let parts = content.split("&");
|
||||||
|
for part in parts {
|
||||||
|
let mut key_value = part.split("=");
|
||||||
|
|
||||||
|
key_value_pairs.insert(key_value.next().unwrap().to_string(), key_value.next().unwrap().to_string());
|
||||||
|
}
|
||||||
|
|
||||||
|
Some(key_value_pairs)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use crate::entities::request::*;
|
||||||
|
use tiny_http::{Request, TestRequest};
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_get_url_without_parameters() {
|
||||||
|
let request = Request::from(TestRequest::new().with_path("/test?key=value"));
|
||||||
|
|
||||||
|
let actual = request.get_url_without_parameters();
|
||||||
|
|
||||||
|
assert_eq!(actual, "/test");
|
||||||
|
|
||||||
|
let request2 = Request::from(TestRequest::new().with_path("/test2"));
|
||||||
|
|
||||||
|
assert_eq!(request2.get_url_without_parameters(), "/test2");
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_get_post_parameters() {
|
||||||
|
let test_request = TestRequest::new();
|
||||||
|
let test_request = test_request.with_body("a=b&c=d");
|
||||||
|
|
||||||
|
let actual = Request::from(test_request).get_post_parameters();
|
||||||
|
let mut expected = HashMap::new();
|
||||||
|
expected.insert("a".to_string(), "b".to_string());
|
||||||
|
expected.insert("c".to_string(), "d".to_string());
|
||||||
|
|
||||||
|
assert_eq!(actual, expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_get_get_parameters_with_no_get_parameters() {
|
||||||
|
let test_request = TestRequest::new();
|
||||||
|
let test_request = test_request.with_path("/test");
|
||||||
|
|
||||||
|
let actual = Request::from(test_request).get_get_parameters();
|
||||||
|
|
||||||
|
assert_eq!(actual, None);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_get_get_parameters() {
|
||||||
|
let test_request = TestRequest::new();
|
||||||
|
let test_request = test_request.with_path("/test?a=b&c=d");
|
||||||
|
|
||||||
|
let actual = Request::from(test_request).get_get_parameters();
|
||||||
|
let mut expected = HashMap::new();
|
||||||
|
expected.insert("a".to_string(), "b".to_string());
|
||||||
|
expected.insert("c".to_string(), "d".to_string());
|
||||||
|
|
||||||
|
assert_eq!(actual, Some(expected));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user