# -*- coding: utf-8 -*-
'''
数据查询接口
'''
import json
import requests
from pandas.io.json import json_normalize
from lixinger_openapi.token import get_token

BASEURL = "https://open.lixinger.com/api/"

def get_fullurl(url_suffix):
    url_suffix = url_suffix.replace('.', '/')
    if url_suffix.startswith('/'):
        url_suffix = url_suffix[1:]
    return BASEURL + url_suffix

def query_json(url_suffix, query_params):
    '''
    API接口,返回json结构
    params:
        url_suffix: api地址后缀, https://open.lixinger.com/api/ 之后的,可以用/或. 例如a/stock/fs或a.stock.fs
        query_params: API的查询json,不需要填token
    '''
    if get_token() is None:
        raise Exception("token未设置")
    query_params["token"] = get_token()
  
    headers = {"Content-Type": "application/json"}
    response = requests.post(url=get_fullurl(url_suffix), data=json.dumps(query_params), headers=headers)
    return response.json()

def query_dataframe(url_suffix, query_params):
    '''
    API接口,返回字典结构
    key     value       type
    code    返回值       int
    data    返回结果     dataframe
    msg     返回消息     string
    '''
    return_value = {'code': -1, 'data': None, 'msg': ''}
    rlt = query_json(url_suffix, query_params)
    if rlt is None:
        return_value['msg'] = 'query failed.'
    else:
        if 'code' in rlt.keys():
            return_value['code'] = rlt['code']
        if 'msg' in rlt.keys():
            return_value['msg'] = rlt['msg']
        if 'data' in rlt.keys():
            return_value['data'] = json_normalize(rlt['data'])
    return return_value