from typing import Dict, List from flask import Response, jsonify, request from webargs.flaskparser import FlaskParser from ereuse_devicehub.teal.query import NestedQueryFlaskParser class SearchQueryParser(NestedQueryFlaskParser): def parse_querystring(self, req, name, field): if name == 'search': v = FlaskParser.parse_querystring(self, req, name, field) else: v = super().parse_querystring(req, name, field) return v def things_response( items: List[Dict], page: int = None, per_page: int = None, total: int = None, previous: int = None, next: int = None, url: str = None, code: int = 200, ) -> Response: """Generates a Devicehub API list conformant response for multiple things. """ response = jsonify( { 'items': items, # todo pagination should be in Header like github # https://developer.github.com/v3/guides/traversing-with-pagination/ 'pagination': { 'page': page, 'perPage': per_page, 'total': total, 'previous': previous, 'next': next, }, 'url': url or request.path, } ) response.status_code = code return response