def make_offer_with_url(self, items_from_me: List[Asset], items_from_them: List[Asset], trade_offer_url: str, message: str = '', case_sensitive: bool=True) -> dict: token = get_key_value_from_url(trade_offer_url, 'token', case_sensitive) partner_account_id = get_key_value_from_url(trade_offer_url, 'partner', case_sensitive) partner_steam_id = account_id_to_steam_id(partner_account_id) 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 trade_offer_create_params = {'trade_offer_access_token': token} 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_create_params) } headers = {'Referer': SteamUrl.COMMUNITY_URL + urlparse.urlparse(trade_offer_url).path, 'Origin': SteamUrl.COMMUNITY_URL} response = self._session.post(url, data=params, headers=headers) status = int(response.status_code) if status >= 300 or status < 200: return False, {'error_text': response.text, 'status_code': status} response_dict = response.json() if response_dict.get('needs_mobile_confirmation'): response_dict.update(self._confirm_transaction(response_dict['tradeofferid'])) return True, response
def make_offer_with_url(self, items_from_me: List[Asset], items_from_them: List[Asset], trade_offer_url: str, message: str = '') -> dict: token = get_key_value_from_url(trade_offer_url, 'token') partner_account_id = get_key_value_from_url(trade_offer_url, 'partner') partner_steam_id = account_id_to_steam_id(partner_account_id) 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 trade_offer_create_params = {'trade_offer_access_token': token} 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_create_params) } headers = { 'Referer': SteamUrl.COMMUNITY_URL + urlparse.urlparse(trade_offer_url).path, '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_with_url(self, items_from_me: List[Asset], items_from_them: List[Asset], trade_offer_url: str, message: str = '', case_sensitive: bool=True) -> dict: token = get_key_value_from_url(trade_offer_url, 'token', case_sensitive) partner_account_id = get_key_value_from_url(trade_offer_url, 'partner', case_sensitive) partner_steam_id = account_id_to_steam_id(partner_account_id) 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 trade_offer_create_params = {'trade_offer_access_token': token} 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_create_params) } headers = {'Referer': SteamUrl.COMMUNITY_URL + urlparse.urlparse(trade_offer_url).path, '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 test_get_key_value_from_url_case_insensitive(self): url = 'https://steamcommunity.com/tradeoffer/new/?Partner=aaa&Token=bbb' self.assertEqual( utils.get_key_value_from_url(url, 'partner', case_sensitive=False), 'aaa') self.assertEqual( utils.get_key_value_from_url(url, 'token', case_sensitive=False), 'bbb')
def test_get_key_value_from_url(self): url = 'https://steamcommunity.com/tradeoffer/new/?partner=aaa&token=bbb' self.assertEqual(utils.get_key_value_from_url(url, 'partner'), 'aaa') self.assertEqual(utils.get_key_value_from_url(url, 'token'), 'bbb')
def test_get_key_value_from_url_case_insensitive(self): url = 'https://steamcommunity.com/tradeoffer/new/?Partner=aaa&Token=bbb' self.assertEqual(utils.get_key_value_from_url(url, 'partner', case_sensitive=False), 'aaa') self.assertEqual(utils.get_key_value_from_url(url, 'token', case_sensitive=False), 'bbb')