#!/usr/bin/env python
from openid.consumer.discover import discover, DiscoveryFailure

names = [["server_url",  "Server URL  "],
         ["local_id",    "Local ID    "],
         ["canonicalID", "Canonical ID"],
        ]

def show_services(user_input, normalized, services):
    print " Claimed identifier:", normalized
    print " Discovered services:"
    for n, service in enumerate(services):
        print " %s." % (n,)
        for attr, name in names:
            val = getattr(service, attr, None)
            if val is not None:
                print "  %s: %s" % (name, val)

        print "  Type URIs:"
        for type_uri in service.type_uris:
            print "   *", type_uri

        print

if __name__ == "__main__":
    import sys

    for user_input in sys.argv[1:]:
        print "=" * 50
        print "Running discovery on", user_input
        try:
            normalized, services = discover(user_input)
        except DiscoveryFailure, why:
            print "Discovery failed:", str(why)
        else:
            show_services(user_input, normalized, services)
