2020import gdax .utils
2121
2222
23+ class OrderBookError (Exception ):
24+ pass
25+
26+
2327class OrderBook (object ):
2428 def __init__ (self , product_ids = 'ETH-USD' , api_key = None , api_secret = None ,
2529 passphrase = None , use_heartbeat = False ,
@@ -147,6 +151,11 @@ async def handle_message(self):
147151 await self ._init ()
148152 return
149153
154+ msg_type = message ['type' ]
155+
156+ if msg_type == 'error' :
157+ raise OrderBookError (f'Error: { message ["message" ]} ' )
158+
150159 product_id = message ['product_id' ]
151160 assert self ._sequences [product_id ] is not None
152161 sequence = message ['sequence' ]
@@ -163,7 +172,6 @@ async def handle_message(self):
163172 await self ._init ()
164173 return
165174
166- msg_type = message ['type' ]
167175 if msg_type == 'open' :
168176 self .add (product_id , message )
169177 elif msg_type == 'done' and 'price' in message :
@@ -172,16 +180,14 @@ async def handle_message(self):
172180 self .match (product_id , message )
173181 elif msg_type == 'change' :
174182 self .change (product_id , message )
175- elif msg_type == 'error' :
176- raise Exception (f'Error: { message ["message" ]} ' )
177183 elif msg_type == 'heartbeat' :
178184 pass
179185 elif msg_type == 'received' :
180186 pass
181187 elif msg_type == 'done' :
182188 pass
183189 else :
184- raise Exception (f'unknown message type { msg_type } ' )
190+ raise OrderBookError (f'unknown message type { msg_type } ' )
185191
186192 self ._sequences [product_id ] = sequence
187193 return message
@@ -344,7 +350,7 @@ def get_max_bid_depth(self, product_id):
344350 return sum ([order ['size' ] for order in orders ])
345351
346352
347- async def run_orderbook ():
353+ async def run_orderbook (): # pragma: no cover
348354 async with OrderBook (
349355 ['ETH-USD' , 'BTC-USD' ],
350356 api_key = None ,
@@ -367,7 +373,7 @@ async def run_orderbook():
367373 orderbook .get_min_ask_depth ('ETH-USD' ),
368374 orderbook .get_max_bid_depth ('ETH-USD' ))
369375
370- if __name__ == "__main__" :
376+ if __name__ == "__main__" : # pragma: no cover
371377 logging .getLogger ().setLevel (logging .INFO )
372378 loop = asyncio .get_event_loop ()
373379 loop .run_until_complete (run_orderbook ())
0 commit comments