# Path: ninchat/call/aiohttp.py
# @asyncio.coroutine
# def check_call(session: aiohttp.ClientSession,
#                params: Dict[str, Any],
#                *,
#                identity: Optional[Dict[str, str]] = None
#                ) -> Dict[str, Any]:
#     """Like call with check set."""
#     return call(session, params, identity=identity, check=True)


import asyncio
import logging
import aiohttp
import ninchat.call
from ninchat.call.aiohttp import check_call
#    documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.




log = logging.getLogger(__name__)


async def async_test():
    async with aiohttp.ClientSession() as s:
        try:
            event = await check_call(s, {"action": "nonexistent_action"})
        except ninchat.call.APIError as e:
            log.debug("error: %s", e)
            assert e.event["error_type"] == "action_not_supported"
        else:
            assert False, event


# Path: ninchat/call/aiohttp.py
# @asyncio.coroutine
# def check_call(session: aiohttp.ClientSession,
#                params: Dict[str, Any],
#                *,
#                identity: Optional[Dict[str, str]] = None
#                ) -> Dict[str, Any]:
#     """Like call with check set."""
#     return call(session, params, identity=identity, check=True)


# Path: tests/call_aiohttp_test.py
import asyncio
import logging
import aiohttp
import ninchat.call
from ninchat.call.aiohttp import check_call

#    documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.




log = logging.getLogger(__name__)


async def async_test():
    async with aiohttp.ClientSession() as s:
        try:
            event = await check_call(s, {"action": "nonexistent_action"})
        except ninchat.call.APIError as e:
            log.debug("error: %s", e)
            assert e.event["error_type"] == "action_not_supported"
        else:
            assert False, event


        event = await check_call(s, {"action": "describe_conn"})