#! /usr/bin/env python3

import requests
from pprint import pprint


# http://ip.jsontest.com/
# https://luonnotar.infodrom.org/json/
def get_external_ip():
    url = 'https://luonnotar.infodrom.org/json/'
    # .get = GET, .post = POST, .put = PUT, .delete = DELETE, .options = OPTIONS
    response = requests.get(url)
    # print(response)
    # print(type(response))

    # print(response.status_code)
    if response.status_code != 200:
        raise Exception("HTTP Status is " + str(response.status_code))

    # print(response.content)
    # print(type(response.content))

    # print("Content-type der Antwort:", response.headers['Content-Type'])

    # Konvertierung bytes nach str
    #text = response.content.decode()
    #print(text)
    # Falls die Antwort ein Text ist:
    #print(response.text)

    # import json
    # local_data = json.loads(json_string)  # erzeugt Python-Datenstruktur
    # json_string = json.dumps(data)        # erzeugt JSON-String der Daten

    if 'application/json' not in response.headers['content-type']:
        raise Exception("Content-Type is not application/json")

    # Falls der Content-Type application/json ist
    data = response.json()
    # Verschachtelte Struktur am Besten einmal mit Pretty-Printer ausgeben
    # pprint(data)

    return data['ip']['remote']

    # data werden url-encoded key=value&key2=value2&key3=value3
    # json wird automatisch in JSON kodiert
    # response = requests.post(URL, data={...}, json={...}


ip = get_external_ip()
print("Aktuelle externe IP-Adresse:", ip)
