root / trunk / sandbox / jhb / oc2 / testutils.py

Revision 342, 1.7 kB (checked in by ocjhb, 5 months ago)

trying to prevent some evil posts

  • Property svn:mime-type set to text/plain
  • Property svn:eol-style set to native
  • Property svn:executable set to *
Line 
1"""This file is needed by documentation.py and testissuer.py"""
2
3import BaseHTTPServer, threading
4import issuer, mint, transports, urllib
5
6
7class 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
38class TestingHandler(Handler):
39    """Supress output to stderr"""
40
41    def log_message(self, format, *args):
42        pass
43
44def 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()
Note: See TracBrowser for help on using the browser.