import requests

from app.core.enum import WEBMASTER_URL, OAUTH_TYPE, ROWS_IN_QUERY
from app.core.internal_funcs.process_text import process_text

def get_data_from_webmaster(
        user: str,
        hosts: str,
        access_token: str,
        query_indicator: str,
        order_by: str
        ):
    request_url = f'{WEBMASTER_URL}/user/{user}/hosts/{hosts}/search-queries/popular?query_indicator={query_indicator}&order_by={order_by}'
    headers = {
        'Authorization': f'{OAUTH_TYPE} {access_token}',  
        'Content-Type': 'application/json',
    }

    query = requests.get(request_url, headers=headers)
    row_count = query.json()['count']

    # за один запрос возвращается 500 значений, нужно собирать запросы по всем страницам
    iter_count = (row_count // ROWS_IN_QUERY) + 1
    offset = 0
    data = []
    for page in range(iter_count):
        url = f'{WEBMASTER_URL}/user/{user}/hosts/{hosts}/search-queries/popular?query_indicator={query_indicator}&order_by={order_by}&offset={offset}'
        offset += ROWS_IN_QUERY
        query = requests.get(url, headers=headers).json()
        for row in query['queries']:
            row_data = {'orig': row['query_text'], 'count': row['indicators'][str(query_indicator)], 
                        'processed': process_text(row['query_text'])}
            data.append(row_data)
    return data
