#! /usr/bin/env python
# -*- coding: utf-8 -*-

#==============================================================================
# qlochost.py - localiza un host
# A partir de una idea vista en: http://www.pythondiario.com
#------------------------------------------------------------------------------
# FJA - fja@neocipres.com                              Febrero de 2019
#==============================================================================

import sys
import requests
import socket
import json
import androidhelper


def muestramsg(titulo, msg):
    droid.dialogCreateAlert(titulo, msg)
    droid.dialogSetPositiveButtonText('Aceptar')
    droid.dialogShow()


def ip_scraping(ip=""):
    # Nos conectamos con la API
    res = requests.get(api_url + ip, data=data)
    # Obtenemos y procesamos la respuesta JSON
    api_json_res = json.loads(res.content)
    return api_json_res

# URL de la API
api_url = "http://ip-api.com/json/"

# Definimos los parametros de respuesta que queremos obtener
parametros = 'status,country,countryCode,region,regionName,city,zip,\
lat,lon,timezone,isp,org,as,query'

data = {"fields": parametros}

droid = androidhelper.Android()

if __name__ == '__main__':
    try:
        # Solicitamos la entrada
        entrada = droid.dialogGetInput("Host", "Por ejemplo: gnu.org")
        host = str(entrada.result)
        ip = socket.gethostbyname(host)
        droid.makeToast("Obteniendo datos de %s" % host)
        # Llamamos a la función ip_scraping y mostramos los resultados
        info = 'IP: ' + str(ip)
        info = info + '\n'
        par = parametros.split(",")
        for x in par:
            info = info + str(x.upper()) + ": " + str(ip_scraping(ip)[x]) + '\n'
        muestramsg(host, info)
    except Exception as e:
        msg = str(e) + ' ' + str(sys.exc_info()[0])
        muestramsg('Error', msg)
