Blame progit/api/__init__.py

Pierre-Yves Chibon 0537b7
#-*- coding: utf-8 -*-
Pierre-Yves Chibon 0537b7
Pierre-Yves Chibon 0537b7
"""
Pierre-Yves Chibon 0537b7
 (c) 2015 - Copyright Red Hat Inc
Pierre-Yves Chibon 0537b7
Pierre-Yves Chibon 0537b7
 Authors:
Pierre-Yves Chibon 0537b7
   Pierre-Yves Chibon <pingou@pingoured.fr></pingou@pingoured.fr>
Pierre-Yves Chibon 0537b7
Pierre-Yves Chibon 0537b7
API namespace version 0.
Pierre-Yves Chibon 0537b7
Pierre-Yves Chibon 0537b7
"""
Pierre-Yves Chibon 0537b7
Pierre-Yves Chibon 0537b7
import flask
Pierre-Yves Chibon 0537b7
Pierre-Yves Chibon 0537b7
API = flask.Blueprint('api_ns', __name__, url_prefix='/api/0')
Pierre-Yves Chibon 0537b7
Pierre-Yves Chibon 0537b7
Pierre-Yves Chibon 0537b7
from progit import __api_version__, APP, SESSION
Pierre-Yves Chibon 0537b7
import progit
Pierre-Yves Chibon 0537b7
import progit.lib
Pierre-Yves Chibon 0537b7
Pierre-Yves Chibon 0537b7
Pierre-Yves Chibon 0537b7
@API.route('/version/')
Pierre-Yves Chibon 0537b7
@API.route('/version')
Pierre-Yves Chibon 0537b7
def api_version():
Pierre-Yves Chibon 0537b7
    '''
Pierre-Yves Chibon 0537b7
    API Version
Pierre-Yves Chibon 0537b7
    -----------
Pierre-Yves Chibon 0537b7
    Display the most recent api version.
Pierre-Yves Chibon 0537b7
Pierre-Yves Chibon 0537b7
    ::
Pierre-Yves Chibon 0537b7
Pierre-Yves Chibon 0537b7
        /api/version
Pierre-Yves Chibon 0537b7
Pierre-Yves Chibon 0537b7
    Accepts GET queries only.
Pierre-Yves Chibon 0537b7
Pierre-Yves Chibon 0537b7
    Sample response:
Pierre-Yves Chibon 0537b7
Pierre-Yves Chibon 0537b7
    ::
Pierre-Yves Chibon 0537b7
Pierre-Yves Chibon 0537b7
        {
Pierre-Yves Chibon 0537b7
          "version": "1"
Pierre-Yves Chibon 0537b7
        }
Pierre-Yves Chibon 0537b7
Pierre-Yves Chibon 0537b7
    '''
Pierre-Yves Chibon 0537b7
    return flask.jsonify({'version': __api_version__})
Pierre-Yves Chibon 0537b7
Pierre-Yves Chibon 0537b7
Pierre-Yves Chibon 0537b7
@API.route('/users/')
Pierre-Yves Chibon 0537b7
@API.route('/users')
Pierre-Yves Chibon 0537b7
def api_users():
Pierre-Yves Chibon 0537b7
    '''
Pierre-Yves Chibon 0537b7
    List users
Pierre-Yves Chibon 0537b7
    -----------
Pierre-Yves Chibon 0537b7
    Returns the list of all users that have logged into this progit instances.
Pierre-Yves Chibon 0537b7
    This can then be used as input for autocompletion in some forms/fields.
Pierre-Yves Chibon 0537b7
Pierre-Yves Chibon 0537b7
    ::
Pierre-Yves Chibon 0537b7
Pierre-Yves Chibon 0537b7
        /api/users
Pierre-Yves Chibon 0537b7
Pierre-Yves Chibon 0537b7
    Accepts GET queries only.
Pierre-Yves Chibon 0537b7
Pierre-Yves Chibon 0537b7
    Sample response:
Pierre-Yves Chibon 0537b7
Pierre-Yves Chibon 0537b7
    ::
Pierre-Yves Chibon 0537b7
Pierre-Yves Chibon 0537b7
        {
Pierre-Yves Chibon 0537b7
          "users": ["user1", "user2"]
Pierre-Yves Chibon 0537b7
        }
Pierre-Yves Chibon 0537b7
Pierre-Yves Chibon 0537b7
    '''
Pierre-Yves Chibon 0537b7
    pattern = flask.request.args.get('pattern', None)
Pierre-Yves Chibon 0537b7
    if pattern is not None and not pattern.endswith('*'):
Pierre-Yves Chibon 0537b7
        pattern += '*'
Pierre-Yves Chibon 0537b7
Pierre-Yves Chibon 0537b7
    print pattern
Pierre-Yves Chibon 0537b7
Pierre-Yves Chibon 0537b7
    return flask.jsonify(
Pierre-Yves Chibon 0537b7
        {
Pierre-Yves Chibon 0537b7
            'users': [
Pierre-Yves Chibon 0537b7
                user.username
Pierre-Yves Chibon 0537b7
                for user in progit.lib.get_all_users(
Pierre-Yves Chibon 0537b7
                    SESSION, pattern=pattern)
Pierre-Yves Chibon 0537b7
            ]
Pierre-Yves Chibon 0537b7
        }
Pierre-Yves Chibon 0537b7
    )