- Timestamp:
- 06/15/09 02:46:06 (3 years ago)
- Location:
- trunk/sandbox/jhb
- Files:
-
- 5 modified
-
mobile/ocwallet.py (modified) (1 diff)
-
oc2/testwallet.py (modified) (1 diff)
-
oc2/wallet.py (modified) (4 diffs)
-
webwallet/cgi/wallet.cgi (modified) (9 diffs)
-
webwallet/cgiserver.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/sandbox/jhb/mobile/ocwallet.py
r324 r327 434 434 435 435 if method == 1: 436 url = appuifw.query(u'address','text',u'192.168.2.105 ')436 url = appuifw.query(u'address','text',u'192.168.2.105:%s' % walletport) 437 437 if not url: 438 438 return 439 439 else: 440 url = 'http://%s :%s' % (url,walletport)440 url = 'http://%s' % (url) 441 441 transport = self.getHTTPTransport(url) 442 442 if not transport: -
trunk/sandbox/jhb/oc2/testwallet.py
r279 r327 4 4 >>> w = wallet.Wallet(storage.Storage().setFilename('data/test.bin')) 5 5 >>> import transports 6 >>> transport = transports.HTTPTransport('http://localhost:9090/') 7 >>> w.buyCoins(transport,97,'foobar') 8 6 >>> transport = transports.HTTPTransport('http://baach.de:9090/') 7 >>> w.addCurrency(transport) 8 >>> w.mintCoins(transport,13,'foobar') 9 >>> transport = transports.HTTPTransport('http://localhost:9091/wallet.cgi') 10 >>> w.spendCoins(transport,'BaachBuck',5,'foobar') 9 11 10 12 """ -
trunk/sandbox/jhb/oc2/wallet.py
r322 r327 4 4 import messages 5 5 import coinsplitting 6 import sys 6 7 7 8 class Wallet(Entity): … … 30 31 def addIncoming(self,message): 31 32 self.storage.setdefault('incoming',{})[message.transactionId] = message 32 33 #sys.stderr.write(str(self.storage.filename)) 34 33 35 def getIncoming(self,tid): 34 return self.storage.setdefault('incoming',{}).get(tid,None) 36 #sys.stderr.write(str(tid)) 37 #sys.stderr.write(str(self.storage.filename)) 38 transaction = self.storage.setdefault('incoming',{}).get(tid,None) 39 if transaction != None: 40 del(self.storage['incoming'][tid]) 41 return transaction 35 42 36 43 … … 180 187 out.append((cdd,amount)) 181 188 except: 182 del(self.storage[key]) 189 #del(self.storage[key]) XXX why was that? 190 pass 183 191 return out 184 192 … … 333 341 334 342 self.feedback(u'Spending coins: wating for confirmation') 335 self.announceSum(transport,tid,amount,target)343 response = self.announceSum(transport,tid,amount,target) 336 344 self.feedback(u'Spending coins: wating for other side') 337 345 response = self.requestSpend(transport,tid,picked) -
trunk/sandbox/jhb/webwallet/cgi/wallet.cgi
r326 r327 22 22 self.wallet = wallet.Wallet(storage) 23 23 self.output = [] 24 self.mimetype = 'text/html' 24 25 25 26 def out(self,text): 26 27 if type(text) != type(''): 27 28 text = str(text) 28 self.output.append(text +'<br/>')29 self.output.append(text) 29 30 30 31 def printout(self): 31 print """Content-type:text/html""" 32 print 33 print '\n'.join(self.output) 32 print """Content-type:%s""" % self.mimetype 33 print "\r" 34 if self.mimetype == 'text/html': 35 print '<br/>\n'.join(self.output) 36 else: 37 print '\n'.join(self.output) 34 38 35 39 def getCurrency(self,currencyId): … … 37 41 38 42 def getCurrencies(self): 39 return [(cdd.currencyId,(cdd,amount)) for cdd,amount in w.wallet.listCurrencies()]43 return [(cdd.currencyId,(cdd,amount)) for cdd,amount in self.wallet.listCurrencies()] 40 44 41 45 def dispatchRequest(self): … … 44 48 self.action = action = self.form.getfirst('action','') 45 49 self.method = method = self.env['REQUEST_METHOD'].lower() 46 50 51 postmapping = dict(addcurrency = self.addCurrency, 52 mint = self.mintCoins, 53 redeem = self.redeemCoins, 54 delcurrency = self.delCurrency, 55 spend = self.spendCoins) 56 57 getmapping = dict(addcurrency = self.displayAddCurrency, 58 mint = self.displayMint, 59 redeem = self.displayRedeem, 60 spend = self.displaySpend, 61 delcurrency = self.displayDelCurrency, 62 freshenup = self.freshenUp) 47 63 48 64 if method == 'post': 49 if action == 'addcurrency': 50 self.addCurrency() 51 elif action == 'mint': 52 self.mintCoins() 53 elif action == '': 54 pass 65 if postmapping.has_key(action): 66 postmapping[action]() 67 else: 68 self.receiveCoins() 55 69 56 70 elif method == 'get': 57 if action == '': 58 #basically nothing happened 71 if getmapping.has_key(action): 72 getmapping[action]() 73 else: 59 74 self.displayMain() 60 elif action == 'addcurrency': 61 self.displayAddCurrency() 62 elif action == 'mint': 63 self.displayMint() 64 65 66 def addCurrency(self): 67 url = self.form.getfirst('url','') 68 if url: 69 transport = transports.HTTPTransport(url) 70 w.wallet.addCurrency(transport) 71 storage.save() 72 self.displayMain() 73 74 75 def mintCoins(self): 76 amount = int(self.form.getfirst('amount',1)) 77 reference = self.form.getfirst('reference') 78 cdd,wehave = self.getCurrency(self.form.getfirst('currencyId')) 79 transport = transports.HTTPTransport(cdd.issuerServiceLocation) 80 self.wallet.mintCoins(transport,amount,reference) 81 self.storage.save() 82 self.displayMain() 75 76 77 ################################ main ################################################ 83 78 84 79 … … 90 85 for cdd,amount in currencies: 91 86 entry = """ 92 <p>%s <b href='%s'>%ss</b><br/> 93 <a href='%s?action=mint¤cyId=%s'>Withdraw</a> 87 <p>%(amount)s <b href='%(isl)s'>%(cid)ss</b><br/> 88 <a href='%(baseurl)s?action=spend¤cyId=%(cid)s'>Pay</a> 89 <a href='%(baseurl)s?action=freshenup¤cyId=%(cid)s'>Refresh</a> 90 <a href='%(baseurl)s?action=mint¤cyId=%(cid)s'>Withdraw</a> 91 <a href='%(baseurl)s?action=redeem¤cyId=%(cid)s'>Redeem</a> 92 <a href='%(baseurl)s?action=delcurrency¤cyId=%(cid)s'>Remove</a> 94 93 </p> 95 """ % (amount,cdd.issuerServiceLocation,cdd.currencyId,baseurl,cdd.currencyId) 94 """ % dict(amount=amount, 95 isl=cdd.issuerServiceLocation, 96 cid=cdd.currencyId, 97 baseurl=baseurl) 96 98 items.append(entry) 97 99 items = '\n'.join(items) … … 106 108 self.out(html) 107 109 110 ############################### add a currency #################################### 111 112 113 def addCurrency(self): 114 url = self.form.getfirst('url','') 115 if url: 116 transport = transports.HTTPTransport(url) 117 self.wallet.addCurrency(transport) 118 self.storage.save() 119 self.displayMain() 120 108 121 def displayAddCurrency(self): 109 122 html=""" … … 120 133 self.out(html) 121 134 135 136 137 ############################### delete a currency #################################### 138 139 def displayDelCurrency(self): 140 currencyId = self.form.getfirst('currencyId','') 141 cdd,amount = self.getCurrency(currencyId) 142 html=""" 143 <html><body> 144 <h2>Remove %s</h2> 145 <form action='%s' method='post'> 146 <p>Really really delete %s with %s coins - there is no way to recover</p> 147 <p><input type='submit' value='Remove %ss'/> 148 or 149 150 <a href='%s'>go back to main screen</a> 151 </p> 152 <input type='hidden' name='action' value='delcurrency'/> 153 <input type='hidden' name='currencyId' value='%s'/> 154 </form> 155 </body></html> 156 """ % (currencyId,baseurl,currencyId,amount,currencyId,baseurl,currencyId) 157 self.out(html) 158 159 def delCurrency(self): 160 id = self.form.getfirst('currencyId','') 161 self.wallet.deleteCurrency(id) 162 self.storage.save() 163 self.displayMain() 164 165 166 ############################### minting #################################### 167 168 def mintCoins(self): 169 amount = int(self.form.getfirst('amount',1)) 170 reference = self.form.getfirst('reference') 171 cdd,wehave = self.getCurrency(self.form.getfirst('currencyId')) 172 transport = transports.HTTPTransport(cdd.issuerServiceLocation) 173 self.wallet.mintCoins(transport,amount,reference) 174 self.storage.save() 175 self.displayMain() 176 177 122 178 def displayMint(self): 123 179 currencyId = self.form.getfirst('currencyId','coin') … … 127 183 <form action='%s' method='post'> 128 184 How many <b>%ss</b><br> 129 <input type=' text' name='amount' value='1' /><br>130 Reference<br>185 <input type='number' name='amount' value='1' /><br> 186 Optional message<br> 131 187 <input type='text' name='reference' value='secret' /><br> 132 188 <input type='submit' /> … … 139 195 self.out(html) 140 196 141 197 ############################### redeem #################################### 198 199 def redeemCoins(self): 200 amount = int(self.form.getfirst('amount',1)) 201 reference = self.form.getfirst('reference') 202 cdd,wehave = self.getCurrency(self.form.getfirst('currencyId')) 203 transport = transports.HTTPTransport(cdd.issuerServiceLocation) 204 self.wallet.redeemCoins(transport,amount,reference) 205 self.storage.save() 206 self.displayMain() 207 208 209 def displayRedeem(self): 210 currencyId = self.form.getfirst('currencyId','coin') 211 html=""" 212 <html><body> 213 <h2>Redeem coins</h2> 214 <form action='%s' method='post'> 215 How many <b>%ss</b><br> 216 <input type='number' name='amount' value='1' /><br> 217 Optional message<br> 218 <input type='text' name='reference' value='secret' /><br> 219 <input type='submit' /> 220 <input type='hidden' name='action' value='redeem'/> 221 <input type='hidden' name='currencyId' value='%s'/> 222 </form> 223 </body></html> 224 225 """ % (baseurl,currencyId,currencyId) 226 self.out(html) 227 228 ############################### spend #################################### 229 230 def spendCoins(self): 231 amount = int(self.form.getfirst('amount',1)) 232 reference = self.form.getfirst('reference') 233 url = self.form.getfirst('url') 234 url = 'http://%s:9091' % url 235 cid = self.form.getfirst('currencyId') 236 transport = transports.HTTPTransport(url) 237 self.wallet.spendCoins(transport,cid,amount,reference) 238 self.storage.save() 239 self.displayMain() 240 241 242 def displaySpend(self): 243 currencyId = self.form.getfirst('currencyId','coin') 244 html=""" 245 <html><body> 246 <h2>Pay someone</h2> 247 <form action='%s' method='post'> 248 Recipient<br/> 249 <input type='text' name='url' value='192.168.1.66' /><br> 250 How many <b>%ss</b><br> 251 <input type='number' name='amount' value='1' /><br> 252 Optional message<br> 253 <input type='text' name='reference' value='secret' /><br> 254 Please make sure the other side is ready to accept!<br> 255 <input type='submit' /> 256 <input type='hidden' name='action' value='spend'/> 257 <input type='hidden' name='currencyId' value='%s'/> 258 </form> 259 </body></html> 260 261 """ % (baseurl,currencyId,currencyId) 262 self.out(html) 263 264 ############################### freshenUp #################################### 265 266 def freshenUp(self): 267 cdd,wehave = self.getCurrency(self.form.getfirst('currencyId')) 268 transport = transports.HTTPTransport(cdd.issuerServiceLocation) 269 self.wallet.freshenUp(transport,cdd) 270 self.storage.save() 271 self.displayMain() 272 273 274 ############################### freshenUp #################################### 275 276 def receiveCoins(self): 277 message = transports.createMessage(self.form.list[0].name) 278 279 if message.header == 'SumAnnounce': 280 answer = self.wallet.listenSum(message) 281 if message.header == 'SpendRequest': 282 cdd,wehave = self.getCurrency(message.coins[0].currencyId) 283 transport = transports.HTTPTransport(cdd.issuerServiceLocation) 284 answer = self.wallet.listenSpend(transport,message) 285 self.storage.save() 286 self.mimetype='text/plain' 287 self.out(answer.toString(True)) 288 142 289 baseserver = "http://%s:%s" % (os.environ['SERVER_NAME'],os.environ['SERVER_PORT']) 143 290 baseurl = os.environ['SCRIPT_NAME'] 144 145 146 291 147 292 storage = oc2storage.Storage() … … 150 295 w = CGIWallet(storage) 151 296 w.dispatchRequest() 152 153 #out('=' * 80)154 #for key,value in sorted(env.items()):155 # #out("%50s: %s" % (key,value))156 # pass157 #out(form.list)158 297 w.printout() -
trunk/sandbox/jhb/webwallet/cgiserver.py
r325 r327 14 14 Handler.address_string = address_string 15 15 16 PORT = 800016 PORT = 9091 17 17 18 18
