Exemple #1
0
 async def get_last_traded_price(cls, trading_pair: str) -> Decimal:
     factory = build_coinbase_pro_web_assistant_factory()
     rest_assistant = await factory.get_rest_assistant()
     endpoint = f"{CONSTANTS.PRODUCTS_PATH_URL}/{trading_pair}/ticker"
     request = CoinbaseProRESTRequest(RESTMethod.GET, endpoint=endpoint)
     response = await rest_assistant.call(request)
     resp_json = await response.json()
     return Decimal(resp_json["price"])
Exemple #2
0
 def __init__(
     self,
     trading_pairs: Optional[List[str]] = None,
     web_assistants_factory: Optional[WebAssistantsFactory] = None,
 ):
     super().__init__(trading_pairs)
     self._web_assistants_factory = web_assistants_factory or build_coinbase_pro_web_assistant_factory()
     self._rest_assistant = None
    def test_get_snapshot_raises_on_status_code(self, mock_api):
        url = f"{CONSTANTS.REST_URL}{CONSTANTS.PRODUCTS_PATH_URL}/{self.trading_pair}/book?level=3"
        resp = self.get_products_book_response_mock()
        mock_api.get(url, body=json.dumps(resp), status=401)

        rest_assistant = self.ev_loop.run_until_complete(
            build_coinbase_pro_web_assistant_factory().get_rest_assistant())
        with self.assertRaises(IOError):
            self.async_run_with_timeout(
                coroutine=CoinbaseProAPIOrderBookDataSource.get_snapshot(
                    rest_assistant, self.trading_pair))
    def test_get_snapshot(self, mock_api):
        url = f"{CONSTANTS.REST_URL}{CONSTANTS.PRODUCTS_PATH_URL}/{self.trading_pair}/book?level=3"
        resp = self.get_products_book_response_mock()
        mock_api.get(url, body=json.dumps(resp))

        rest_assistant = self.ev_loop.run_until_complete(
            build_coinbase_pro_web_assistant_factory().get_rest_assistant())
        ret = self.async_run_with_timeout(
            coroutine=CoinbaseProAPIOrderBookDataSource.get_snapshot(
                rest_assistant, self.trading_pair))

        self.assertEqual(resp, ret)  # shallow comparison ok
Exemple #5
0
    def setUp(self) -> None:
        super().setUp()
        self.mocking_assistant = NetworkMockingAssistant()
        auth = CoinbaseProAuth(api_key="SomeAPIKey", secret_key="SomeSecretKey", passphrase="SomePassPhrase")
        web_assistants_factory = build_coinbase_pro_web_assistant_factory(auth)
        self.data_source = CoinbaseProAPIOrderBookDataSource(
            trading_pairs=[self.trading_pair], web_assistants_factory=web_assistants_factory
        )
        self.data_source.logger().setLevel(1)
        self.data_source.logger().addHandler(self)

        self.log_records = []
        self.async_tasks: List[asyncio.Task] = []
Exemple #6
0
 async def fetch_trading_pairs() -> List[str]:
     trading_pair_list = []
     try:
         factory = build_coinbase_pro_web_assistant_factory()
         rest_assistant = await factory.get_rest_assistant()
         request = CoinbaseProRESTRequest(RESTMethod.GET, endpoint=CONSTANTS.PRODUCTS_PATH_URL)
         response = await rest_assistant.call(request)
         if response.status == 200:
             markets = await response.json()
             raw_trading_pairs: List[str] = list(map(lambda details: details.get('id'), markets))
             trading_pair_list: List[str] = []
             for raw_trading_pair in raw_trading_pairs:
                 trading_pair_list.append(raw_trading_pair)
     except Exception:
         # Do nothing if the request fails -- there will be no autocomplete for coinbase trading pairs
         pass
     return trading_pair_list