Skip to main content

A python client for retrieving Iglu schemas and validating self-describing JSON

Project description

Python client for Iglu Travis-CI Build Status

A Python client and resolver for [Iglu schema repositories][iglu-wiki]

Installation

pip install iglu_client

Usage

import json
import jsonschema

from iglu_client import SchemaResolver, SelfDescribingJson

resolver_conf = """
{
    "schema": "iglu:com.snowplowanalytics.iglu/resolver-config/jsonschema/1-0-2",
    "data": {
        "cacheSize": 500,
        "repositories": [
            {
                "name": "My Private Repo",
                "priority": 0,
                "vendorPrefixes": ["com.mycompany"],
                "connection": {"http": {"uri": "http://myprivaterepo.com", "apikey": "api-key"}}
            },
            {
                "name": "Iglu Central",
                "priority": 1,
                "vendorPrefixes": ["com.snowplowanalytics.snowplow"],
                "connection": {"http": {"uri": "http://iglucentral.com"}}
            }
        ]
    }
}
"""
resolver = SchemaResolver.parse(resolver_conf)

# Retrieve a schema
schema = resolver.lookup_schema("iglu:com.snowplowanalytics.snowplow/link_click/jsonschema/1-0-0")
print("schema: %s" % schema)


# Validate a self-describing JSON
event = """
{
    "schema": "iglu:com.snowplowanalytics.snowplow/link_click/jsonschema/1-0-0",
    "data": {
        "targetUrl": "https://mixpanel.com"
    }
}
"""
data = SelfDescribingJson.parse(event)
try:
    data.validate(resolver) # will throw an exception if the event is invalid
    print("event is valid")
except jsonschema.exceptions.ValidationError as e:
    print("event is invalid")

if data.valid(resolver): # will return True or False
    print("event is valid")
else:
    print("event is invalid")

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

iglu-client-0.2.0.tar.gz (8.6 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page