use std::collections::HashMap;
use axum::extract::Request;
use axum::http::request::Parts;
use reqwest::header::HeaderMap;
pub const TOKEN_PREFIX: &'static str = "Bearer ";
pub fn get_token(header_map: &HeaderMap) -> String {
let mut token = header_map
.get("authorization")
.map(|v| v.to_str().unwrap_or_default().to_string())
.unwrap_or_default();
if token.starts_with(TOKEN_PREFIX) {
token = token.replace(TOKEN_PREFIX, "");
}
token
}
pub fn get_token_by_header_map (header_map: &HeaderMap) -> String {
let token = header_map
.get("Access-Token")
.map(|v| v.to_str().unwrap_or_default().to_string())
.unwrap_or_default();
token
}
pub fn get_access_token_by_parts<B>(parts: &mut Parts) -> String {
let mut jwt_token = "".to_string();
if let Some(t) = parts.headers.get("Access-Token") {
jwt_token = t.to_str().unwrap_or(&String::from("")).trim().to_string();
}
jwt_token
}
pub fn get_access_token_by_request<B>(request: &Request<B>) -> String {
let mut jwt_token = "".to_string();
if let Some(t) = request.headers().get("Access-Token") {
jwt_token = t.to_str().unwrap_or(&String::from("")).trim().to_string();
}
jwt_token
}
pub fn get_query_params_token<B>(request: &Request<B>) -> String {
let query = request.uri().query().unwrap_or("");
let params: HashMap<String, String> = form_urlencoded::parse(query.as_bytes())
.into_owned()
.collect::<HashMap<_, _>>();
params.get("token").cloned().unwrap_or_default()
}