def get_user_watch_list(): """ Функция через запрос к API Ebay получает список избранных лотов """ headers = get_shopping_headers('GetMyeBayBuying') token = current_user.token data = f""" <?xml version="1.0" encoding="utf-8"?> <GetMyeBayBuyingRequest xmlns="urn:ebay:apis:eBLBaseComponents"> <RequesterCredentials> <eBayAuthToken>{token}</eBayAuthToken> </RequesterCredentials> <WatchList> <Include>true</Include> </WatchList> </GetMyeBayBuyingRequest> """ response_soup = post_ebay_request(headers, data) if response_soup.find('ack').text == 'Success': user_watch_list = [] all_items = response_soup.find_all('item') for item in all_items: pars_watch_item = {} for key, value in soup_keys.items(): pars_watch_item[key] = parse_field(item, value) user_watch_list.append(pars_watch_item) return user_watch_list
def get_ebay_categories(): """Запрос категорий с Ebay""" headers = get_shopping_headers("GetCategories") token = current_user.token data = f""" <?xml version="1.0" encoding="utf-8"?> <GetCategoriesRequest xmlns="urn:ebay:apis:eBLBaseComponents"> <RequesterCredentials> <eBayAuthToken>{token}</eBayAuthToken> </RequesterCredentials> <CategorySiteID>0</CategorySiteID> <DetailLevel>ReturnAll</DetailLevel> <LevelLimit>4</LevelLimit> </GetCategoriesRequest> """ response_soup = post_ebay_request(headers, data) all_categories = response_soup.findAll('category') for category in all_categories: category_level = category.find('categorylevel').text category_name = category.find('categoryname').text category_id = category.find('categoryid').text category_parent_id = category.find('categoryparentid').text save_category( category_name, category_level, category_id, category_parent_id, )
def add_to_watch_list(itemid): headers = get_shopping_headers('AddToWatchList') token = current_user.token data = f""" <?xml version="1.0" encoding="utf-8"?> <AddToWatchListRequest xmlns="urn:ebay:apis:eBLBaseComponents"> <RequesterCredentials> <eBayAuthToken>{token}</eBayAuthToken> </RequesterCredentials> <ItemID>{itemid}</ItemID> </AddToWatchListRequest> """ response_soup = post_ebay_request(headers, data) if response_soup.find('ack').text == 'Success': return print('Лот успешно добавлен в "Избранное"') else: return print( 'Лот не добавлен в "Избранное". Результаты поиска устарели')
def get_item(item_id, token): """ Функция запрашивает данные о конкретном товаре с Ebay по item_id """ headers = get_shopping_headers("GetItem") data = f""" <?xml version="1.0" encoding="utf-8"?> <GetItemRequest xmlns="urn:ebay:apis:eBLBaseComponents"> <RequesterCredentials> <eBayAuthToken>{token}</eBayAuthToken> </RequesterCredentials> <ItemID>{item_id}</ItemID> </GetItemRequest>""" response_soup = post_ebay_request(headers, data) item = response_soup.find('item') pars_item = {} for key, value in soup_keys.items(): pars_item[key] = parse_field(item, value) return pars_item
def get_token(): """Запрос Token после плучения согласия пользователя""" # проверяем имеется ли у текущего пользователя записанный в базе session_id if current_user.session_id_status: # получаем session id из баззы данных session_id = current_user.session_id headers = get_shopping_headers("FetchToken") data = f""" <?xml version="1.0" encoding="utf-8"?> <FetchTokenRequest xmlns="urn:ebay:apis:eBLBaseComponents"> <Version>967</Version> <SessionID>{session_id}</SessionID> </FetchTokenRequest> """ response_soup = post_ebay_request(headers, data) if response_soup.find('ack').text == 'Success': token = response_soup.find('ebayauthtoken').text hard_expiration_time = response_soup.find( 'hardexpirationtime').text # удаляем ненужные символы из 'hard_expiration_time' hard_expiration_time = hard_expiration_time.replace('T', ' ').replace( 'Z', '') # преобразуем строку 'hard_expiration_time' в datetime hard_expiration_time = datetime.strptime(hard_expiration_time, '%Y-%m-%d %H:%M:%S.%f') # записываем полученные данные в базу current_user.token = token current_user.hard_expiration_time = hard_expiration_time # проверяем статус токена на текущу дату if hard_expiration_time > datetime.now(tz=None): current_user.token_status = True else: current_user.token_status = False db.session.add(current_user) db.session.commit() else: return 'Пользователь не разрешил доступ'
def remove_from_user_watch_list(itemid): """ Фунция для удаления товара из списка "Избранное" пользователя. В качестве аргумента передается id товара """ headers = get_shopping_headers('RemoveFromWatchList') token = current_user.token data = f""" <?xml version="1.0" encoding="utf-8"?> <RemoveFromWatchListRequest xmlns="urn:ebay:apis:eBLBaseComponents"> <RequesterCredentials> <eBayAuthToken>{token}</eBayAuthToken> </RequesterCredentials> <ItemID>{itemid}</ItemID> </RemoveFromWatchListRequest> """ response_soup = post_ebay_request(headers, data) if response_soup.find('ack').text == 'Success': return print('Лот успешно удален из списка избранных товаров') else: return print('Не получилось удалить лот из списка избоанных товаров.\ Обновите страницу и повторите заново')
def get_session_ID(): headers = get_shopping_headers("GetSessionID") data = f""" <?xml version="1.0" encoding="utf-8"?> <GetSessionIDRequest xmlns="urn:ebay:apis:eBLBaseComponents"> <RuName>{current_app.config['RUNAME']}</RuName> <Version>967</Version> </GetSessionIDRequest> """ response_soup = post_ebay_request(headers, data) session_id = response_soup.find('sessionid').text # записываем session id в базу данных current_user.session_id = session_id current_user.session_id_status = True db.session.add(current_user) db.session.commit() return session_id