#!/usr/bin/env python
# vim: set fileencoding=utf-8 :

from getpass import getpass
import urllib2
from xml.etree import ElementTree

BASE_URL = "https://demo-api.doxpop.com"
USERNAME = "demo"

password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
password_mgr.add_password("Doxpop API Demo", BASE_URL, USERNAME, 
        getpass("Password for %s: " % USERNAME))
handler = urllib2.HTTPBasicAuthHandler(password_mgr)
opener = urllib2.build_opener(handler)

query_page = opener.open(BASE_URL + "/actors_cases.xml?fullname=rifkind,+david")
tree = ElementTree.parse(query_page)

for resource in tree.findall("actor_case"):
    print resource.findtext("assigned_case_role")

    # get some info about the actor
    actor = resource.find("actor")
    print actor.findtext("actor_full_name")
    print actor.findtext("actor_person_date_of_birth")
    for address in actor.findall("addresses/address"):
        print address.findtext("address_line1")
        print address.findtext("address_city")
        print address.findtext("address_state_province_code")
        print address.findtext("address_postal_code")

    # get some info about the case
    case_resource = resource.find("case")
    print case_resource.findtext("case_caption")
    print case_resource.findtext("case_global_disposition_code")
    print case_resource.findtext("case_disposition_date")

    # Extract and use the charges URI.
    charges_uri = case_resource.findtext("charges_uri")
    print charges_uri
    charges_page = opener.open(BASE_URL + charges_uri + ".xml")
    chargesTree = ElementTree.parse(charges_page)
    for charge_resource in chargesTree.findall("charge"):
        print charge_resource.findtext("charge_desc")
    charges_page.close()
query_page.close()
