Import upstream v0.16.22, stripped
Upstream commit: 474dd0229cb20cf513036619781ed97bd8073c3f Enterprise-only files removed or emptied: 63 Enterprise-only snippets removed: 117 in 50 files Dangling module declarations removed: 5 Cargo edits turning enterprise off: 14 Verification: clean Enterprise feature gates left for rebuilt features: 19 in 18 files Produced by tools/fork/strip.py. The full report is in docs/fork/strip-reports/ on main.
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2020 Stalwart Labs LLC <[email protected]>
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-SEL
|
||||
*/
|
||||
|
||||
use std::{borrow::Cow, collections::HashMap};
|
||||
|
||||
#[derive(Default)]
|
||||
pub struct UrlParams<'x> {
|
||||
params: HashMap<Cow<'x, str>, Cow<'x, str>>,
|
||||
}
|
||||
|
||||
impl<'x> UrlParams<'x> {
|
||||
pub fn new(query: Option<&'x str>) -> Self {
|
||||
if let Some(query) = query {
|
||||
Self {
|
||||
params: form_urlencoded::parse(query.as_bytes())
|
||||
.filter(|(_, value)| !value.is_empty())
|
||||
.collect(),
|
||||
}
|
||||
} else {
|
||||
Self::default()
|
||||
}
|
||||
}
|
||||
|
||||
pub fn get(&self, key: &str) -> Option<&str> {
|
||||
self.params.get(key).map(|v| v.as_ref())
|
||||
}
|
||||
|
||||
pub fn has_key(&self, key: &str) -> bool {
|
||||
self.params.contains_key(key)
|
||||
}
|
||||
|
||||
pub fn parse<T>(&self, key: &str) -> Option<T>
|
||||
where
|
||||
T: std::str::FromStr,
|
||||
{
|
||||
self.get(key).and_then(|v| v.parse().ok())
|
||||
}
|
||||
|
||||
pub fn into_inner(self) -> HashMap<Cow<'x, str>, Cow<'x, str>> {
|
||||
self.params
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user