diff --git a/erepublik/citizen.py b/erepublik/citizen.py index 4402dc8..d9c5a5e 100644 --- a/erepublik/citizen.py +++ b/erepublik/citizen.py @@ -12,6 +12,7 @@ from typing import Any, Dict, List, NoReturn, Optional, Set, Tuple, Union from requests import HTTPError, RequestException, Response from . import utils, classes, access_points, constants +from .classes import OfferItem class BaseCitizen(access_points.CitizenAPI): @@ -1147,6 +1148,24 @@ class CitizenEconomy(CitizenTravel): self._report_action("BOUGHT_PRODUCTS", json_ret.get('message'), kwargs=json_ret) return json_ret + def buy_market_offer(self, offer: OfferItem, amount: int = None) -> dict: + if amount is None or amount > offer.amount: + amount = offer.amount + traveled = False + if not self.details.current_country == offer.country: + traveled = True + self.travel_to_country(offer.country) + ret = self._post_economy_marketplace_actions('buy', offer=offer.offer_id, amount=amount) + json_ret = ret.json() + if not json_ret.get('error', True): + self.details.cc = ret.json()['currency'] + self.details.gold = ret.json()['gold'] + json_ret.pop("offerUpdate", None) + self._report_action("BOUGHT_PRODUCTS", json_ret.get('message'), kwargs=json_ret) + if traveled: + self.travel_to_residence() + return json_ret + def get_market_offers( self, product_name: str, quality: int = None, country: constants.Country = None ) -> Dict[str, classes.OfferItem]: