def request(request, address): conn = bitcoin.connect_to_local() result = False try: fileRequest = Request.objects.get(address=address) except: return HttpResponse(simplejson.dumps(False)) try: if conn.getreceivedbyaddress(address, settings.MIN_CONFIRMATIONS) >= \ + fileRequest.storedFile.amount: result = settings.ROOT_URL + "/download/" + address except: result = False return HttpResponse(simplejson.dumps(result))
def getLink(request, uuid): try: destFile = StoredFile.objects.get(uuid=uuid) except: return HttpResponse(simplejson.dumps(False)) conn = bitcoin.connect_to_local() result = dict() result['bitcoinAddress'] = conn.getnewaddress() result['amount'] = destFile.amount request = Request(storedFile=destFile, address=result['bitcoinAddress']) request.save() return HttpResponse(simplejson.dumps(result))
def download(request, address): try: fileRequest = Request.objects.get(address=address) except: return HttpResponse('false') print dir(fileRequest.storedFile) uuid = fileRequest.storedFile.uuid filename = settings.MEDIA_ROOT + '/' + uuid wrapper = FileWrapper(file(filename)) response = HttpResponse(wrapper, content_type='data/unknown') response['Content-Length'] = os.path.getsize(filename) conn = bitcoin.connect_to_local() conn.sendtoaddress(fileRequest.storedFile.destAddress, fileRequest.storedFile.amount) fileRequest.delete() return response
''' Test script *WARNING* Don't run this on a production bitcoin server! *WARNING* Only on the test network. ''' import sys sys.path.append('../src') import bitcoin from bitcoin.exceptions import BitcoinException,InsufficientFunds if __name__ == "__main__": conn = bitcoin.connect_to_local() assert(type(conn.getblockcount()) is int) assert(type(conn.getblocknumber()) is int) assert(type(conn.getconnectioncount()) is int) assert(type(conn.getdifficulty()) is float) assert(type(conn.getgenerate()) is bool) conn.setgenerate(True) conn.setgenerate(True, 2) conn.setgenerate(False) assert(type(conn.gethashespersec()) is int) account = "testaccount" account2 = "testaccount2" bitcoinaddress = conn.getnewaddress(account) conn.setaccount(bitcoinaddress, account) address = conn.getaccountaddress(account) address2 = conn.getaccountaddress(account2) assert(conn.getaccount(address) == account) addresses = conn.getaddressesbyaccount(account)