1
1
import json
2
2
from typing import Any
3
- from urllib .parse import urljoin
4
3
5
4
import aws_cdk
6
5
from aws_cdk import (
18
17
19
18
20
19
class ControlBrokerApi (aws_apigatewayv2_alpha .HttpApi ):
20
+
21
21
CONTROL_BROKER_EVAL_ENGINE_INVOCATION_PATH = "/EvalEngine"
22
22
23
23
def __init__ (
@@ -68,8 +68,18 @@ def __init__(
68
68
},
69
69
)
70
70
self .urls = []
71
+
72
+ self .parsed_url = self .url .split ('/' )
73
+ self .scheme = self .parsed_url [0 ].rstrip (':' )
74
+ self .netloc = self .parsed_url [2 ].rstrip ('/' )
75
+
71
76
self ._add_control_broker_eval_engine_invocation_route ()
72
77
78
+ def _urljoin (self , path : str ) -> str :
79
+ """Concatenate and return a URL using the base HttpApi's scheme + netloc with the desired path."""
80
+
81
+ return '{}://{}/{}' .format (self .scheme , self .netloc , path )
82
+
73
83
def _add_control_broker_eval_engine_invocation_route (self ):
74
84
"""Adds a route, which only handlers can call, that directly invokes the Control Broker Eval Engine."""
75
85
@@ -84,10 +94,9 @@ def _add_control_broker_eval_engine_invocation_route(self):
84
94
integration = self .handler_invocation_integration ,
85
95
authorizer = aws_apigatewayv2_authorizers_alpha .HttpIamAuthorizer (),
86
96
)[0 ]
87
- eval_engine_url = urljoin (
88
- self .url .rstrip ("/" ),
89
- self .CONTROL_BROKER_EVAL_ENGINE_INVOCATION_PATH .strip ("/" ),
90
- )
97
+
98
+ eval_engine_url = self ._urljoin (self .CONTROL_BROKER_EVAL_ENGINE_INVOCATION_PATH .strip ('/' ))
99
+
91
100
self .urls .append (eval_engine_url )
92
101
self .handler_invocation_url_mapping = aws_apigatewayv2_alpha .ParameterMapping ()
93
102
self .handler_invocation_url_mapping .overwrite_header (
@@ -131,7 +140,7 @@ def add_api_handler(
131
140
integration = integration ,
132
141
** kwargs ,
133
142
)[0 ]
134
- handler_url = urljoin ( self .url . rstrip ( "/" ), path .strip ("/" ))
143
+ handler_url = self ._urljoin ( path .strip ("/" ))
135
144
self .urls .append (handler_url )
136
145
CfnOutput (self , f"{ name } HandlerUrl" , value = handler_url )
137
146
# return route
0 commit comments