Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_fail_parse(feed):
with assert_raises(podcastparser.FeedParseError):
podcastparser.parse('file://example.com/feed.xml', StringIO(feed))
def parse(url, stream, max_episodes=0):
"""Parse a podcast feed from the given URL and stream
:param url: the URL of the feed. Will be used to resolve relative links
:param stream: file-like object containing the feed content
:param max_episodes: maximum number of episodes to return. 0 (default)
means no limit
:returns: a dict with the parsed contents of the feed
"""
handler = PodcastHandler(url, max_episodes)
try:
sax.parse(stream, handler)
except sax.SAXParseException as e:
raise FeedParseError(e.getMessage(), e.getException(), e._locator)
return handler.data
def startElement(self, name, attrs):
self.namespace = Namespace(attrs, self.namespace)
name = self.namespace.map(name)
if not self.path_stack and name not in VALID_ROOTS:
raise FeedParseError(
msg='Unsupported feed type: {}'.format(name),
exception=None,
locator=self._locator,
)
self.path_stack.append(name)
target = MAPPING.get('/'.join(self.path_stack))
if target is not None:
target.start(self, attrs)
if target.WANT_TEXT:
self.text = []