from rest_framework.pagination import PageNumberPagination
from rest_framework.response import Response


class HeaderPagination(PageNumberPagination):
    """
    Returns the page as a bare JSON array and exposes pagination metadata via
    response headers — matching the existing PHP API contract the web/mobile
    clients already consume (X-Total-Count, X-Page, X-Total-Pages, X-Limit).
    """

    page_size = 50
    page_size_query_param = 'limit'
    max_page_size = 200

    def get_paginated_response(self, data):
        return Response(
            data,
            headers={
                'X-Total-Count': str(self.page.paginator.count),
                'X-Page': str(self.page.number),
                'X-Total-Pages': str(self.page.paginator.num_pages),
                'X-Limit': str(self.get_page_size(self.request)),
                'Access-Control-Expose-Headers':
                    'X-Total-Count, X-Page, X-Total-Pages, X-Limit',
            },
        )
