| Index: chrome/common/extensions/docs/server2/urlfetch.py
|
| diff --git a/chrome/common/extensions/docs/server2/urlfetch.py b/chrome/common/extensions/docs/server2/urlfetch.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..28320bfe7819d019ec4946af0451f0d982a18491
|
| --- /dev/null
|
| +++ b/chrome/common/extensions/docs/server2/urlfetch.py
|
| @@ -0,0 +1,30 @@
|
| +# Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +
|
| +import logging
|
| +
|
| +from google.appengine.api import urlfetch
|
| +from google.appengine.api import memcache
|
| +
|
| +DEFAULT_CACHE_TIME = 300
|
| +
|
| +class _FetchException(Exception):
|
| + """Thrown when status code is not 200.
|
| + """
|
| + def __init__(self, url):
|
| + Exception.__init__(self, 'Fetch exception from ' + url)
|
| +
|
| +def fetch(url):
|
| + result = memcache.get(url, namespace=__name__)
|
| + if result is not None:
|
| + return result
|
| + logging.info('Fetch cache miss: ' + url)
|
| +
|
| + result = urlfetch.fetch(url)
|
| +
|
| + if result.status_code != 200:
|
| + raise _FetchException(url)
|
| +
|
| + memcache.add(url, result, DEFAULT_CACHE_TIME, namespace=__name__)
|
| + return result
|
|
|