contracts.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import sys
  2. import httpx
  3. from config import config
  4. def main() -> None:
  5. (username,) = sys.argv[1:]
  6. (data,) = httpx.get(f'https://api.punoted.net/v1/contracts/?username={username}&limit=200',
  7. headers={'X-Data-Token': config.punoted_api_key}).raise_for_status().json()
  8. data['Contracts'].sort(key=lambda c: c['DateEpochMs'])
  9. for contract in data['Contracts']:
  10. print(contract['ContractLocalId'], contract['PartnerName'], contract['Name'], contract['Preamble'])
  11. print(contract['Timestamp'])
  12. for condition in contract['Conditions']:
  13. match condition['Type']:
  14. case 'DELIVERY':
  15. if condition['Party'] == contract['Party']:
  16. direction = '→'
  17. else:
  18. direction = '←'
  19. case 'COMEX_PURCHASE_PICKUP':
  20. if condition['Party'] == contract['Party']:
  21. direction = '←'
  22. else:
  23. direction = '→'
  24. print('\t', direction, condition['MaterialAmount'], condition['MaterialTicker'])
  25. case 'PAYMENT':
  26. print('\t', condition['Amount'], condition['Currency'])
  27. case 'PROVISION_SHIPMENT' | 'PICKUP_SHIPMENT' | 'DELIVERY_SHIPMENT' | 'REPUTATION' | 'EXPLORATION' | 'REPAIR_SHIP' \
  28. | 'PROVISION' | 'LOAN_PAYOUT' | 'LOAN_INSTALLMENT':
  29. pass
  30. case _:
  31. raise AssertionError('unhandled condition type ' + condition['Type'])
  32. if __name__ == '__main__':
  33. main()