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

from getpass import getpass
import urllib2
try:
    # Use standard library for Python 2.6
    import json
except ImportError:
    # Use a third party library for Python 2.4/2.5
    import simplejson as json

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)

page = opener.open(BASE_URL + "/actors_cases.json?fullname=rifkind,+david")
resources = json.load(page, encoding="utf-8")
page.close()

for resource in resources:
    print resource["assigned_case_role"]

    # get some info about the actor
    actor = resource["actor"]
    print actor["actor_full_name"]
    print actor["actor_person_date_of_birth"]
    for address in actor["addresses"]:
        print address["address_line1"]
        print address["address_city"]
        print address["address_state_province_code"]
        print address["address_postal_code"]

    # get some info about the case
    case_resource = resource["case"]
    print case_resource["case_caption"]
    print case_resource["case_global_disposition_code"]
    print case_resource["case_disposition_date"]

    # Extract and use the charges URI.
    charges_uri = case_resource["charges_uri"]
    print charges_uri
    charges_page = opener.open(BASE_URL + charges_uri + ".json")
    charge_resources = json.load(charges_page, encoding="utf-8")
    charges_page.close()
    for charge_resource in charge_resources:
        print charge_resource["charge_desc"]
