Skip to content
Snippets Groups Projects
default.py 1.33 KiB
"""
Default Endpoints
=========================

.. contents:: :local:

/version
---------------------

.. autofunction:: compendium_v2.routes.default.version

"""
import pkg_resources

from flask import Blueprint, jsonify, render_template
from compendium_v2.routes import common

routes = Blueprint("compendium-v2-default", __name__)
API_VERSION = '0.1'

VERSION_SCHEMA = {
    '$schema': 'http://json-schema.org/draft-07/schema#',

    'type': 'object',
    'properties': {
        'api': {
            'type': 'string',
            'pattern': r'\d+\.\d+'
        },
        'module': {
            'type': 'string',
            'pattern': r'\d+\.\d+'
        }
    },
    'required': ['api', 'module'],
    'additionalProperties': False
}


@routes.after_request
def after_request(resp):
    return common.after_request(resp)


@routes.route("/")
def index():
    return render_template('../static/index.html')


@routes.route("/version", methods=['GET', 'POST'])
@common.require_accepts_json
def version():
    """
    handler for /version requests

    response will be formatted as:

    .. asjson::
        compendium_v2.routes.default.VERSION_SCHEMA

    :return:
    """
    version_params = {
        'api': API_VERSION,
        'module':
            pkg_resources.get_distribution('compendium-v2').version
    }
    return jsonify(version_params)