import requests
import pandas as pd


BASE_URL = 'https://query2.finance.yahoo.com'


def _make_request(url, response_field, **kwargs):
    params = {
        'lang': kwargs.get('lang', 'en-US'),
        'region': kwargs.get('region', 'US'),
        'corsDomain': kwargs.get('corsDomain', 'finance.yahoo.com')
    }
    r = requests.get(url, params=params)
    json = r.json()
    return json[response_field]['result']


def get_currencies():
    """Get a list of currencies
    """
    url = '{}/v1/finance/currencies'.format(BASE_URL)
    return _make_request(url, 'currencies')


def get_exchanges():
    """Get a list of available exchanges and their suffixes
    """
    url = 'https://help.yahoo.com/kb/finance-for-web/SLN2310.html?impressions=true'
    dataframes = pd.read_html(url)
    return dataframes[0]


def get_market_summary(**kwargs):
    """Get a market summary
    """
    url = '{}/v6/finance/quote/marketSummary'.format(BASE_URL)
    return _make_request(url, 'marketSummaryResponse', **kwargs)


def get_trending(region='US', **kwargs):
    """Get trending stocks for a specific region
    """
    url = '{}/v1/finance/trending/{}'.format(BASE_URL, region)
    return _make_request(url, 'finance')[0]