diff --git a/l402_server.py b/l402_server.py new file mode 100644 index 0000000..e83d929 --- /dev/null +++ b/l402_server.py @@ -0,0 +1,35 @@ + +#!/usr/bin/env python3 +from http.server import HTTPServer, BaseHTTPRequestHandler +import json +import secrets + +class L402Handler(BaseHTTPRequestHandler): + def do_GET(self): + if self.path == '/api/cost-estimate': + # Simulate L402 Challenge + macaroon = secrets.token_hex(16) + invoice = "lnbc1..." # Mock invoice + + self.send_response(402) + self.send_header('WWW-Authenticate', f'L402 macaroon="{macaroon}", invoice="{invoice}"') + self.send_header('Content-type', 'application/json') + self.end_headers() + + response = { + "error": "Payment Required", + "message": "Please pay the invoice to access cost estimation." + } + self.wfile.write(json.dumps(response).encode()) + else: + self.send_response(404) + self.end_headers() + +def run(server_class=HTTPServer, handler_class=L402Handler, port=8080): + server_address = ('', port) + httpd = server_class(server_address, handler_class) + print(f"Starting L402 Skeleton Server on port {port}...") + httpd.serve_forever() + +if __name__ == "__main__": + run()