From a589fe9bd1ab86d8b66320ba909509107102c9b7 Mon Sep 17 00:00:00 2001 From: itsdeka Date: Sun, 16 Jan 2022 22:18:03 +0100 Subject: [PATCH] Implemented Movement endpoints (REST) Thanks to @ph4z --- bfxapi/models/movement.py | 76 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 bfxapi/models/movement.py diff --git a/bfxapi/models/movement.py b/bfxapi/models/movement.py new file mode 100644 index 0000000..d212e72 --- /dev/null +++ b/bfxapi/models/movement.py @@ -0,0 +1,76 @@ +""" +Module used to describe movement data types +""" + +import time +import datetime + +class MovementModel: + """ + Enum used index the different values in a raw movement array + """ + + ID = 0 + CURRENCY = 1 + CURRENCY_NAME = 2 + MTS_STARTED = 5 + MTS_UPDATED = 6 + STATUS = 9 + AMOUNT = 12 + FEES = 13 + DESTINATION_ADDRESS = 16 + TRANSACTION_ID = 20 + +class Movement: + + """ + ID String Movement identifier + CURRENCY String The symbol of the currency (ex. "BTC") + CURRENCY_NAME String The extended name of the currency (ex. "BITCOIN") + MTS_STARTED Date Movement started at + MTS_UPDATED Date Movement last updated at + STATUS String Current status + AMOUNT String Amount of funds moved + FEES String Tx Fees applied + DESTINATION_ADDRESS String Destination address + TRANSACTION_ID String Transaction identifier + """ + + def __init__(self, mid, currency, mts_started, mts_updated, status, amount, fees, dst_address, tx_id): + self.id = mid + self.currency = currency + self.mts_started = mts_started + self.mts_updated = mts_updated + self.status = status + self.amount = amount + self.fees = fees + self.dst_address = dst_address + self.tx_id = tx_id + + self.date = datetime.datetime.fromtimestamp(mts_started/1000.0) + + + @staticmethod + def from_raw_movement(raw_movement): + """ + Parse a raw movement object into a Movement object + @return Movement + """ + + mid = raw_movement[MovementModel.ID] + currency = raw_movement[MovementModel.CURRENCY] + mts_started = raw_movement[MovementModel.MTS_STARTED] + mts_updated = raw_movement[MovementModel.MTS_UPDATED] + status = raw_movement[MovementModel.STATUS] + amount = raw_movement[MovementModel.AMOUNT] + fees = raw_movement[MovementModel.FEES] + dst_address = raw_movement[MovementModel.DESTINATION_ADDRESS] + tx_id = raw_movement[MovementModel.TRANSACTION_ID] + + return Movement(mid, currency, mts_started, mts_updated, status, amount, fees, dst_address, tx_id) + + def __str__(self): + ''' Allow us to print the Movement object in a pretty format ''' + text = "Movement <'{}' amount={} fees={} mts_created={} mts_updated={} status='{}' destination_address={} transaction_id={}>" + return text.format(self.currency, self.amount, self.fees, + self.mts_started, self.mts_updated, self.status, self.dst_address, self.tx_id) \ No newline at end of file