def update_callback(self, ids): failed_feeds = [] feeds = Feed.query.filter(Feed.id.in_(ids)).all() app.logger.info(u"Admin Updating Callback URL for Feeds: {0}".format(u", ".join(map(str, feeds)))) for feed in feeds: if feed.status != STATUS.UNSUBSCRIBED: try: result = subscriber.unsubscribe(feed.topic) if result[0] in [200, 202, 204]: feed.callback_url = get_public_url(feed) result = subscriber.subscribe(feed.topic, find_feed=False) flash_status(result) db.session.add(feed) else: failed_feeds.append(feed) except Exception as e: app.logger.error(str(e)) flash(str(e), ALERT.ERROR) else: feed.callback_url = get_public_url(feed) db.session.add(feed) db.session.commit() if failed_feeds: flash(u"Callback URL Update failed for: {0}".format(u", ".join(map(str, failed_feeds)))) return redirect(url_for("feedview.index_view"))
def subscribe(self, ids): feeds = Feed.query.filter(Feed.id.in_(ids)).all() app.logger.info(u"Admin Subscribing to Feeds: {0}".format(u", ".join(map(str, feeds)))) for feed in feeds: try: result = subscriber.subscribe(feed.topic, find_feed=False) flash_status(result) except Exception as e: app.logger.error(str(e)) flash(str(e), ALERT.ERROR) return redirect(url_for("feedview.index_view"))
def send_subscribe_feed(): """ Subscribes to a single feed. """ requested_url = request.get_json() app.logger.info(u'User: {0} requested Subscription to feed: {0}' .format(current_user, requested_url)) # Only subscribe if feed was found by search_feed method and # loaded in session, otherwise return empty result. if requested_url not in session['feed_urls']: app.logger.warning(u'Requested url: {0} was not found in session' .format(requested_url)) return jsonify({'subcribed': None}) print(session['feeds']) feed_info_schema = FeedInfoSchema(many=True) feedinfos = feed_info_schema.load(session['feeds']) print(feedinfos.data) feedinfo = None for f in feedinfos.data: f1 = feed_info_schema.make_feedinfo(f) print(f1) if f1.url == requested_url: feedinfo = f1 if not feedinfo: app.logger.warning(u'Requested url: {0} was not found in session' .format(requested_url)) return jsonify({'subcribed': None}) feed = Feed.query.filter_by(topic=feedinfo.url).first() if not feed: feed = Feed(topic=feedinfo.url, hub=feedinfo.hub or app.config['DEFAULT_HUB']) feed.update_from_feedinfo(feedinfo) app.logger.info(u'User: {0} created Feed: {1}' .format(current_user, feed)) else: if feed.status == STATUS.SUBSCRIBED: feedinfo.subscribed = True return jsonify({'subcribed': feedinfo}) db.session.add(feed) result = subscriber.subscribe(feed.topic, find_feed=False) return jsonify({'subscribed': feedinfo.url, 'message': result[1]})
def test_subscribe_succeeded(self): topic = 'http://test.com/feed' hub = 'http://push.superfeedr.com' responses.add(responses.POST, hub, body='{"title": "Success"}', status=204, content_type='application/json') result = subscriber.subscribe(topic, hub, find_feed=False) self.assertEqual(result[0], 204) feed = Feed.query.filter_by(topic=topic).first() self.assertEqual(feed.status, STATUS.PENDING_SUB)
def test_subscribe_failed(self): topic = 'http://test.com/feed' hub = 'http://push.superfeedr.com' responses.add(responses.POST, hub, body='{"error": "not found"}', status=404, content_type='application/json') result = subscriber.subscribe(topic, hub, find_feed=False) feed = Feed.query.filter_by(topic=topic).first() self.assertEqual(result[0], 404) self.assertIsNotNone(feed) self.assertEqual(feed.status, STATUS.PENDING_SUB) self.assertIsNone(feed.sub_time)
def test_subscribe_succeeded_with_content(session): topic = 'http://test.com/feed' hub = 'http://push.superfeedr.com' notification_received.connect(when_notification_received) with open(TEST_FILES_DIR + 'rss.xml') as f: data = f.read() responses.add(responses.POST, hub, body=data, status=200, content_type='application/rss+xml') result = subscriber.subscribe(topic, hub, find_feed=False) assert result[0] == 200 feed = Feed.query.filter_by(topic=topic).first() assert feed.title == 'David Beath' assert feed.status == STATUS.PENDING_SUB entryCount = Entry.query.count() assert entryCount == 10
def index(self): form = SubscribeForm() if request.method == "POST" and form.validate(): if form.isjson.data is True: feed_format = "json" else: feed_format = "atom" hub = None if form.hub.data: hub = form.hub.data find_feed = form.findfeed.data | False try: result = subscriber.subscribe(form.topic.data, hub, feed_format, find_feed) flash_status(result) return redirect(url_for("feedview.index_view")) except GetFeedError as e: app.logger.warning(str(e)) flash(str(e), ALERT.ERROR) except Exception as e: app.logger.exception(str(e), exc_info=True) flash(str(e), ALERT.ERROR) return self.render("admin/subscribe.html", title="Subscribe", form=form)