Skip to content

Commit 3440e44

Browse files
authored
Merge pull request #45 from awslabs/dev
readness_check_port defaults to port
2 parents 1bf2463 + fb12ca8 commit 3440e44

File tree

2 files changed

+34
-23
lines changed

2 files changed

+34
-23
lines changed

.rustfmt.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
max_width=160
1+
max_width=120

src/main.rs

Lines changed: 33 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,28 @@ use tokio_retry::{strategy::FixedInterval, Retry};
1111

1212
type Error = Box<dyn std::error::Error + Send + Sync + 'static>;
1313

14+
struct AdapterOptions {
15+
host: String,
16+
port: String,
17+
readiness_check_port: String,
18+
readiness_check_path: String,
19+
base_path: Option<String>,
20+
}
21+
1422
#[tokio::main]
1523
async fn main() -> Result<(), Error> {
1624
env_logger::init();
1725

26+
// setup config options from environment variables
27+
let options = &AdapterOptions {
28+
host: env::var("HOST").unwrap_or_else(|_| "127.0.0.1".to_string()),
29+
port: env::var("PORT").unwrap_or_else(|_| "8080".to_string()),
30+
readiness_check_port: env::var("READINESS_CHECK_PORT")
31+
.unwrap_or_else(|_| env::var("PORT").unwrap_or_else(|_| "8080".to_string())),
32+
readiness_check_path: env::var("READINESS_CHECK_PATH").unwrap_or_else(|_| "/".to_string()),
33+
base_path: env::var("REMOVE_BASE_PATH").ok(),
34+
};
35+
1836
// register as an external extension
1937
let handle = Handle::current();
2038
tokio::task::spawn_blocking(move || {
@@ -31,48 +49,41 @@ async fn main() -> Result<(), Error> {
3149
// check if the application is ready every 10 milliseconds
3250
Retry::spawn(FixedInterval::from_millis(10), || {
3351
let readiness_check_url = format!(
34-
"http://127.0.0.1:{}{}",
35-
env::var("READINESS_CHECK_PORT").unwrap_or_else(|_| "8080".to_string()),
36-
env::var("READINESS_CHECK_PATH").unwrap_or_else(|_| "/".to_string())
52+
"http://{}:{}{}",
53+
options.host, options.readiness_check_port, options.readiness_check_path
3754
);
3855
reqwest::get(readiness_check_url)
3956
})
4057
.await?;
4158

4259
// start lambda runtime
43-
let options = &HandlerOptions {
44-
http_client: Client::builder().redirect(redirect::Policy::none()).build().unwrap(),
45-
host: env::var("HOST").unwrap_or_else(|_| "127.0.0.1".to_string()),
46-
port: env::var("PORT").unwrap_or_else(|_| "8080".to_string()),
47-
base_path: env::var("REMOVE_BASE_PATH").unwrap_or_default(),
48-
};
49-
lambda_http::run(http_handler(move |event: Request| async move { http_proxy_handler(event, options).await })).await?;
60+
let http_client = &Client::builder().redirect(redirect::Policy::none()).build().unwrap();
61+
lambda_http::run(http_handler(|event: Request| async move {
62+
http_proxy_handler(event, http_client, options).await
63+
}))
64+
.await?;
5065
Ok(())
5166
}
5267

53-
struct HandlerOptions {
54-
http_client: Client,
55-
host: String,
56-
port: String,
57-
base_path: String,
58-
}
59-
60-
async fn http_proxy_handler(event: Request, options: &HandlerOptions) -> Result<Response<Body>, Error> {
68+
async fn http_proxy_handler(
69+
event: Request,
70+
http_client: &Client,
71+
options: &AdapterOptions,
72+
) -> Result<Response<Body>, Error> {
6173
let host = options.host.as_str();
6274
let port = options.port.as_str();
6375
let (parts, body) = event.into_parts();
6476
let mut path_and_query = parts.uri.path_and_query().unwrap().as_str();
6577
// strip away Base Path if environment variable REMOVE_BASE_PATH is set.
66-
if options.base_path != String::default() {
67-
if let Some(value) = path_and_query.strip_prefix(options.base_path.as_str()) {
78+
if options.base_path.is_some() {
79+
if let Some(value) = path_and_query.strip_prefix(options.base_path.as_ref().unwrap()) {
6880
path_and_query = value;
6981
};
7082
}
7183
let app_url = format!("http://{}:{}{}", host, port, path_and_query);
7284
debug!("app_url is {:#?}", app_url);
7385

74-
let app_response = options
75-
.http_client
86+
let app_response = http_client
7687
.request(parts.method, app_url)
7788
.headers(parts.headers)
7889
.body(body.to_vec())

0 commit comments

Comments
 (0)