Skip to content
Snippets Groups Projects
Verified Commit c768aa93 authored by Nik | Klampfradler's avatar Nik | Klampfradler
Browse files

[OAuth] Implement base for REST retrieval

parent a698ac16
No related branches found
No related tags found
No related merge requests found
...@@ -19,7 +19,7 @@ paste = "^0.1" ...@@ -19,7 +19,7 @@ paste = "^0.1"
libc = "^0.2.0" libc = "^0.2.0"
lazy_static = "^1.3.0" lazy_static = "^1.3.0"
oauth2 = "^4.0.0" oauth2 = "^4.0.0"
reqwest = "^0.11.3" reqwest = { version = "^0.11.3", features = ["json"] }
config = "^0.11.0" config = "^0.11.0"
serde = "^1.0.125" serde = "^1.0.125"
log = "^0.4.11" log = "^0.4.11"
......
...@@ -21,8 +21,6 @@ use config::Config; ...@@ -21,8 +21,6 @@ use config::Config;
use crate::logging::setup_log; use crate::logging::setup_log;
use crate::oauth::get_access_token;
use libnss::interop::Response; use libnss::interop::Response;
use libnss::passwd::{PasswdHooks, Passwd}; use libnss::passwd::{PasswdHooks, Passwd};
......
...@@ -28,6 +28,7 @@ use oauth2::{ ...@@ -28,6 +28,7 @@ use oauth2::{
ResourceOwnerUsername, ResourceOwnerUsername,
ResourceOwnerPassword, ResourceOwnerPassword,
Scope, Scope,
TokenResponse,
TokenUrl TokenUrl
}; };
use oauth2::basic::{ use oauth2::basic::{
...@@ -36,6 +37,9 @@ use oauth2::basic::{ ...@@ -36,6 +37,9 @@ use oauth2::basic::{
}; };
use oauth2::reqwest::http_client; use oauth2::reqwest::http_client;
use serde::Deserialize;
use reqwest;
fn full_key(prefix: &str, key: &str) -> String { fn full_key(prefix: &str, key: &str) -> String {
let parts = vec![prefix.to_string(), key.to_string()]; let parts = vec![prefix.to_string(), key.to_string()];
let full_key = parts.join("."); let full_key = parts.join(".");
...@@ -70,7 +74,7 @@ fn get_client<E: Copy>(conf: Config, prefix: &str, error_value: E) -> Result<Bas ...@@ -70,7 +74,7 @@ fn get_client<E: Copy>(conf: Config, prefix: &str, error_value: E) -> Result<Bas
return Ok(client); return Ok(client);
} }
pub fn get_access_token<E: Copy>(conf: Config, prefix: &str, error_value: E, unauth_value: E) -> Result<BasicTokenResponse, E> { pub fn get_access_token_client<E: Copy>(conf: Config, prefix: &str, error_value: E, unauth_value: E) -> Result<BasicTokenResponse, E> {
let scopes: Vec<String> = match get_optional(&conf, &full_key(prefix, "scopes")) { let scopes: Vec<String> = match get_optional(&conf, &full_key(prefix, "scopes")) {
Some(v) => v, Some(v) => v,
None => vec![] None => vec![]
...@@ -129,7 +133,21 @@ pub fn get_access_token_password<E: Copy>(conf: Config, prefix: &str, username: ...@@ -129,7 +133,21 @@ pub fn get_access_token_password<E: Copy>(conf: Config, prefix: &str, username:
} }
} }
fn do_json_request<E: Copy>(conf: Config, url: String, error_value: E, unauth_value: E) -> Result<String, E> { fn get_data<T: for<'de> Deserialize<'de>, E>(conf: Config, token: BasicTokenResponse, endpoint: String, error_value: E) -> Result<T, E> {
let token = get_access_token(conf, "nss", error_value, unauth_value)?; let access_token = token.access_token().secret();
Ok("".to_string())
let client = reqwest::blocking::Client::new();
let res = match client
.get(endpoint)
.header(reqwest::header::AUTHORIZATION, format!("Bearer {}", access_token))
.send() {
Ok(r) => r,
Err(_) => return Err(error_value)
};
let data = match res.json() {
Ok(d) => d,
Err(_) => return Err(error_value)
};
return Ok(data);
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment