# Path: core/moduletemplate.py
# class BotModule:
#     PRIV_NONE = "none"
#     PRIV_MOD = "mod"
#     PRIV_MODERATOR = "mod"
#     PRIV_ADMIN = "admin"
#     PRIV_ADMINISTRATOR = "admin"
#     def __init__(self, conn, logger, module_name):
#     def on_module_load(self):
#     def on_module_unload(self):
#     def on_connect(self):
#     def on_disconnect(self):
#     def on_privmsg(self, target, nick, message):
#     def on_action(self, target, nick, action):
#     def on_join(self, nick, channel):
#     def on_part(self, nick, channel, message):
#     def on_self_join(self, channel):
#     def on_self_part(self, channel):
#     def on_kick(self, nick, channel, knick, reason):
#     def on_quit(self, nick, message):
#     def on_command(self, target, nick, command, commandtext, mod, admin):
#     def on_numeric(self, numeric, data):
#     def message(self, target, nick, message, parse=False):
#     def notice(self, nick, message, parse=False):
#     def action(self, target, action, parse=False):
#     def mode(self, target, modes):
#     def ban(self, nick, channel, quiet=False):
#     def getMask(self, nick):
#     def send_raw(self, raw_message):
#     def debug(self, message, format=False):
#     def log(self, message):
#     def log_verbose(self, message):
#     def warning(self, message):
#     def notice_verbose(self, message):
#     def warning_verbose(self, message):
#     def error(self, message):
#     def isOp(self, nick, channel):
#     def isVoice(self, nick, channel):
#     def isOn(self, nick, channel):
#     def isIdentified(self, nick):
#     def isOper(self, nick):
#     def getUserData(self, nick):
#     def getChannelData(self, channel):
#     def isBotAdministrator(self, nick):
#     def isBotModerator(self, nick):
#     def ratelimit(self, command, confName="rate_limit_delay", delay=10):
#     def register_command(self, command, params, help, priv, aliases=None):
#     def unregister_command(self, command):
#     def getConfigMetadata(self, metadata):
#     def requireApiKey(self, api_name):
#     def _getApiKey(self, api_name):
#     def _unregister_commands(self):
#     def _getModuleData(self):
# 
# Path: tools/shorturl.py
# class ShortUrl:
#     def googl(url, api_key=None, logger=None):
#     def isgd(url, api_key=None, logger=None):
#     def scenesat(url, api_key=None, alias=None, password=None, logger=None):
# 
# Path: tools/urltools.py
# class UrlTools:
#     SHORTEN_SERVICES = ["isgd", "googl", "scenesat"]
#     def isUrl(url):
#     def shorten(url, service, api_key=None, logger=None, ret_false=False):
#     def getAvailableServices():
#     def getDefaultShortenService():
#     def getTitle(url, ret_false=False):
#     def htmlEntityEncode(string):
#     def htmlEntityDecode(string):


from core import moduletemplate
from tools import shorturl
from tools import urltools
import requests
import urllib.parse
        if command == "image" or command == "gis" or command == "imagesearch":
            if not commandtext:
                return self.notice(nick, "Usage: image <search>")

            return self.message(target, nick, self.google_image_search(commandtext))

        return False

    def google_search(self, search):
        url = "http://ajax.googleapis.com/ajax/services/search/web"
        payload = {
            "v": "1.0",
            "safe": "moderate",
            "q": search
        }
        json = ""

        try:
            request = requests.get(url, params=payload)
            request.raise_for_status()

            json = request.json()
        except Exception as e:
            return "Failed to look up query: {}".format(str(e))

        if "responseData" in json and "results" in json["responseData"]:
            gurl = False
            result = ""

            try:

# Path: core/moduletemplate.py
# class BotModule:
#     PRIV_NONE = "none"
#     PRIV_MOD = "mod"
#     PRIV_MODERATOR = "mod"
#     PRIV_ADMIN = "admin"
#     PRIV_ADMINISTRATOR = "admin"
#     def __init__(self, conn, logger, module_name):
#     def on_module_load(self):
#     def on_module_unload(self):
#     def on_connect(self):
#     def on_disconnect(self):
#     def on_privmsg(self, target, nick, message):
#     def on_action(self, target, nick, action):
#     def on_join(self, nick, channel):
#     def on_part(self, nick, channel, message):
#     def on_self_join(self, channel):
#     def on_self_part(self, channel):
#     def on_kick(self, nick, channel, knick, reason):
#     def on_quit(self, nick, message):
#     def on_command(self, target, nick, command, commandtext, mod, admin):
#     def on_numeric(self, numeric, data):
#     def message(self, target, nick, message, parse=False):
#     def notice(self, nick, message, parse=False):
#     def action(self, target, action, parse=False):
#     def mode(self, target, modes):
#     def ban(self, nick, channel, quiet=False):
#     def getMask(self, nick):
#     def send_raw(self, raw_message):
#     def debug(self, message, format=False):
#     def log(self, message):
#     def log_verbose(self, message):
#     def warning(self, message):
#     def notice_verbose(self, message):
#     def warning_verbose(self, message):
#     def error(self, message):
#     def isOp(self, nick, channel):
#     def isVoice(self, nick, channel):
#     def isOn(self, nick, channel):
#     def isIdentified(self, nick):
#     def isOper(self, nick):
#     def getUserData(self, nick):
#     def getChannelData(self, channel):
#     def isBotAdministrator(self, nick):
#     def isBotModerator(self, nick):
#     def ratelimit(self, command, confName="rate_limit_delay", delay=10):
#     def register_command(self, command, params, help, priv, aliases=None):
#     def unregister_command(self, command):
#     def getConfigMetadata(self, metadata):
#     def requireApiKey(self, api_name):
#     def _getApiKey(self, api_name):
#     def _unregister_commands(self):
#     def _getModuleData(self):
# 
# Path: tools/shorturl.py
# class ShortUrl:
#     def googl(url, api_key=None, logger=None):
#     def isgd(url, api_key=None, logger=None):
#     def scenesat(url, api_key=None, alias=None, password=None, logger=None):
# 
# Path: tools/urltools.py
# class UrlTools:
#     SHORTEN_SERVICES = ["isgd", "googl", "scenesat"]
#     def isUrl(url):
#     def shorten(url, service, api_key=None, logger=None, ret_false=False):
#     def getAvailableServices():
#     def getDefaultShortenService():
#     def getTitle(url, ret_false=False):
#     def htmlEntityEncode(string):
#     def htmlEntityDecode(string):


# Path: modules/google.py
from core import moduletemplate
from tools import shorturl
from tools import urltools
import requests
import urllib.parse

        if command == "image" or command == "gis" or command == "imagesearch":
            if not commandtext:
                return self.notice(nick, "Usage: image <search>")

            return self.message(target, nick, self.google_image_search(commandtext))

        return False

    def google_search(self, search):
        url = "http://ajax.googleapis.com/ajax/services/search/web"
        payload = {
            "v": "1.0",
            "safe": "moderate",
            "q": search
        }
        json = ""

        try:
            request = requests.get(url, params=payload)
            request.raise_for_status()

            json = request.json()
        except Exception as e:
            return "Failed to look up query: {}".format(str(e))

        if "responseData" in json and "results" in json["responseData"]:
            gurl = False
            result = ""

            try:

                gurl = urltools.UrlTools.shorten("https://google.com/#q={}".format(urllib.parse.quote(search)))