def validate_api(abbr, schema_dir=None): xml_schema = get_xml_schema() metadata_schema = get_json_schema("metadata", schema_dir) path = "metadata/%s" % abbr url = api_url(path) json_response = scrapelib.urlopen(url) validictory.validate(json.loads(json_response), metadata_schema, validator_cls=APIValidator) validate_xml(url, xml_schema) bill_schema = get_json_schema("bill", schema_dir) level = metadata(abbr)['level'] spec = {'level': level, level: abbr} total_bills = db.bills.find(spec).count() for i in xrange(0, 100): bill = db.bills.find(spec)[random.randint(0, total_bills - 1)] path = "bills/%s/%s/%s/%s" % (abbr, bill['session'], bill['chamber'], bill['bill_id']) url = api_url(path) json_response = scrapelib.urlopen(url) validictory.validate(json.loads(json_response), bill_schema, validator_cls=APIValidator) validate_xml(url, xml_schema) legislator_schema = get_json_schema("legislator", schema_dir) for legislator in db.legislators.find(spec): path = 'legislators/%s' % legislator['_id'] url = api_url(path) json_response = scrapelib.urlopen(url) validictory.validate(json.loads(json_response), legislator_schema, validator_cls=APIValidator) validate_xml(url, xml_schema) committee_schema = get_json_schema("committee", schema_dir) for committee in db.committees.find(spec): path = "committees/%s" % committee['_id'] url = api_url(path) json_response = scrapelib.urlopen(url) validictory.validate(json.loads(json_response), committee_schema, validator_cls=APIValidator) validate_xml(url, xml_schema) event_schema = get_json_schema("event", schema_dir) total_events = db.events.find(spec).count() if total_events: for i in xrange(0, 10): event = db.events.find(spec)[random.randint(0, total_events - 1)] path = "events/%s" % event['_id'] url = api_url(path) json_response = scrapelib.urlopen(url) validictory.validate(json.loads(json_response), event_schema, validator_cls=APIValidator) validate_xml(url, xml_schema)
def validate_api(state): cwd = os.path.split(__file__)[0] schema_dir = os.path.join(cwd, "../schemas/api/") xml_schema = get_xml_schema() with open(os.path.join(schema_dir, "metadata.json")) as f: metadata_schema = json.load(f) path = "metadata/%s" % state url = api_url(path) json_response = scrapelib.urlopen(url) validictory.validate(json.loads(json_response), metadata_schema, validator_cls=APIValidator) validate_xml(url, xml_schema) with open(os.path.join(schema_dir, "bill.json")) as f: bill_schema = json.load(f) bill_spec = {'state': state} total_bills = db.bills.find(bill_spec).count() for i in xrange(0, 100): bill = db.bills.find(bill_spec)[random.randint(0, total_bills - 1)] path = "bills/%s/%s/%s/%s" % (state, bill['session'], bill['chamber'], bill['bill_id']) url = api_url(path) json_response = scrapelib.urlopen(url) validictory.validate(json.loads(json_response), bill_schema, validator_cls=APIValidator) validate_xml(url, xml_schema) with open(os.path.join(schema_dir, "legislator.json")) as f: legislator_schema = json.load(f) for legislator in db.legislators.find({'state': state}): path = 'legislators/%s' % legislator['_id'] url = api_url(path) json_response = scrapelib.urlopen(url) validictory.validate(json.loads(json_response), legislator_schema, validator_cls=APIValidator) validate_xml(url, xml_schema) with open(os.path.join(schema_dir, "committee.json")) as f: committee_schema = json.load(f) for committee in db.committees.find({'state': state}): path = "committees/%s" % committee['_id'] url = api_url(path) json_response = scrapelib.urlopen(url) validictory.validate(json.loads(json_response), committee_schema, validator_cls=APIValidator) validate_xml(url, xml_schema) with open(os.path.join(schema_dir, "event.json")) as f: event_schema = json.load(f) total_events = db.events.find({'state': state}).count() if total_events: for i in xrange(0, 10): event = db.events.find({'state': state})[ random.randint(0, total_events - 1)] path = "events/%s" % event['_id'] url = api_url(path) json_response = scrapelib.urlopen(url) validictory.validate(json.loads(json_response), event_schema, validator_cls=APIValidator) validate_xml(url, xml_schema)