aiocouchdb 0.8.0 documentation

aiocouchdb.v1.config

Contents

Source code for aiocouchdb.v1.config

# -*- coding: utf-8 -*-
#
# Copyright (C) 2015 Alexander Shorin
# All rights reserved.
#
# This software is licensed as described in the file LICENSE, which
# you should have received as part of this distribution.
#

import asyncio


__all__ = (
    'ServerConfig',
)


[docs]class ServerConfig(object): """Implements :ref:`/_config/* <api/config>` API. Should be used via :attr:`server.config <aiocouchdb.v1.server.Server.config>` property.""" def __init__(self, resource): self.resource = resource('_config') def __repr__(self): return '<{}.{}({}) object at {}>'.format( self.__module__, self.__class__.__qualname__, self.resource.url, hex(id(self))) @asyncio.coroutine
[docs] def exists(self, section, key, *, auth=None): """Checks if :ref:`configuration option <api/config/section/key>` exists. :param str section: Section name :param str key: Option name :param auth: :class:`aiocouchdb.authn.AuthProvider` instance :rtype: bool """ resp = yield from self.resource(section, key).head(auth=auth) yield from resp.read() return resp.status == 200
@asyncio.coroutine
[docs] def get(self, section=None, key=None, *, auth=None): """Returns :ref:`server configuration <api/config>`. Depending on specified arguments returns: - :ref:`Complete configuration <api/config>` if ``section`` and ``key`` are ``None`` - :ref:`Section options <api/config/section>` if ``section`` was specified - :ref:`Option value <api/config/section/key>` if both ``section`` and ``key`` were specified :param str section: Section name (`optional`) :param str key: Option name (`optional`) :param auth: :class:`aiocouchdb.authn.AuthProvider` instance :rtype: dict or str """ path = [] if section is not None: path.append(section) if key is not None: assert isinstance(section, str) path.append(key) resp = yield from self.resource(*path).get(auth=auth) yield from resp.maybe_raise_error() return (yield from resp.json())
@asyncio.coroutine
[docs] def update(self, section, key, value, *, auth=None): """Updates specific :ref:`configuration option <api/config/section/key>` value and returns the old one back. :param str section: Configuration section name :param str key: Option name :param str value: New option value :param auth: :class:`aiocouchdb.authn.AuthProvider` instance :rtype: str """ resp = yield from self.resource(section).put(key, auth=auth, data=value) yield from resp.maybe_raise_error() return (yield from resp.json())
@asyncio.coroutine
[docs] def delete(self, section, key, *, auth=None): """Deletes specific :ref:`configuration option <api/config/section/key>` and returns it value back. :param string section: Configuration section name :param string key: Option name :param auth: :class:`aiocouchdb.authn.AuthProvider` instance :rtype: str """ resp = yield from self.resource(section).delete(key, auth=auth) yield from resp.maybe_raise_error() return (yield from resp.json())

Contents