def get_inplay_markets(self, locale=None): if self.product_id == FREE_API: raise ServiceError("Free API does not support get_inplay_markets") req = BFExchangeFactory.create("ns1:GetInPlayMarketsReq") if locale: req.locale = locale rsp = self._soapcall(BFExchangeService.getInPlayMarkets, req) if rsp.errorCode != GetInPlayMarketsErrorEnum.OK: error_code = rsp.errorCode if error_code == GetInPlayMarketsErrorEnum.API_ERROR: error_code = rsp.header.errorCode logger.error("{getInPlayMarkets} failed with error {%s}", error_code) raise ServiceError(error_code) return uncompress_markets(rsp.marketData)
def get_markets(self, event_ids=None, countries=None, date_range=None): req = BFExchangeFactory.create("ns1:GetAllMarketsReq") if event_ids: req.eventTypeIds[0].extend(list(iter(event_ids))) if countries: req.countries[0].extend(list(iter(countries))) if date_range: date_range = list(iter(date_range)) req.fromDate = date_range[0] if len(date_range) > 1: req.toDate = date_range.end[-1] rsp = self._soapcall(BFExchangeService.getAllMarkets, req) if rsp.errorCode != GetAllMarketsErrorEnum.OK: error_code = rsp.errorCode if error_code == GetAllMarketsErrorEnum.API_ERROR: error_code = rsp.header.errorCode logger.error("{getAllMarkets} failed with error {%s}", error_code) raise ServiceError(error_code) markets = uncompress_markets(rsp.marketData) return markets
def test_uncompress_markets(): with open(path.join(DATA_DIR, "markets.dump")) as f: for line in f: uncompress_markets(line)