Skip to content
This repository was archived by the owner on Feb 20, 2024. It is now read-only.

Commit febeeea

Browse files
authored
Merge pull request #33 from Virtual-Finland-Development/VFD-245-profiilin-poiston-reititys-testbed-apille
user deletion (users-api)
2 parents 646feb8 + 14e85f7 commit febeeea

File tree

6 files changed

+81
-2
lines changed

6 files changed

+81
-2
lines changed

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,7 @@ infra/build/*
1515
.cargo_home
1616

1717
# idea
18-
.idea
18+
.idea
19+
20+
# vscode settings
21+
.vscode

src/lib/api_app/src/api/routes/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ use app::{
1010
pub mod application;
1111
pub mod jmf;
1212
pub mod testbed;
13+
pub mod users_api;
1314

1415
#[derive(OpenApi, OpenApiRouter)]
1516
#[openapi(
@@ -40,6 +41,7 @@ pub mod testbed;
4041
testbed::productizers::nsg::non_listed_company::beneficial_owners::get_beneficial_owners,
4142
testbed::productizers::nsg::non_listed_company::signatory_rights::get_signatory_rights,
4243
testbed::productizers::nsg::basic_information::get_nsg_basic_information,
44+
users_api::delete_user
4345
),
4446
components(schemas( // @TODO: would be very nice to auto-generate schemas
4547
testbed::ProxyRequestInput,
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
use std::env;
2+
3+
use app::{
4+
helpers::parse_request_headers, requests::engage_json_request, responses::APIResponse,
5+
router::ParsedRequest,
6+
};
7+
use http::Method;
8+
use serde_json::{json, Value as JSONValue};
9+
10+
#[utoipa::path(
11+
delete,
12+
path = "/users-api/user",
13+
responses((
14+
status = 200,
15+
description = "Deletion response",
16+
))
17+
)]
18+
pub async fn delete_user(request: ParsedRequest) -> APIResponse {
19+
let users_api_origin =
20+
env::var("USERS_API_ENDPOINT_ORIGIN").expect("USERS_API_ENDPOINT_ORIGIN must be set");
21+
let endpoint_url = format!("{}/user", users_api_origin);
22+
let request_input = json!({});
23+
let request_headers = parse_request_headers(request)?;
24+
25+
let response = engage_json_request::<JSONValue, JSONValue>(
26+
Method::DELETE,
27+
endpoint_url,
28+
&request_input,
29+
request_headers,
30+
)
31+
.await?;
32+
Ok(response)
33+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
use http::{HeaderMap, HeaderValue};
2+
3+
use crate::{responses::APIRoutingError, router::ParsedRequest};
4+
/**
5+
* Parses the authorization headers from the input request
6+
*/
7+
pub fn parse_request_headers(request: ParsedRequest) -> Result<HeaderMap, APIRoutingError> {
8+
// Prep auth header forwarding
9+
let mut request_headers = HeaderMap::new();
10+
request_headers.insert("Content-Type", HeaderValue::from_static("application/json"));
11+
12+
if request.headers.contains_key("authorization") {
13+
request_headers.insert(
14+
"authorization",
15+
request
16+
.headers
17+
.get("authorization")
18+
.ok_or_else(|| {
19+
APIRoutingError::UnprocessableEntity("No authorization header".to_string())
20+
})?
21+
.clone(),
22+
);
23+
}
24+
25+
if request.headers.contains_key("x-consent-token") {
26+
request_headers.insert(
27+
"x-consent-token",
28+
request
29+
.headers
30+
.get("x-consent-token")
31+
.ok_or_else(|| {
32+
APIRoutingError::UnprocessableEntity(
33+
"No x-consent-token header".to_string(),
34+
)
35+
})?
36+
.clone(),
37+
);
38+
}
39+
Ok(request_headers)
40+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
pub mod helpers;
12
pub mod requests;
23
pub mod responses;
34
pub mod router;

src/lib/api_app/src/lib/utils/src/api.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ pub fn get_cors_response_headers() -> HeaderMap {
1919

2020
headers.insert(
2121
HeaderName::from_static("access-control-allow-methods"),
22-
HeaderValue::from_static("GET, POST, OPTIONS"),
22+
HeaderValue::from_static("GET, POST, DELETE, OPTIONS"),
2323
);
2424

2525
headers.insert(

0 commit comments

Comments
 (0)