///|
/// Returns a route parameter value as a String, or None if not found.
///
/// The value is NOT URL-decoded — it's returned exactly as it appeared in the URL.
/// For a decoded value (e.g. `hello%20world` → `hello world`), use `param_decoded()`.
pub fn MocketEvent::param(self : MocketEvent, name : String) -> String? {
match self.params.get(name) {
Some(v) => Some(v.to_string())
None => None
}
}
///|
/// Returns a URL-decoded route parameter value, or None if not found.
///
/// For example, if the URL is `/search/hello%20world` and the route is
/// `/search/:query`, this returns `Some("hello world")`.
pub fn MocketEvent::param_decoded(self : MocketEvent, name : String) -> String? {
match self.params.get(name) {
Some(v) => Some(@mhttp.url_decode(@utf8.encode(v.to_string())[:]))
None => None
}
}
///|
/// Returns a route parameter parsed as an Int, or None if not found or not a valid integer.
pub fn MocketEvent::param_int(self : MocketEvent, name : String) -> Int? {
match self.params.get(name) {
Some(v) =>
try @string.parse_int(v) catch {
_ => None
} noraise {
n => Some(n)
}
None => None
}
}
///|
/// Returns a route parameter parsed as an Int64, or None if not found or not valid.
pub fn MocketEvent::param_int64(self : MocketEvent, name : String) -> Int64? {
match self.params.get(name) {
Some(v) =>
try @string.parse_int64(v) catch {
_ => None
} noraise {
n => Some(n)
}
None => None
}
}
///|
/// Returns a route parameter as a String, or raises `HttpError(BadRequest)` if missing.
pub fn MocketEvent::require_param(
self : MocketEvent,
name : String,
) -> String raise {
match self.params.get(name) {
Some(v) => v.to_string()
None =>
raise HttpError::HttpError(
BadRequest,
"missing required parameter: \{name}",
)
}
}
///|
/// Returns a route parameter parsed as an Int, or raises `HttpError(BadRequest)`
/// if missing or not a valid integer.
pub fn MocketEvent::require_param_int(
self : MocketEvent,
name : String,
) -> Int raise {
match self.params.get(name) {
Some(v) =>
@string.parse_int(v) catch {
_ =>
raise HttpError::HttpError(
BadRequest,
"parameter '\{name}' must be a valid integer, got '\{v}'",
)
}
None =>
raise HttpError::HttpError(
BadRequest,
"missing required parameter: \{name}",
)
}
}
///|
/// Returns a route parameter parsed as an Int64, or raises `HttpError(BadRequest)`
/// if missing or not a valid 64-bit integer.
pub fn MocketEvent::require_param_int64(
self : MocketEvent,
name : String,
) -> Int64 raise {
match self.params.get(name) {
Some(v) =>
@string.parse_int64(v) catch {
_ =>
raise HttpError::HttpError(
BadRequest,
"parameter '\{name}' must be a valid integer, got '\{v}'",
)
}
None =>
raise HttpError::HttpError(
BadRequest,
"missing required parameter: \{name}",
)
}
}