def make_offer(self, items_from_me: List[Asset], items_from_them: List[Asset], partner_steam_id: str, message: str = '') -> dict: offer = self._create_offer_dict(items_from_me, items_from_them) session_id = self._get_session_id() url = SteamUrl.COMMUNITY_URL + '/tradeoffer/new/send' server_id = 1 params = { 'sessionid': session_id, 'serverid': server_id, 'partner': partner_steam_id, 'tradeoffermessage': message, 'json_tradeoffer': json.dumps(offer), 'captcha': '', 'trade_offer_create_params': '{}' } partner_account_id = steam_id_to_account_id(partner_steam_id) headers = { 'Referer': SteamUrl.COMMUNITY_URL + '/tradeoffer/new/?partner=' + partner_account_id, 'Origin': SteamUrl.COMMUNITY_URL } response = self._session.post(url, data=params, headers=headers).json() if response.get('needs_mobile_confirmation'): response.update(self._confirm_transaction( response['tradeofferid'])) return response
def get_partner_inventory(self, partner_steam_id: str, game: GameOptions, merge: bool = True) -> dict: params = { 'sessionid': self._get_session_id(), 'partner': partner_steam_id, 'appid': int(game.app_id), 'contextid': game.context_id } partner_account_id = steam_id_to_account_id(partner_steam_id) headers = { 'X-Requested-With': 'XMLHttpRequest', 'Referer': SteamUrl.COMMUNITY_URL + '/tradeoffer/new/?partner=' + partner_account_id, 'X-Prototype-Version': '1.7' } response_dict = self._session.get(SteamUrl.COMMUNITY_URL + '/tradeoffer/new/partnerinventory/', params=params, headers=headers).json() if merge: return merge_items_with_descriptions_from_inventory( response_dict, game) return response_dict
def make_offer(self, items_from_me: List[Asset], items_from_them: List[Asset], partner_steam_id: str, message: str = '') -> dict: offer = { 'newversion': True, 'version': 4, 'me': { 'assets': [asset.to_dict() for asset in items_from_me], 'currency': [], 'ready': False }, 'them': { 'assets': [asset.to_dict() for asset in items_from_them], 'currency': [], 'ready': False } } session_id = self._get_session_id() url = self.COMMUNITY_URL + '/tradeoffer/new/send' server_id = 1 params = { 'sessionid': session_id, 'serverid': server_id, 'partner': partner_steam_id, 'tradeoffermessage': message, 'json_tradeoffer': json.dumps(offer), 'captcha': '', 'trade_offer_create_params': '{}' } partner_account_id = steam_id_to_account_id(partner_steam_id) headers = { 'Referer': self.COMMUNITY_URL + '/tradeoffer/new/?partner=' + partner_account_id, 'Origin': self.COMMUNITY_URL } response = self._session.post(url, data=params, headers=headers).json() if response.get('needs_mobile_confirmation'): return self._confirm_transaction(response['tradeofferid']) return response
def make_offer(self, items_from_me: List[Asset], items_from_them: List[Asset], partner_steam_id: str, message: str = '') -> dict: offer = self._create_offer_dict(items_from_me, items_from_them) session_id = self._get_session_id() url = SteamUrl.COMMUNITY_URL + '/tradeoffer/new/send' server_id = 1 params = { 'sessionid': session_id, 'serverid': server_id, 'partner': partner_steam_id, 'tradeoffermessage': message, 'json_tradeoffer': json.dumps(offer), 'captcha': '', 'trade_offer_create_params': '{}' } partner_account_id = steam_id_to_account_id(partner_steam_id) headers = {'Referer': SteamUrl.COMMUNITY_URL + '/tradeoffer/new/?partner=' + partner_account_id, 'Origin': SteamUrl.COMMUNITY_URL} response = self._session.post(url, data=params, headers=headers).json() if response.get('needs_mobile_confirmation'): response.update(self._confirm_transaction(response['tradeofferid'])) return response
def make_offer(self, token: str, items_from_me: List[Asset], items_from_them: List[Asset], partner_steam_id: str, message: str = '') -> dict: offer = { 'newversion': True, 'version': 4, 'me': { 'assets': [asset.to_dict() for asset in items_from_me], 'currency': [], 'ready': False }, 'them': { 'assets': [asset.to_dict() for asset in items_from_them], 'currency': [], 'ready': False } } session_id = self.get_session_id() url = self.COMMUNITY_URL + '/tradeoffer/new/send' server_id = 1 params = { 'sessionid': session_id, 'serverid': server_id, 'partner': partner_steam_id, 'tradeoffermessage': message, 'json_tradeoffer': json.dumps(offer), 'captcha': '', 'trade_offer_create_params': json.dumps({"trade_offer_access_token": token}) } partner_account_id = steam_id_to_account_id(partner_steam_id) headers = { 'Referer': self.COMMUNITY_URL + '/tradeoffer/new/?partner=' + partner_account_id + '&token=' + token, 'Origin': self.COMMUNITY_URL } while True: try: response = self._session.post(url, data=params, headers=headers, timeout=60).json() break except json.decoder.JSONDecodeError as err: logger.error("%s %s", err, url) time.sleep(3) if response.get('needs_mobile_confirmation'): response = self._confirm_transaction(response['tradeofferid']) return response
def test_steam_id_to_account_id(self): steam_id = '76561198318883215' account_id = utils.steam_id_to_account_id(steam_id) self.assertEquals(account_id, '358617487')