def create_backend_app(service): from werkzeug.routing import Map # Create the backend_app backend_app = Flask(__name__) backend_app.debug = True backend_app.service = service # Reset view functions to reset the app backend_app.view_functions = {} backend_app.url_map = Map() backend_app.url_map.converters['regex'] = RegexConverter backend = BACKENDS[service] for url_path, handler in backend.flask_paths.items(): if handler.__name__ == 'dispatch': endpoint = '{0}.dispatch'.format(handler.__self__.__name__) else: endpoint = None if endpoint in backend_app.view_functions: # HACK: Sometimes we map the same view to multiple url_paths. Flask # requries us to have different names. endpoint += "2" backend_app.add_url_rule( url_path, endpoint=endpoint, methods=HTTP_METHODS, view_func=convert_flask_to_httpretty_response(handler), ) backend_app.test_client_class = AWSTestHelper return backend_app
def create_backend_app(service): from werkzeug.routing import Map # Create the backend_app backend_app = Flask(__name__) backend_app.debug = True backend_app.service = service # Reset view functions to reset the app backend_app.view_functions = {} backend_app.url_map = Map() backend_app.url_map.converters['regex'] = RegexConverter backend = BACKENDS[service] for url_path, handler in backend.flask_paths.items(): if handler.__name__ == 'dispatch': endpoint = '{0}.dispatch'.format(handler.__self__.__name__) else: endpoint = None if endpoint in backend_app.view_functions: # HACK: Sometimes we map the same view to multiple url_paths. Flask # requries us to have different names. endpoint += "2" backend_app.add_url_rule( url_path, endpoint=endpoint, methods=HTTP_METHODS, view_func=convert_flask_to_httpretty_response(handler), strict_slashes=False, ) backend_app.test_client_class = AWSTestHelper return backend_app
def configure_urls(service): backend = globals()["{}_backend".format(service)] from werkzeug.routing import Map app.url_map = Map() app.url_map.converters['regex'] = RegexConverter for url_path, handler in backend.flask_paths.iteritems(): app.route(url_path, methods=HTTP_METHODS)(convert_flask_to_httpretty_response(handler))
def create_backend_app(service): from werkzeug.routing import Map # Create the backend_app backend_app = Flask(__name__) backend_app.debug = True # Reset view functions to reset the app backend_app.view_functions = {} backend_app.url_map = Map() backend_app.url_map.converters['regex'] = RegexConverter backend = BACKENDS[service] for url_path, handler in backend.flask_paths.items(): if handler.__name__ == 'dispatch': endpoint = '{0}.dispatch'.format(handler.__self__.__name__) else: endpoint = None backend_app.route( url_path, endpoint=endpoint, methods=HTTP_METHODS)(convert_flask_to_httpretty_response(handler)) return backend_app
def configure_urls(service): backend = globals()["{}_backend".format(service)] from werkzeug.routing import Map app.url_map = Map() app.url_map.converters['regex'] = RegexConverter for url_path, val in backend.flask_paths.iteritems(): subdomain = val.get('subdomain', None) app.route(url_path, host=subdomain, methods=HTTP_METHODS)(convert_flask_to_httpretty_response(val['handler']))
def configure_urls(service): backend = BACKENDS[service] from werkzeug.routing import Map # Reset view functions to reset the app app.view_functions = {} app.url_map = Map() app.url_map.converters['regex'] = RegexConverter for url_path, handler in backend.flask_paths.iteritems(): app.route(url_path, methods=HTTP_METHODS)(convert_flask_to_httpretty_response(handler))
def configure_urls(service): module = sys.modules[__name__] backend = getattr(module, "{}_backend".format(service)) from werkzeug.routing import Map # Reset view functions to reset the app app.view_functions = {} app.url_map = Map() app.url_map.converters['regex'] = RegexConverter for url_path, handler in backend.flask_paths.iteritems(): app.route(url_path, methods=HTTP_METHODS)(convert_flask_to_httpretty_response(handler))
def configure_urls(service): backend = BACKENDS[service] from werkzeug.routing import Map # Reset view functions to reset the app app.view_functions = {} app.url_map = Map() app.url_map.converters['regex'] = RegexConverter for url_path, handler in backend.flask_paths.iteritems(): app.route(url_path, methods=HTTP_METHODS)( convert_flask_to_httpretty_response(handler))
def create_backend_app(service): from werkzeug.routing import Map # Create the backend_app backend_app = Flask(__name__) backend_app.debug = True # Reset view functions to reset the app backend_app.view_functions = {} backend_app.url_map = Map() backend_app.url_map.converters['regex'] = RegexConverter backend = BACKENDS[service] for url_path, handler in backend.flask_paths.iteritems(): backend_app.route(url_path, methods=HTTP_METHODS)(convert_flask_to_httpretty_response(handler)) return backend_app
def create_backend_app(service): from werkzeug.routing import Map # Create the backend_app backend_app = Flask(__name__) backend_app.debug = True backend_app.service = service CORS(backend_app) # Reset view functions to reset the app backend_app.view_functions = {} backend_app.url_map = Map() backend_app.url_map.converters["regex"] = RegexConverter backend = list(backends.get_backend(service).values())[0] for url_path, handler in backend.flask_paths.items(): view_func = convert_flask_to_httpretty_response(handler) if handler.__name__ == "dispatch": endpoint = "{0}.dispatch".format(handler.__self__.__name__) else: endpoint = view_func.__name__ original_endpoint = endpoint index = 2 while endpoint in backend_app.view_functions: # HACK: Sometimes we map the same view to multiple url_paths. Flask # requires us to have different names. endpoint = original_endpoint + str(index) index += 1 # Some services do not provide a URL path # I.e., boto3 sends a request to 'https://ingest.timestream.amazonaws.com' # Which means we have a empty url_path to catch this request - but Flask can't handle that if url_path: backend_app.add_url_rule( url_path, endpoint=endpoint, methods=HTTP_METHODS, view_func=view_func, strict_slashes=False, ) backend_app.test_client_class = AWSTestHelper return backend_app
def create_backend_app(service): from werkzeug.routing import Map # Create the backend_app backend_app = Flask(__name__) backend_app.debug = True backend_app.service = service # Reset view functions to reset the app backend_app.view_functions = {} backend_app.url_map = Map() backend_app.url_map.converters["regex"] = RegexConverter backend = list(backends.get_backend(service).values())[0] for url_path, handler in backend.flask_paths.items(): view_func = convert_flask_to_httpretty_response(handler) if handler.__name__ == "dispatch": endpoint = "{0}.dispatch".format(handler.__self__.__name__) else: endpoint = view_func.__name__ original_endpoint = endpoint index = 2 while endpoint in backend_app.view_functions: # HACK: Sometimes we map the same view to multiple url_paths. Flask # requires us to have different names. endpoint = original_endpoint + str(index) index += 1 backend_app.add_url_rule( url_path, endpoint=endpoint, methods=HTTP_METHODS, view_func=view_func, strict_slashes=False, ) backend_app.test_client_class = AWSTestHelper return backend_app
def create_backend_app(service, cors=False): from werkzeug.routing import Map # Create the backend_app backend_app = Flask(__name__) # If we set the CORS flag, wrap the app to accept all if cors: @backend_app.after_request def allow_cors(response): response.headers["Access-Control-Allow-Origin"] = "*" response.headers["Access-Control-Allow-Headers"] = "X-CSRF-Token" response.headers["Access-Control-Max-Age"] = "3" response.headers["Access-Control-Allow-Methods"] = "OPTIONS, HEAD, GET, POST, PUT, DELETE" response.headers["X-CSRF-Token"] = "5A44B387B75E54417F6C64FF3D485141" print(response.headers) return response backend_app.debug = True # Reset view functions to reset the app backend_app.view_functions = {} backend_app.url_map = Map() backend_app.url_map.converters['regex'] = RegexConverter backend = BACKENDS[service] for url_path, handler in backend.flask_paths.items(): if handler.__name__ == 'dispatch': endpoint = '{0}.dispatch'.format(handler.__self__.__name__) else: endpoint = None backend_app.route( url_path, endpoint=endpoint, methods=HTTP_METHODS)(convert_flask_to_httpretty_response(handler)) return backend_app