| 1 | """This file is needed by documentation.py and testissuer.py""" |
|---|
| 2 | |
|---|
| 3 | import BaseHTTPServer, threading |
|---|
| 4 | import issuer, mint, transports, urllib |
|---|
| 5 | |
|---|
| 6 | |
|---|
| 7 | class Handler(BaseHTTPServer.BaseHTTPRequestHandler): |
|---|
| 8 | |
|---|
| 9 | def do_POST(self): |
|---|
| 10 | #print self.server |
|---|
| 11 | if self.path == '/stop': |
|---|
| 12 | raise 'foobar' |
|---|
| 13 | length = self.headers.get('Content-Length') |
|---|
| 14 | data = self.rfile.read(int(length)) |
|---|
| 15 | data = urllib.unquote(data) |
|---|
| 16 | if not data.startswith('['): |
|---|
| 17 | return |
|---|
| 18 | message = transports.createMessage(data) |
|---|
| 19 | if message.header == 'AskLatestCDD': |
|---|
| 20 | answer = self.issuer.giveLatestCDD(message) |
|---|
| 21 | elif message.header == 'FetchMintKeys': |
|---|
| 22 | answer = self.issuer.giveMintKeys(message) |
|---|
| 23 | elif message.header == 'TransferRequest': |
|---|
| 24 | answer = self.issuer.handleTransferRequest(self.mint,self.authorizer,message) |
|---|
| 25 | elif message.header == 'TransferResume': |
|---|
| 26 | answer = self.issuer.resumeTransfer(message) |
|---|
| 27 | |
|---|
| 28 | self.send_response(200) |
|---|
| 29 | self.send_header("Content-type", "text/plain") |
|---|
| 30 | self.wfile.write('\r\n') |
|---|
| 31 | self.wfile.write(answer.toString(True)) |
|---|
| 32 | |
|---|
| 33 | #disable dns lookup |
|---|
| 34 | def address_string(self): |
|---|
| 35 | return str(self.client_address[0]) |
|---|
| 36 | |
|---|
| 37 | |
|---|
| 38 | class TestingHandler(Handler): |
|---|
| 39 | """Supress output to stderr""" |
|---|
| 40 | |
|---|
| 41 | def log_message(self, format, *args): |
|---|
| 42 | pass |
|---|
| 43 | |
|---|
| 44 | def run_once(port,issuer=None,mint=None,authorizer=None): |
|---|
| 45 | import time |
|---|
| 46 | time.sleep(0.001) |
|---|
| 47 | Handler.issuer = issuer |
|---|
| 48 | Handler.mint = mint |
|---|
| 49 | Handler.authorizer = authorizer |
|---|
| 50 | httpd = BaseHTTPServer.HTTPServer(("", port), TestingHandler) |
|---|
| 51 | import threading |
|---|
| 52 | t = threading.Thread(target=httpd.handle_request) |
|---|
| 53 | t.start() |
|---|