app.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. from flask import Flask, json, request, jsonify
  2. from json import JSONEncoder
  3. # Here are Iroha dependencies.
  4. # Python library generally consists of 3 parts:
  5. # Iroha, IrohaCrypto and IrohaGrpc which we need to import:
  6. import os
  7. from iroha import IrohaCrypto
  8. from iroha import Iroha, IrohaGrpc
  9. # Here is the information about the environment and admin account information:
  10. IROHA_HOST_ADDR = os.getenv('IROHA_HOST_ADDR', '127.0.0.1')
  11. IROHA_PORT = os.getenv('IROHA_PORT', '50051')
  12. ADMIN_ACCOUNT_ID = os.getenv('ADMIN_ACCOUNT_ID', 'admin@test')
  13. ADMIN_PRIVATE_KEY = os.getenv(
  14. 'ADMIN_PRIVATE_KEY', 'f101537e319568c765b2cc89698325604991dca57b9716b58016b253506cab70')
  15. # Here we will create user keys
  16. user_private_key = IrohaCrypto.private_key()
  17. user_public_key = IrohaCrypto.derive_public_key(user_private_key)
  18. iroha = Iroha(ADMIN_ACCOUNT_ID)
  19. net = IrohaGrpc('{}:{}'.format(IROHA_HOST_ADDR, IROHA_PORT))
  20. class MyEncoder(JSONEncoder):
  21. def default(self, o):
  22. return o.__dict__
  23. app = Flask(__name__)
  24. app.json_encoder = MyEncoder
  25. class Asset:
  26. assetId = ""
  27. balance = 0
  28. def __init__(self, assetId = "", balance = 0):
  29. self.assetId = assetId
  30. self.balance = balance
  31. class Assets:
  32. assets = []
  33. @app.get("/accounts/<string:accountId>/assets/")
  34. def get_account_assets(accountId): #TODO: add validation and error handling
  35. query = iroha.query('GetAccountAssets', account_id=accountId)
  36. IrohaCrypto.sign_query(query, ADMIN_PRIVATE_KEY)
  37. iroha_response = net.send_query(query)
  38. data = iroha_response.account_assets_response.account_assets
  39. response = Assets()
  40. response.assets = []
  41. if len(data) < 1:
  42. return '', 204
  43. for asset in data:
  44. response.assets.append(Asset(asset.asset_id, asset.balance))
  45. return jsonify(response)