import requests, json, threading

class MinzRestApi(threading.Thread):
    def __init__(self, apikey):
        super(MinzRestApi, self).__init__()
        self.base_url = "https://api.minzteam.xyz"
        self.session = requests.Session()
        self.headers = apikey 

    def print_result(self, data):
        print(json.dumps(data, indent=4, sort_keys=True))

    ''' LINE FEATURE '''

    def linePrimaryCreated(self, authkey=""):
        params = {"authkey": authkey, "apikey": self.headers}
        main = self.session.get(self.base_url+"/authtoprimary_", params=params).json()
        return main

    def linePrimaryConvert(self, authtoken="", apptype="DESKTOPWIN"):
        params = {"authtoken": authtoken, "apptype": apptype, "apikey": self.headers}
        main = self.session.get(self.base_url+"/authtosecondary_", params=params).json()
        return main

    def removeE2EE(self, authtoken=""):
        params = {"authtoken": authtoken, "apikey": self.headers}
        main = self.session.get(self.base_url+"/removee2ee", params=params).json()
        return main

    def lineAppNameRandom(self, apptype):
        params = {"apptype": apptype, "apikey": self.headers}
        main = self.session.get(self.base_url+"/lineappnamerandom", params=params).json()
        return main

    def lineAppName(self):
        params = {"apikey": self.headers}
        main = self.session.get(self.base_url+"/lineappname", params).json()
        return main

    def getContact(self, mid):
        params = {"mid": mid, "apikey": self.headers}
        main = self.session.get(self.base_url+"/getcontact", params).json()
        return main

    def sendImageWithURL(self, authtoken, to, url):
        params = {"authtoken": authtoken, "to": to, "url": url, "apikey": self.headers}
        main = self.session.get(self.base_url+"/sendimageurl", params).json()
        return main

    def sendVideoWithURL(self, authtoken, to, url):
        params = {"authtoken": authtoken, "to": to, "url": url, "apikey": self.headers}
        main = self.session.get(self.base_url+"/sendvideourl", params).json()
        return main

    def changeProfileImage(self, authtoken, msgid):
        params = {"authtoken": authtoken, "msgid": msgid, "apikey": self.headers}
        main = self.session.get(self.base_url+"/changeprofileimage", params=params).json()
        return main

    def changeProfileCover(self, authtoken, msgid):
        params = {"authtoken": authtoken, "msgid": msgid, "apikey": self.headers}
        main = self.session.get(self.base_url+"/changeprofilecover", params=params).json()
        return main

    def lineGetQr(self, apptype="DESKTOPWIN", cert=None):
        if cert:params = {"apptype": apptype, "cert": cert, "apikey": self.headers}
        else:params = {"apptype": apptype, "apikey": self.headers}
        main = self.session.get(self.base_url+"/getqrline", params=params).json()
        return main

    def lineGetPin(self, session):
        params = {"session": session, "apikey": self.headers}
        main = self.session.get(self.base_url+"/linegetpin", params=params).json()
        return main

    def lineGetAuth(self, session):
        params = {"session": session, "apikey": self.headers}
        main = self.session.get(self.base_url+"/linegetauth", params=params).json()
        return main

    def randomProxy(self):
        params = {"apikey": self.headers}
        main = self.session.get(self.base_url+"/proxylist", params).json()
        return main

    ''' MEDIA FEATURE '''

    def statusApikey(self):
        params = {"apikey": self.headers}
        main = self.session.get(self.base_url+"/status", params).json()
        return main

    def randomProxy(self):
        params = {"apikey": self.headers}
        main = self.session.get(self.base_url+"/proxylist", params).json()
        return main

    def randomQuotesEN(self):
        params = {"apikey": self.headers}
        main = self.session.get(self.base_url+"/randomquote_en", params).json()
        return main 

    def randomQuotesID(self):
        params = {"apikey": self.headers}
        main = self.session.get(self.base_url+"/randomquote_id", params).json()
        return main

    def generateName(self):
        params = {"apikey": self.headers}
        main = self.session.get(self.base_url+"/genname", params).json()
        return main

    def worldNews(self):
        params = {"apikey": self.headers}
        main = self.session.get(self.base_url+"/worldnews", params).json()
        return main

    def beritaIndonesia(self):
        params = {"apikey": self.headers}
        main = self.session.get(self.base_url+"/beritaindo", params).json()
        return main

    def xx1MovieList(self):
        params = {"apikey": self.headers}
        main = self.session.get(self.base_url+"/xx1movielist", params).json()
        return main

    def coronaInfo(self):
        params = {"apikey": self.headers}
        main = self.session.get(self.base_url+"/coronainfo", params).json()
        return main

    def instagramProfile(self, query):
        params = {"query": query, "apikey": self.headers}
        main = self.session.get(self.base_url+"/instagram", params).json()
        return main

    def instagramStory(self, query):
        params = {"query": query, "apikey": self.headers}
        main = self.session.get(self.base_url+"/instagramstory", params).json()
        return main

    def cekResi(self, query, resi):
        params = {"query": query, "resi": resi, "apikey": self.headers}
        main = self.session.get(self.base_url+"/cekresi", params).json()
        return main

    def cekResi(self, query, language):
        params = {"query": query, "language": language, "apikey": self.headers}
        main = self.session.get(self.base_url+"/translator", params).json()
        return main

    def artiNama(self, query):
        params = {"query": query, "apikey": self.headers}
        main = self.session.get(self.base_url+"/artinama", params).json()
        return main

    def sifatNama(self, query):
        params = {"query": query, "apikey": self.headers}
        main = self.session.get(self.base_url+"/sifatnama", params).json()
        return main

    def mapsDirector(self, query):
        params = {"query": query, "apikey": self.headers}
        main = self.session.get(self.base_url+"/maps", params).json()
        return main

    def weatherInfo(self, query):
        params = {"query": query, "apikey": self.headers}
        main = self.session.get(self.base_url+"/weather", params).json()
        return main

    def wikipediaID(self, query):
        params = {"query": query, "apikey": self.headers}
        main = self.session.get(self.base_url+"/wikipedia_id", params).json()
        return main

    def wikipediaEN(self, query):
        params = {"query": query, "apikey": self.headers}
        main = self.session.get(self.base_url+"/wikipedia_en", params).json()
        return main

    def KBBI(self, query):
        params = {"query": query, "apikey": self.headers}
        main = self.session.get(self.base_url+"/kbbi", params).json()
        return main

    def lyricSearch(self, query):
        params = {"query": query, "apikey": self.headers}
        main = self.session.get(self.base_url+"/lyric", params).json()
        return main

    def googleSearch(self, query):
        params = {"query": query, "apikey": self.headers}
        main = self.session.get(self.base_url+"/google", params).json()
        return main

    def googleImage(self, query):
        params = {"query": query, "apikey": self.headers}
        main = self.session.get(self.base_url+"/googleimg", params).json()
        return main

    def jadwalSholat(self, query):
        params = {"query": query, "apikey": self.headers}
        main = self.session.get(self.base_url+"/jadwalsholat", params).json()
        return main

    def fancyText(self, query):
        params = {"query": query, "apikey": self.headers}
        main = self.session.get(self.base_url+"/fancy", params).json()
        return main

    def zodiacInfo(self, query):
        params = {"query": query, "apikey": self.headers}
        main = self.session.get(self.base_url+"/zodiac", params).json()
        return main

    def b64Encode(self, query):
        params = {"query": query, "apikey": self.headers}
        main = self.session.get(self.base_url+"/encode", params).json()
        return main

    def b64Decode(self, query):
        params = {"query": query, "apikey": self.headers}
        main = self.session.get(self.base_url+"/decode", params).json()
        return main

    def tinyUrl(self, url,custom=None):
        if custom:params = {"url": url,"custom":custom, "apikey": self.headers}
        else:params = {"url": url, "apikey": self.headers}
        main = self.session.get(self.base_url+"/tinyurl", params=params).json()
        return main

    def cocofunDownload(self, url):
        params = {"url": url, "apikey": self.headers}
        main = self.session.get(self.base_url+"/cocofundl", params).json()
        return main

    def facebookDownload(self, url):
        params = {"url": url, "apikey": self.headers}
        main = self.session.get(self.base_url+"/facebookdl", params).json()
        return main

    def tiktokDownload(self, url):
        params = {"url": url, "apikey": self.headers}
        main = self.session.get(self.base_url+"/tiktokdl", params).json()
        return main

    def youtubeDownload(self, url):
        params = {"url": url, "apikey": self.headers}
        main = self.session.get(self.base_url+"/youtubedl", params).json()
        return main

    def instagramDownload(self, url):
        params = {"url": url, "apikey": self.headers}
        main = self.session.get(self.base_url+"/instagramdl", params).json()
        return main

    def twitterDownload(self, url):
        params = {"url": url, "apikey": self.headers}
        main = self.session.get(self.base_url+"/twitterdl", params).json()
        return main

    def pinterestDownload(self, url):
        params = {"url": url, "apikey": self.headers}
        main = self.session.get(self.base_url+"/pinterestdl", params).json()
        return main

    def nekopoiDownload(self, url):
        params = {"url": url, "apikey": self.headers}
        main = self.session.get(self.base_url+"/nekopoidl", params).json()
        return main

    def screenshotWeb(self, url):
        params = {"url": url, "apikey": self.headers}
        main = self.session.get(self.base_url+"/ssweb", params).json()
        return main

    ''' TEXT PRO '''

    def greenChrome3DText(self, text):
        params = {"apikey": self.headers, "text": text}
        main = self.session.get(self.base_url+"/textpro/greenchrome3dtext", params).json()
        return main

    def shinyCristal3DText(self, text):
        params = {"apikey": self.headers, "text": text}
        main = self.session.get(self.base_url+"/textpro/shinycristal3dtext", params).json()
        return main

    def cartoon3DText(self, text):
        params = {"apikey": self.headers, "text": text}
        main = self.session.get(self.base_url+"/textpro/cartoon3dtext", params).json()
        return main

    def hologramColor3DText(self, text):
        params = {"apikey": self.headers, "text": text}
        main = self.session.get(self.base_url+"/textpro/hologramcolor3dtext", params).json()
        return main

    def luxury3DText(self, text):
        params = {"apikey": self.headers, "text": text}
        main = self.session.get(self.base_url+"/textpro/luxury3dtext", params).json()
        return main

    def grungeMetalic3DText(self, text):
        params = {"apikey": self.headers, "text": text}
        main = self.session.get(self.base_url+"/textpro/grungemetalic3dtext", params).json()
        return main

    def multicolorPaint3DText(self, text):
        params = {"apikey": self.headers, "text": text}
        main = self.session.get(self.base_url+"/textpro/multicolorpaint3dtext", params).json()
        return main

    def neonLightText(self, text):
        params = {"apikey": self.headers, "text": text}
        main = self.session.get(self.base_url+"/textpro/neonlighttext", params).json()
        return main

    def shinyCristal3DText(self, text):
        params = {"apikey": self.headers, "text": text}
        main = self.session.get(self.base_url+"/textpro/shinycristal3dtext", params).json()
        return main

    def typographyText(self, text):
        params = {"apikey": self.headers, "text": text}
        main = self.session.get(self.base_url+"/textpro/typographytext", params).json()
        return main

    def partyText(self, text):
        params = {"apikey": self.headers, "text": text}
        main = self.session.get(self.base_url+"/textpro/partytext", params).json()
        return main

    def comicText(self, text):
        params = {"apikey": self.headers, "text": text}
        main = self.session.get(self.base_url+"/textpro/comictext", params).json()
        return main

    def goldenText(self, text):
        params = {"apikey": self.headers, "text": text}
        main = self.session.get(self.base_url+"/textpro/goldentext", params).json()
        return main

    def blackpickLogoText(self, text):
        params = {"apikey": self.headers, "text": text}
        main = self.session.get(self.base_url+"/textpro/blackpicklogotext", params).json()
        return main

    def transformerText(self, text):
        params = {"apikey": self.headers, "text": text}
        main = self.session.get(self.base_url+"/textpro/transformertext", params).json()
        return main

    def lightGlowText(self, text):
        params = {"apikey": self.headers, "text": text}
        main = self.session.get(self.base_url+"/textpro/lightglowtext", params).json()
        return main

    def haryypotterText(self, text):
        params = {"apikey": self.headers, "text": text}
        main = self.session.get(self.base_url+"/textpro/harrypottertext", params).json()
        return main

    def quoteText(self, text):
        params = {"apikey": self.headers, "text": text}
        main = self.session.get(self.base_url+"/textpro/quotetext", params).json()
        return main

    def bokehText(self, text):
        params = {"apikey": self.headers, "text": text}
        main = self.session.get(self.base_url+"/textpro/bokehtext", params).json()
        return main

    def breakWallText(self, text):
        params = {"apikey": self.headers, "text": text}
        main = self.session.get(self.base_url+"/textpro/breakwalltext", params).json()
        return main

    def iceColdText(self, text):
        params = {"apikey": self.headers, "text": text}
        main = self.session.get(self.base_url+"/textpro/icecoldtext", params).json()
        return main
'''

EXAMPLE

from minzrestapi improt *

api = MinzRestApi('YOUR APIKEY')
data = api.googleSearch("Naruto")
api.print_result(data)

'''