from conf import API_ROOT from flask import current_app from flask_restful import Api from web.views.common import api_permission from web.controllers.feed import (FeedController, DEFAULT_MAX_ERROR, DEFAULT_LIMIT) from web.views.api.v2.common import PyAggAbstractResource, \ PyAggResourceNew, \ PyAggResourceExisting, \ PyAggResourceMulti class FeedNewAPI(PyAggResourceNew): controller_cls = FeedController class FeedAPI(PyAggResourceExisting): controller_cls = FeedController class FeedsAPI(PyAggResourceMulti): controller_cls = FeedController class FetchableFeedAPI(PyAggAbstractResource): controller_cls = FeedController attrs = {'max_error': {'type': int, 'default': DEFAULT_MAX_ERROR}, 'limit': {'type': int, 'default': DEFAULT_LIMIT}} @api_permission.require(http_exception=403) def get(self): args = self.reqparse_args(right='read', allow_empty=True) result = [feed for feed in self.controller.list_fetchable(**args)] return result or None, 200 if result else 204 api = Api(current_app, prefix=API_ROOT) api.add_resource(FeedNewAPI, '/feed', endpoint='feed_new.json') api.add_resource(FeedAPI, '/feed/', endpoint='feed.json') api.add_resource(FeedsAPI, '/feeds', endpoint='feeds.json') api.add_resource(FetchableFeedAPI, '/feeds/fetchable', endpoint='fetchable_feed.json')