"""Handlers module."""

from sanic.request import Request
from sanic.response import HTTPResponse, json
from dependency_injector.wiring import inject, Provide

from .services import SearchService
from .containers import Container


@inject
async def index(
        request: Request,
        search_service: SearchService = Provide[Container.search_service],
        default_query: str = Provide[Container.config.default.query],
        default_limit: int = Provide[Container.config.default.limit.as_int()],
) -> HTTPResponse:
    query = request.args.get('query', default_query)
    limit = int(request.args.get('limit', default_limit))

    gifs = await search_service.search(query, limit)

    return json(
        {
            'query': query,
            'limit': limit,
            'gifs': gifs,
        },
    )