import json
import sys
import base64
import time
from kiteconnect import KiteConnect
import pprint

from __config import CONFIG
from __mySqlConnector import MYSQLCONNECTOR

def get_access_token():

    with open(CONFIG.token_file, 'r') as file:
        access_token = file.read()

    return access_token


class GETDATAHELPER():

    def __init__(self):

        self.kite = KiteConnect(api_key=CONFIG.api_key)
        self.kite.set_access_token( get_access_token() )

        self.myConnector = MYSQLCONNECTOR()

        self.debug = ''

    def getBaseInstrumentName(self, category):
        instrument = ''
        if category == 'nifty':
            instrument='NSE:NIFTY 50'
        elif category == 'finNifty':
            instrument='NSE:NIFTY FIN SERVICE'
        elif category == 'bankNifty':
            instrument='NSE:NIFTY BANK'
        elif category == 'midcpNifty':
            instrument='NSE:NIFTY MID SELECT'
        elif category == 'sensex':
            instrument='BSE:SENSEX'
        else:
            raise ValueError("Unknown category")
        return instrument

    def getQuote(self, instrument):
        quote = self.kite.quote(instrument)[instrument]
        return quote
    
    def getQuoteDetails(self, category):
        instrument = self.getBaseInstrumentName(category)
        quote = self.getQuote(instrument)
        
        curPrice = quote['last_price']
        ohlc = quote['ohlc']

        _open = ohlc['open']
        _high = ohlc['high']
        _low = ohlc['low']
        closePrev = ohlc['close']
        dateToday = CONFIG.formatted_date

        if _open == 0.0:
            _open = closePrev

        if _high == 0.0:
            _high = closePrev

        if _low == 0.0:
            _low = closePrev
        

        self.myConnector.setHistoryDataValueForcefully(dateToday, category, _open, _high, _low, closePrev, curPrice)


    def addDataToDatabase(self):
        for category in ['nifty', 'finNifty', 'bankNifty', 'midcpNifty', 'sensex']:
            self.getQuoteDetails(category)
            time.sleep(0.25)
        

    def getDebug(self):
        return str(self.debug)



if __name__== "__main__":

    helper = GETDATAHELPER()
    helper.addDataToDatabase()
