Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(122)

Side by Side Diff: chrome/common/extensions/docs/server2/url_fetcher.py

Issue 1151283007: Docserver overhaul: Gitiles away from me. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove inform_users template to fix presubmit failure (it's now a redirect) Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 # Copyright 2015 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 import posixpath
6
7 from environment import GetAppVersion
8 from future import Future
9 from urllib import urlencode
10 from urlparse import urlparse, parse_qs
11
12 def _MakeHeaders(headers={}):
13 headers['User-Agent'] = 'Chomium docserver %s' % GetAppVersion()
14 headers['Cache-Control'] = 'max-age=0'
15 return headers
16
17
18 def _AddQueryToUrl(url, new_query):
19 """Adds query paramters to a URL. This merges the given set of query params
20 with any that were already a part of the URL.
21 """
22 parsed_url = urlparse(url)
23 query = parse_qs(parsed_url.query)
24 query.update(new_query)
25 query_string = urlencode(query, True)
26 return '%s://%s%s?%s#%s' % (parsed_url.scheme, parsed_url.netloc,
27 parsed_url.path, query_string, parsed_url.fragment)
28
29
30 class UrlFetcher(object):
31 def __init__(self):
32 self._base_path = None
33
34 def SetBasePath(self, base_path):
35 assert base_path is None or not base_path.endswith('/'), base_path
36 self._base_path = base_path
37
38 def Fetch(self, url, headers={}, query={}):
39 return self.FetchImpl(_AddQueryToUrl(self._FromBasePath(url), query),
40 _MakeHeaders(headers))
41
42 def FetchAsync(self, url, headers={}, query={}):
43 return self.FetchAsyncImpl(_AddQueryToUrl(self._FromBasePath(url), query),
44 _MakeHeaders(headers))
45
46 def FetchImpl(self, url, headers):
47 """Fetches a URL synchronously.
48 """
49 raise NotImplementedError(self.__class__)
50
51 def FetchAsyncImpl(self, url, headers):
52 """Fetches a URL asynchronously and returns a Future with the result.
53 """
54 raise NotImplementedError(self.__class__)
55
56 def _FromBasePath(self, url):
57 assert not url.startswith('/'), url
58 if self._base_path is not None:
59 url = posixpath.join(self._base_path, url) if url else self._base_path
60 return url
OLDNEW
« no previous file with comments | « chrome/common/extensions/docs/server2/url_constants.py ('k') | chrome/common/extensions/docs/server2/url_fetcher_appengine.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698