36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
|
|
#!/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()
|