Source code for abstract_api.exchange_rates.exchange_rates_conversion_response

from functools import cached_property
from typing import Optional

import requests

from ..core.bases import JSONResponse
from ._response_fields import CONVERSION_RESPONSE_FIELDS


[docs] class ExchangeRatesConversionResponse(JSONResponse): """Exchange rate conversion service response.""" def __init__( self, response: requests.models.Response, date_included_in_request: Optional[bool] = False ) -> None: """Initializes a new ExchangeRateConversionResponse.""" super().__init__( response, CONVERSION_RESPONSE_FIELDS - { "last_updated" if date_included_in_request else "date" } ) @cached_property def base(self) -> Optional[str]: """The base currency used to get the exchange rates.""" return self._get_response_field("base") @cached_property def target(self) -> Optional[str]: """The target currency that the base_amount was converted into.""" return self._get_response_field("target") @cached_property def date(self) -> Optional[str]: """The date the currencies were pulled from. This is per successful request and returned only when 'date' parameter is passed in request. This is mutually-exclusive with 'last_updated' in response. """ return self._get_response_field("date") @cached_property def base_amount(self) -> Optional[float]: """The amount of the base currency from the request.""" return self._get_response_field("base_amount") @cached_property def converted_amount(self) -> Optional[float]: """The amount after conversion. The amount of the target currency that the base_amount has been converted into. """ return self._get_response_field("converted_amount") @cached_property def exchange_rate(self) -> Optional[float]: """The exchange rate used in conversion.""" return self._get_response_field("exchange_rate") @cached_property def last_updated(self) -> Optional[int]: """The Unix timestamp of when the returned data was last updated. This is returned if 'date' parameter was not passed in request. This is mutually-exclusive with 'date' in response. """ return self._get_response_field("last_updated")