|
@@ -0,0 +1,37 @@
|
|
|
|
|
+import sys
|
|
|
|
|
+
|
|
|
|
|
+import httpx
|
|
|
|
|
+
|
|
|
|
|
+from config import config
|
|
|
|
|
+
|
|
|
|
|
+def main() -> None:
|
|
|
|
|
+ (username,) = sys.argv[1:]
|
|
|
|
|
+ (data,) = httpx.get(f'https://api.punoted.net/v1/contracts/?username={username}&limit=200',
|
|
|
|
|
+ headers={'X-Data-Token': config.punoted_api_key}).raise_for_status().json()
|
|
|
|
|
+ data['Contracts'].sort(key=lambda c: c['DateEpochMs'])
|
|
|
|
|
+ for contract in data['Contracts']:
|
|
|
|
|
+ print(contract['ContractLocalId'], contract['PartnerName'], contract['Name'], contract['Preamble'])
|
|
|
|
|
+ print(contract['Timestamp'])
|
|
|
|
|
+ for condition in contract['Conditions']:
|
|
|
|
|
+ match condition['Type']:
|
|
|
|
|
+ case 'DELIVERY':
|
|
|
|
|
+ if condition['Party'] == contract['Party']:
|
|
|
|
|
+ direction = '→'
|
|
|
|
|
+ else:
|
|
|
|
|
+ direction = '←'
|
|
|
|
|
+ case 'COMEX_PURCHASE_PICKUP':
|
|
|
|
|
+ if condition['Party'] == contract['Party']:
|
|
|
|
|
+ direction = '←'
|
|
|
|
|
+ else:
|
|
|
|
|
+ direction = '→'
|
|
|
|
|
+ print('\t', direction, condition['MaterialAmount'], condition['MaterialTicker'])
|
|
|
|
|
+ case 'PAYMENT':
|
|
|
|
|
+ print('\t', condition['Amount'], condition['Currency'])
|
|
|
|
|
+ case 'PROVISION_SHIPMENT' | 'PICKUP_SHIPMENT' | 'DELIVERY_SHIPMENT' | 'REPUTATION' | 'EXPLORATION' | 'REPAIR_SHIP' \
|
|
|
|
|
+ | 'PROVISION' | 'LOAN_PAYOUT' | 'LOAN_INSTALLMENT':
|
|
|
|
|
+ pass
|
|
|
|
|
+ case _:
|
|
|
|
|
+ raise AssertionError('unhandled condition type ' + condition['Type'])
|
|
|
|
|
+
|
|
|
|
|
+if __name__ == '__main__':
|
|
|
|
|
+ main()
|