Skip to content

SEAMWARE/ckanext-dsif

Repository files navigation

Tests

ckanext-dsif

CKAN extension that exposes DSIF catalog discovery and search endpoints.

It provides:

  • Health endpoint with DSIF version metadata
  • DSIF manifest endpoint at /.well-known/dataspace-catalog.json
  • Search endpoint that maps to CKAN package_search

Compatibility

  • CKAN: 2.11 (current target)
  • Python: 3.10

Endpoints

  • GET /health
  • GET /.well-known/dataspace-catalog.json
  • GET /search

Installation

To install ckanext-dsif:

  1. Activate your CKAN virtual environment:

    . /usr/lib/ckan/default/bin/activate

  2. Install the extension:

    git clone https://github.com/SEAMWARE/ckanext-dsif.git
    cd ckanext-dsif
    pip install -e .
    pip install -r requirements.txt
  3. Enable the plugin in CKAN config:

    ckan.plugins = ... dsif ...

  4. Restart CKAN.

Configuration

Values can be set via CKAN config (ckanext.dsif.*) or environment variables (CKANEXT_DSIF_*).

Required

  • ckanext.dsif.catalog_id / CKANEXT_DSIF_CATALOG_ID
  • ckanext.dsif.sector / CKANEXT_DSIF_SECTOR
  • ckanext.dsif.title / CKANEXT_DSIF_TITLE
  • ckanext.dsif.description / CKANEXT_DSIF_DESCRIPTION

Optional

  • ckanext.dsif.ttl_seconds
    • Default: 1800
    • Minimum enforced value: 60
    • Used for DSIF manifest cache header and payload TTL
  • ckanext.dsif.impl_version
    • Optional implementation version in manifest payload
    • Default: extension DSIF version (0.1.0)
  • ckanext.dsif.origin_catalog_id
    • Used in /search hits as originCatalogId
    • Fallback: ckan.site_url

Example

CKANEXT_DSIF_CATALOG_ID=ic-001
CKANEXT_DSIF_SECTOR=smart-cities
CKANEXT_DSIF_TITLE=Independent Catalog of Smart City Data
CKANEXT_DSIF_DESCRIPTION=This catalog contains datasets related to smart cities.

Search API

GET /search supports:

  • q
  • type
  • format
  • publisher
  • keyword
  • page (integer, >=1)
  • pageSize (integer, 1..100)
  • sort

Behavior:

  • Invalid paging values return 400
  • Invalid numeric parameters return 400
  • Unexpected errors return 500
  • Internally uses CKAN package_search with ignore_auth=True

Developer installation

git clone https://github.com/SEAMWARE/ckanext-dsif.git
cd ckanext-dsif
pip install -e .
pip install -r dev-requirements.txt

Tests

Run all tests:

pytest --ckan-ini=test.ini

Run unit tests only:

pytest --ckan-ini=test.ini ckanext/dsif/tests/unit

Releasing a new version of ckanext-dsif

  1. Update version in pyproject.toml

  2. Build and validate:

    python -m build && twine check dist/*

  3. Upload to PyPI:

    twine upload dist/*

  4. Commit and tag:

    git commit -a -m "Release x.y.z"
    git push
    git tag x.y.z
    git push --tags

License

AGPL

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages