- main
- manifest
- deps
- main
- Install
- Run
import re
from urllib.parse import urlsplit, urlunsplit
from fastly_compute import requests
from fastly_compute.wsgi import WsgiHttpIncoming
from flask import Flask, request
app = Flask(__name__)
PATH_MATCH = re.compile(r"^/some-(custom|dynamic|complex)-pattern/url/path$")
@app.route("/", defaults={"path": ""})
@app.route("/<path:path>")
def handle_request(path):
parts = urlsplit(request.url)
new_path = parts.path
if PATH_MATCH.match(parts.path):
new_path = "/status/200"
origin_url = urlunsplit(
(parts.scheme, parts.netloc, new_path, parts.query, parts.fragment)
)
backend_response = requests.request(
request.method,
origin_url,
headers=dict(request.headers),
data=request.get_data(),
fastly_backend="origin_0",
)
return (
backend_response.content,
backend_response.status_code,
backend_response.headers,
)
HttpIncoming = WsgiHttpIncoming(app)