Esempio n. 1
0
def test_markup_tag_cleaner():
    assert clean_html('<b>Hello</b>') == 'Hello'
    assert clean_html('<p><b>Hello</b></p>') == 'Hello'
    assert clean_html('<p>Hello <b>world</b></p>') == 'Hello world'
    assert (clean_html('<p>&quot;&lt;Entity&gt; test&quot;</p>') ==
            '"<Entity> test"')
    assert clean_html('<p>&#34;charref test&#x22;</p>') == '"charref test"'
Esempio n. 2
0
File: app.py Progetto: klutzy/web
def feed_entry(category_id, feed_id, entry_id):
    feed, feed_permalink, entry, entry_permalink = \
        find_feed_and_entry(category_id, feed_id, entry_id)
    content = entry.content or entry.summary
    if content is not None:
        content = content.sanitized_html

    entry_data = {
        'title': clean_html(str(entry.title)),
        'content': content,
        'updated': entry.updated_at.__str__(),
        'permalink': entry_permalink or None,
    }
    feed_data = {
        'title': clean_html(str(feed.title)),
        'permalink': feed_permalink or None
    }
    add_urls(
        entry_data,
        ['read_url', 'unread_url', 'star_url', 'unstar_url'],
        category_id,
        feed_id,
        entry_id
    )
    add_urls(
        feed_data,
        ['entries_url'],
        category_id,
        feed_id
    )
    entry_data['feed'] = feed_data
    return jsonify(entry_data)
Esempio n. 3
0
def test_markup_tag_cleaner():
    assert clean_html('<b>Hello</b>') == 'Hello'
    assert clean_html('<p><b>Hello</b></p>') == 'Hello'
    assert clean_html('<p>Hello <b>world</b></p>') == 'Hello world'
    assert (clean_html('<p>&quot;&lt;Entity&gt; test&quot;</p>') ==
            '"<Entity> test"')
    assert clean_html('<p>&#34;charref test&#x22;</p>') == '"charref test"'
Esempio n. 4
0
File: app.py Progetto: klutzy/web
def feed_entries(category_id, feed_id):
    stage = get_stage()
    Cursor(category_id)
    try:
        with stage:
            feed = stage.feeds[feed_id]
    except KeyError:
        r = jsonify(
            error='feed-not-found',
            message='Given feed does not exist'
        )
        r.status_code = 404
        return r
    url_token, entry_after, read, starred = get_optional_args()
    generator = None
    if url_token:
        try:
            generator = get_entry_generator(url_token)
        except IteratorNotFound:
            pass
    else:
        url_token = str(now())
    if not generator:
        it = iter(feed.entries)
        feed_title = clean_html(str(feed.title))
        feed_permalink = get_permalink(feed)
        generator = FeedEntryGenerator(category_id, feed_id, feed_title,
                                       feed_permalink, it, now(), read, starred)
        try:
            generator.set_iterator(entry_after)
        except StopIteration:
            return jsonify(
                title=generator.feed_title,
                entries=[],
                next_url=None
            )
    save_entry_generators(url_token, generator)
    tidy_generators_up()
    entries = generator.get_entries()
    if len(entries) < app.config['PAGE_SIZE']:
        next_url = None
        if not entries:
            remove_entry_generator(url_token)
    else:
        next_url = make_next_url(
            category_id,
            url_token,
            entries[-1]['entry_id'],
            read,
            starred,
            feed_id
        )
    return jsonify(
        title=clean_html(str(feed.title)),
        entries=entries,
        next_url=next_url
    )
Esempio n. 5
0
File: app.py Progetto: klutzy/web
def category_entries(category_id):
    cursor = Cursor(category_id)
    generator = None
    url_token, entry_after, read, starred = get_optional_args()
    if url_token:
        try:
            generator = get_entry_generator(url_token)
        except IteratorNotFound:
            pass
    else:
        url_token = str(now())
    if not generator:
        subscriptions = cursor.recursive_subscriptions
        generator = CategoryEntryGenerator()
        if entry_after:
            id_after, time_after = decode_entry_after(entry_after)
        else:
            time_after = None
            id_after = None
        for subscription in subscriptions:
            try:
                with get_stage() as stage:
                    feed = stage.feeds[subscription.feed_id]
            except KeyError:
                continue
            feed_id = get_hash(feed.id)
            feed_title = clean_html(str(feed.title))
            it = iter(feed.entries)
            feed_permalink = get_permalink(feed)
            child = FeedEntryGenerator(category_id, feed_id, feed_title,
                                       feed_permalink, it, now(), read, starred)
            generator.add(child)
        generator.set_generators(id_after, time_after)
    save_entry_generators(url_token, generator)
    tidy_generators_up()
    entries = generator.get_entries()
    if not entries or len(entries) < app.config['PAGE_SIZE']:
        next_url = None
        if not entries:
            remove_entry_generator(url_token)
    else:
        next_url = make_next_url(
            category_id,
            url_token,
            encode_entry_after(entries[-1]['entry_id'], entries[-1]['updated']),
            read,
            starred
        )
    return jsonify(
        title=category_id.split('/')[-1][1:] or app.config['ALLFEED'],
        entries=entries,
        next_url=next_url
    )
Esempio n. 6
0
File: app.py Progetto: klutzy/web
 def get_entry_data(self):
     if not self.entry:
         raise StopIteration
     entry_permalink = get_permalink(self.entry)
     entry_data = {
         'title': clean_html(str(self.entry.title)),
         'entry_id': get_hash(self.entry.id),
         'permalink': entry_permalink or None,
         'updated': Rfc3339().encode(self.entry.updated_at.astimezone(utc)),
         'read': bool(self.entry.read),
         'starred': bool(self.entry.starred)
     }
     feed_data = {
         'title': self.feed_title,
         'permalink': self.feed_permalink or None
     }
     add_urls(entry_data, ['entry_url'], self.category_id, self.feed_id,
              get_hash(self.entry.id))
     add_urls(feed_data, ['entries_url'], self.category_id, self.feed_id)
     entry_data['feed'] = feed_data
     return entry_data