""" .. module: lemur.defaults.views :copyright: (c) 2018 by Netflix Inc., see AUTHORS for more :license: Apache, see LICENSE for more details. """ from flask import current_app, Blueprint from flask_restful import Api from lemur.common.schema import validate_schema from lemur.authorities.service import get_by_name from lemur.auth.service import AuthenticatedResource from lemur.defaults.schemas import default_output_schema mod = Blueprint("default", __name__) api = Api(mod) class LemurDefaults(AuthenticatedResource): """ Defines the 'defaults' endpoint """ def __init__(self): super(LemurDefaults) @validate_schema(None, default_output_schema) def get(self): """ .. http:get:: /defaults Returns defaults needed to generate CSRs **Example request**: .. sourcecode:: http GET /defaults HTTP/1.1 Host: example.com Accept: application/json, text/javascript **Example response**: .. sourcecode:: http HTTP/1.1 200 OK Vary: Accept Content-Type: text/javascript { "country": "US", "state": "CA", "location": "Los Gatos", "organization": "Netflix", "organizationalUnit": "Operations", "dnsProviders": [{"name": "test", ...}, {...}], } :reqheader Authorization: OAuth token to authenticate :statuscode 200: no error :statuscode 403: unauthenticated """ default_authority = get_by_name( current_app.config.get("LEMUR_DEFAULT_AUTHORITY") ) return dict( country=current_app.config.get("LEMUR_DEFAULT_COUNTRY"), state=current_app.config.get("LEMUR_DEFAULT_STATE"), location=current_app.config.get("LEMUR_DEFAULT_LOCATION"), organization=current_app.config.get("LEMUR_DEFAULT_ORGANIZATION"), organizational_unit=current_app.config.get( "LEMUR_DEFAULT_ORGANIZATIONAL_UNIT" ), issuer_plugin=current_app.config.get("LEMUR_DEFAULT_ISSUER_PLUGIN"), authority=default_authority, ) api.add_resource(LemurDefaults, "/defaults", endpoint="default")