Skip to content

Commit

Permalink
Don't hit provider list until necessary
Browse files Browse the repository at this point in the history
  • Loading branch information
matt-thomson committed Aug 15, 2015
1 parent ff0e9f5 commit aa496ff
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 7 deletions.
17 changes: 11 additions & 6 deletions pyembed/core/discovery.py
Expand Up @@ -215,15 +215,20 @@ class UrlDiscoverer(StaticDiscoverer):
"""Discoverer that uses JSON from a URL to discover the OEmbed URL.
"""
def __init__(self, url):
response = requests.get(url)
self.url = url
self.endpoints = None

if not response.ok:
raise PyEmbedDiscoveryError('Failed to get %s (status code %s)' % (
url, response.status_code))
def get_oembed_urls(self, url, oembed_format=None):
if not self.endpoints:
response = requests.get(self.url)

if not response.ok:
raise PyEmbedDiscoveryError('Failed to get %s (status code %s)' % (
self.url, response.status_code))

endpoints = StaticDiscoverer._build_endpoints_from_providers(response.json())
self.endpoints = StaticDiscoverer._build_endpoints_from_providers(response.json())

super(UrlDiscoverer, self).__init__(endpoints)
return super(UrlDiscoverer, self).get_oembed_urls(url, oembed_format)


class ChainingDiscoverer(PyEmbedDiscoverer):
Expand Down
3 changes: 2 additions & 1 deletion pyembed/core/test/url_discovery_test.py
Expand Up @@ -57,4 +57,5 @@ def test_should_raise_if_error_reading_url():
pytest.raises(discovery.PyEmbedDiscoveryError):
mock_get.return_value = response

discovery.UrlDiscoverer('http://example.com/providers.json')
discoverer = discovery.UrlDiscoverer('http://example.com/providers.json')
discoverer.get_oembed_urls('http://example.com/simple/123')

0 comments on commit aa496ff

Please sign in to comment.