Ejemplo n.º 1
0
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]})