An ebook/comic library service and web client
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

20 lines
608 B

  1. """Pagination utility functions."""
  2. from typing import Tuple
  3. from werkzeug.datastructures import MultiDict
  4. from atheneum import errors
  5. def get_pagination_params(request_args: MultiDict) -> Tuple[int, int]:
  6. """Get page and perPage request parameters."""
  7. page = request_args.get('page', 1)
  8. per_page = request_args.get('perPage', 20)
  9. try:
  10. return int(page), int(per_page)
  11. except ValueError:
  12. raise errors.ClientError(
  13. ' '.join([
  14. 'Invalid pagination parameters:',
  15. 'page={}',
  16. 'perPage={}']).format(page, per_page))