Code:
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
'''
demo of pyBM API , must be launched from within pyBM.../src folder ; see http://bitmessage.mybb.rocks/viewtopic.php?id=33 and https://github.com/Bitmessage/PyBitmessage/wiki
'''
import subprocess
import xmlrpclib
import ntpath
import socket
import base64
import random
import json
import time
import sys
import api
import os
from bmconfigparser import BMConfigParser
import ConfigParser
hier = os.path.abspath(__file__)
def getApiString():
global keysPath
config = ConfigParser.SafeConfigParser()
keysPath = 'keys.dat'
config.read(keysPath) # first try to load keys.dat from source directory.
try:
config.get('bitmessagesettings','settingsversion')
keysFolder = ''
except:
# keys.dat not found in source directory. Try appdata directory.
keysFolder = findKeysFolder()
keysPath = keysFolder + 'keys.dat'
config = ConfigParser.SafeConfigParser()
config.read(keysPath)
try:
config.get('bitmessagesettings','settingsversion')
except:
# keys.dat not there either. something is wrong.
drawHeader()
print ' '
print '+--------------------------------------------------------------------+'
print '| unable to access the Bitmessage keys.dat file. |'
print '| Check to ensure this is in the same directory as Bitmessage. |'
print '+--------------------------------------------------------------------+'
print ' '
print config
print ' '
''' put this in manually into keys.dat
apienabled = true
apiport = 8442
apiinterface = 127.0.0.1
apiusername = bmf999
apipassword = bmf999
daemon = False
dontconnect = True
'''
apiPort = '8442'
try: apiPort = config.getint('bitmessagesettings', 'apiport')
except: print ' ( error ) unable to access keys.dat'
apiInterface = '127.0.0.1'
try: apiInterface = config.get('bitmessagesettings', 'apiinterface')
except: print ' ( error ) unable to access keys.dat'
apiUsername = 'bm999'
try: apiUsername = config.get('bitmessagesettings', 'apiusername')
except: print ' ( error ) unable to access keys.dat'
apiPassword = 'bmf999'
try: apiPassword = config.get('bitmessagesettings', 'apipassword')
except: print ' ( error ) unable to access keys.dat'
apiString = "http://" + apiUsername + ":" + apiPassword + "@" + apiInterface+ ":" + str(apiPort) + "/"
return apiString
def apiTest(apicall):
try:
result = apicall.add(22,11)
if result == 33:
pass #; print "bitmessage API is enabled and responding. proceeding."
else :
print "7 bitmessage API error. check keys.dat configuration. is bitmessage running?. exiting."
sys.exit(7)
except:
print "8 bitmessage API error. check keys.dat configuration. is API enabled? is bitmessage running?. exiting."
sys.exit(8)
def getAddress(passphrase,vNumber,sNumber):
passphrase = passphrase.encode('base64')
return api.getDeterministicAddress(passphrase,vNumber,sNumber)
api.statusBar("getting chan address.")
def sendBM():
address = getAddress("bitmessage", 4, 1) # general
timeStamp = time.time()
timeString = str(timeStamp)
timeSecs = timeString[:10]
plainSubject = " autopost this stuff " # + timeSecs
print "( subject ) ", plainSubject
plainMessage = " an api client "
message = plainMessage.encode('base64')
subject = plainSubject.encode('base64')
ttl = 30 #3600
try:
ackData = api.sendMessage(address, address, subject, message, 2, ttl)
print "( status ) ", api.getStatus(ackData) # if err, chan is not joined
except:
print "( api ) API Error."
if __name__ == "__main__":
api_string = getApiString()
api = xmlrpclib.ServerProxy( api_string)
#print "api_string is ", api_string ## api_string http://bmf999:bmf999@127.0.0.1:8442/
apiTest(api) ; #print(hier)
sendBM()