from flask_restful import Resource
from flask import request, jsonify
from flask_jwt_extended import create_access_token
from master import app, ctx
import datetime
import urllib.request
import csv
from io import StringIO

class Localization(Resource):
    def list(self):
        response = urllib.request.urlopen('https://docs.google.com/spreadsheets/d/e/2PACX-1vRQjCqPvd0Xqcn86WqpFqp_lx4KKpel9O4OV13NycmV8rmqycorgJQm-8qXMfw37QJHun3pqVZFUKG-/pub?gid=0&single=true&output=csv')
        data = response.read().decode('utf-8')

        localization = []
        csv_data = csv.DictReader(StringIO(data))

        for language in csv_data.fieldnames[1:]:
            localization.append({
                    'LocalizationName' : language,
                     'LocalizationIndex' : {
                     'Set' : {}
                     }
                })

        for row in csv_data:
            localization_string = row['STRING']
            count = 0
            for language in  csv_data.fieldnames[1:]:
                localization[count]['LocalizationIndex']['Set'][localization_string] = row[language]
                count += 1

        return localization, 200

    def get(self, language_tag=None):
        response = urllib.request.urlopen('https://docs.google.com/spreadsheets/d/e/2PACX-1vRQjCqPvd0Xqcn86WqpFqp_lx4KKpel9O4OV13NycmV8rmqycorgJQm-8qXMfw37QJHun3pqVZFUKG-/pub?gid=0&single=true&output=csv')
        data = response.read().decode('utf-8')

        csv_data = csv.DictReader(StringIO(data))
        

        if language_tag != None:
           valid_language_tag = next((l for l in csv_data.fieldnames[1:] if l == language_tag), None)
           if valid_language_tag is None:
               valid_language_tag = next((l for l in csv_data.fieldnames[1:] if l.startswith(language_tag[:2])), None)
           if valid_language_tag is None:
               valid_language_tag = 'en-US'   
           localization = {
                  'LocalizationName' : valid_language_tag,
                  'LocalizationIndex' : {
                  'Set' : {}
                  }
                }
           for row in csv_data:
               localization_string = row['STRING']
               localization['LocalizationIndex']['Set'][localization_string] = row[valid_language_tag]
           return localization, 200
        else:
           return self.list()[0][0], 200