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
Exemple #5
0
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('Не получилось удалить лот из списка избоанных товаров.\
            Обновите страницу и повторите заново')
Exemple #7
0
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