Skip to main content

Client for Stichting Opvoeden API V1

Project description

A client for the stichtingopvoeden.nl API version 1.

Usage

Import the client class from opvoeden_api.client and instantiate it with an API key:

client = Client(MY_API_KEY)

The client methods map to the following set of endpoints:

Method

Endpoint

contentset_list

/rest/v1/contentset

contentset(contentset_id)

/rest/v1/contentset/{id}

article(external_reference)

/rest/v1/article/{externalReference}

image(image_id)

/rest/v1/image/{id}

Data types

Each client method returns a different data type.

ContentSet

The contentset_list method returns a list of ContentSet objects.

A ContentSet object has of the following properties:

  • contentset_id

  • name

  • description

  • is_default

Refer to the API data types docs for more information on these fields.

ArticleNode

The contentset(contentset_id) method returns a single ArticleNode. This node represents the root of a tree of Articles.

An ArticleNode has the following properties:

article

The Article instance associated with this node

children

A list of ArticleNode instances of which the current node is the parent.

It is possible to iterate over an article node. This will traverse the entire tree in a depth first order. So, for example, to get a flat list of all the articles in a tree one could do this:

tree = client.contentset(1)
articles = [node.article for node in tree if node.article]

To recurse over the tree use the children property:

def visit(node, parent=None):
    """
    Visit each node in the tree.
    """
    # do something with node, then recurse
    for child in node.children:
        visit(child, node)

tree = client.contentset(1)
visit(tree)

Article

The article(external_reference) method returns a single Article instance. Another way to get an Article object is by accessing the article property of an ArticleNode.

An Article has the following properties:

  • external_reference

  • short_title

  • title

  • article_text

  • parent_reference

  • position

  • last_change_date

  • canonicaltag

Refer to the API data types docs for more information on these fields.

In addition to these fields the Article object also provides these properties:

path

The url of the article. This is identical to the canonicaltag but the schema://domain prefix is stripped.

slug

The last element of the path. i.e. if path is '/foo/bar/' then slug will be 'bar'.

Image

The image(image_id) method returns a single Image instance.

  • image_id

  • data

  • content_type

  • name

  • creation_date

Refer to the API data types docs for more information on these fields.

Converting image data to binary

The Image object also provides an as_binary method.

This method converts to base64 encoded value of the data property to binary. The return value of this method can be used to store images on a file system.

Article utils

The article_text of Articles returned by the contentset method can contain a number special placeholder strings.

opvoeden_api.article_utils provides functions to deal with these placeholders.

Replace JGZ placeholders

To replace JGZ placeholders with appropriate strings use replace_jgz.

By default these are the substitutions:

Placeholder

Substitution

jgz

centrum voor Jeugd en Gezin (CJG)

Jgz

Centrum voor Jeugd en Gezin (CJG)

jgzs

CJG’s

Jgzs

CJG’s

de jgzs

de CJG’s

De jgzs

De CJG’s

het jgz

het Centrum voor Jeugd en Gezin (CJG)

Het jgz

Het Centrum voor Jeugd en Gezin (CJG)

To override any of the substitutions use the optional substitutions argument to replace_jgz i.e.:

replace_jgz(article_text, substitutions={
    'jgz': 'centrum voor Jeugd en Gezin'
})

Replace image placeholders

To replace image placeholders use replace_images with a replacement callback.

The replacement callback is called with the image_id for each placeholder in the article text.

If the replacement callback returns anything other than None the placeholder is replaced with the return value.

For example:

image_id_to_src = {
    '1': '/media/1.gif',
    '2': '/media/2.gif'
}

def get_image_tag(image_id):
    src = image_id_to_src.get(image_id, None)
    if src:
        return '<img src="{}">'.format(src)

Replace video placeholders

To replace Brightcove video placeholders use replace_videos with a replacement callback.

The replacement callback is called with the video_id, embed_url and external_url for each placeholder in the article text.

If the replacement callback returns anything other than None the placeholder is replaced with the return value.

Some examples:

def get_video_embed(video_id, embed_url, external_url):
    """Create an iframe to embed the video"""
    return '<iframe src="{}">'.format(embed_url)


def get_video_link(article, video_id, embed_url, external_url):
    """Create a link to the video player on opvoeden.nl"""
    return '<a href="{}" target="_blank">Watch the video</a>'.format(
        external_url.format(article.external_reference))


# Loop through a list of articles and bind the current
# article to the first argument of get_video_link
for article in article_list:
    _get_video_link = functools.partial(get_video_link, article)
    replace_videos(article_text, _get_video_link)

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

opvoeden-api-client-1.0.0.tar.gz (11.9 kB view hashes)

Uploaded source

Built Distribution

opvoeden_api_client-1.0.0-py2-none-any.whl (10.9 kB view hashes)

Uploaded py2

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page