OLD | NEW |
---|---|
1 # Copyright 2016 The Chromium Authors. All rights reserved. | 1 # Copyright 2016 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 # TODO(wrengr): this file is only used by waterfall. We should either | |
stgao
2016/10/13 05:47:32
This should go to an infra/ directory in the new c
wrengr
2016/10/27 17:28:00
Is there a bug ticket for doing the new layout? If
| |
6 # move it to that directory, or else factor out the dependency on | |
7 # HttpClientAppengine by abstracting over the HTTP_CLIENT member. The | |
stgao
2016/10/13 05:47:32
Regarding the HTTP_CLIENT member, we could pass it
wrengr
2016/10/27 17:28:00
Acknowledged.
| |
8 # only thing we use/need HTTP_CLIENT for is to call the Post method, | |
9 # which could just as well be rewritten to use the __call__ method | |
10 # instead; hence, we could just pass an appropriate callable object to | |
11 # the constructor (incidentally allowing multiple Rietveld objects to | |
12 # share the same HTTP_CLIENT, if desired) rather than allocating our own | |
13 # one automatically. Does rietveld itself actually require appengine? | |
14 # Or is that just an incidental circumstance about our particular use | |
15 # of it? | |
5 import logging | 16 import logging |
6 import re | 17 import re |
7 import urlparse | 18 import urlparse |
8 | 19 |
9 from common.codereview import CodeReview | |
stgao
2016/10/13 05:47:32
Please check my previous comment on why we wanted
| |
10 from common.http_client_appengine import HttpClientAppengine | 20 from common.http_client_appengine import HttpClientAppengine |
11 | 21 |
12 | 22 |
13 _RIETVELD_ISSUE_NUMBER_RE = re.compile('^/(\d+)/?.*') | 23 _RIETVELD_ISSUE_NUMBER_RE = re.compile('^/(\d+)/?.*') |
14 | 24 |
15 | 25 |
16 class Rietveld(CodeReview): | 26 class Rietveld(object): |
17 """The implementation of CodeReview interface for Rietveld.""" | 27 """The implementation of CodeReview interface for Rietveld.""" |
18 HTTP_CLIENT = HttpClientAppengine(follow_redirects=False) | 28 HTTP_CLIENT = HttpClientAppengine(follow_redirects=False) |
19 | 29 |
20 def _GetXsrfToken(self, rietveld_url): | 30 def _GetXsrfToken(self, rietveld_url): |
21 """Returns the xsrf token for follow-up requests.""" | 31 """Returns the xsrf token for follow-up requests.""" |
22 headers = { | 32 headers = { |
23 'X-Requesting-XSRF-Token': '1', | 33 'X-Requesting-XSRF-Token': '1', |
24 'Accept': 'text/plain', | 34 'Accept': 'text/plain', |
25 } | 35 } |
26 url = '%s/xsrf_token' % rietveld_url | 36 url = '%s/xsrf_token' % rietveld_url |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
77 'no_redirect': 'True', | 87 'no_redirect': 'True', |
78 } | 88 } |
79 content_type, body = self._EncodeMultipartFormData(form_fields) | 89 content_type, body = self._EncodeMultipartFormData(form_fields) |
80 headers = { | 90 headers = { |
81 'Content-Type': content_type, | 91 'Content-Type': content_type, |
82 'Accept': 'text/plain', | 92 'Accept': 'text/plain', |
83 } | 93 } |
84 status_code, content = self.HTTP_CLIENT.Post( | 94 status_code, content = self.HTTP_CLIENT.Post( |
85 url, data=body, headers=headers) | 95 url, data=body, headers=headers) |
86 return status_code == 200 and content == 'OK' | 96 return status_code == 200 and content == 'OK' |
OLD | NEW |