12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- # Copyright (c) 2021 Ultimaker B.V.
- from typing import Optional, Dict, Any
- from .PaginationLinks import PaginationLinks
- from .PaginationMetadata import PaginationMetadata
- from .ResponseMeta import ResponseMeta
- class PaginationManager:
- def __init__(self, limit: int) -> None:
- self.limit = limit # The limit of items per page
- self.meta = None # type: Optional[ResponseMeta] # The metadata of the paginated response
- self.links = None # type: Optional[PaginationLinks] # The pagination-related links
- def setResponseMeta(self, meta: Optional[Dict[str, Any]]) -> None:
- self.meta = None
- if meta:
- page = None
- if "page" in meta:
- page = PaginationMetadata(**meta["page"])
- self.meta = ResponseMeta(page)
- def setLinks(self, links: Optional[Dict[str, str]]) -> None:
- self.links = PaginationLinks(**links) if links else None
- def setLimit(self, new_limit: int) -> None:
- """
- Sets the limit of items per page.
- :param new_limit: The new limit of items per page
- """
- self.limit = new_limit
- self.reset()
- def reset(self) -> None:
- """
- Sets the metadata and links to None.
- """
- self.meta = None
- self.links = None
|