Here is code for a simple Python API. Each method connects to the server, sends a request, gets a response, then returns a Python dictionary equivalent of the JSON. It uses standard Python modules. No error checking is done and only three functions from rpc.cpp are implemented. If there's interest I can write more.
To use it, the Python code should be something like...
access = BitcoinAPI()
access.getInfo()
access.getAmountReceived("1JyEmxiMso2RsFVfBcCa616npBvGgxiBX")
access.sendToAddress("1JyEmxiMso2RsFVfBcCa616npBvGgxiBX", 100.00) # Send 100 Bitcoins to my Address
This will be the base for automatic transactions on my site. If there are any questions or concerns let me know. If there is something severely wrong, feel free to school me.
import httplib, simplejson
class BitcoinAPI(object):
def __init__(self, host = "127.0.0.1", port = 8332, timeout = 3):
self.host = host
self.port = port
self.timeout = timeout
self.httpHeader = {"Content-type": "application/json"} # I don't know what needs to be in the header, but this works
return
def connect(self):
self.connection = httplib.HTTPConnection(self.host, self.port, timeout = self.timeout)
return
def disconnect(self):
self.connection.close()
return
# Functions return a python dictionary which should be equivalent to the JSON syntax received from the server
# ident or "id" is a constant 1, but can be overridden when calling. E.g. getAmountReceived(address, ident = 23)
def getInfo(self, ident = 1):
self.connect()
params = simplejson.dumps({"method": "getinfo", "params": [], "id": ident})
self.connection.request("POST", "/", params, self.httpHeader)
response = self.connection.getresponse()
#print response.status, response.reason # Use for troubleshooting
dictionary = simplejson.loads(response.read())
self.disconnect()
return dictionary
def getAmountReceived(self, address, ident = 1):
self.connect()
params = simplejson.dumps({"method": "getamountreceived", "params": [address], "id": ident})
self.connection.request("POST", "/", params, self.httpHeader)
response = self.connection.getresponse()
#print response.status, response.reason # Use for troubleshooting
dictionary = simplejson.loads(response.read())
self.disconnect()
return dictionary
def sendToAddress(self, address, amount, ident = 1):
self.connect()
params = simplejson.dumps({"method": "sendtoaddress", "params": [address, amount], "id": ident})
self.connection.request("POST", "/", params, self.httpHeader)
response = self.connection.getresponse()
#print response.status, response.reason # Use for troubleshooting
dictionary = simplejson.loads(response.read())
self.disconnect()
return dictionary