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

Side by Side Diff: remoting/client/appengine/api.py

Issue 7033042: Update the appengine code to use OAuth2 and break the gdata dependency. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: more fixed. Created 9 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | remoting/client/appengine/auth.py » ('j') | remoting/client/appengine/auth.py » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 2
3 # Copyright (c) 2011 The Chromium Authors. All rights reserved. 3 # Copyright (c) 2011 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 """API endpoints to get around javascript's single-origin restriction.""" 7 """API endpoints to get around javascript's single-origin restriction."""
8 8
9 import logging 9 import logging
10 10
11 from django.utils import simplejson as json 11 from django.utils import simplejson as json
12 12
13 import gdata.client 13 from google.appengine.api import urlfetch
14
15 from google.appengine.ext import webapp 14 from google.appengine.ext import webapp
16 from google.appengine.ext.webapp import util 15 from google.appengine.ext.webapp import util
17 from google.appengine.ext.webapp.util import login_required 16 from google.appengine.ext.webapp.util import login_required
18 import auth 17 import auth
19 18
20 19
21 class GetXmppTokenHandler(webapp.RequestHandler): 20 class GetXmppTokenHandler(webapp.RequestHandler):
22 """Retrieves the user's XMPP token.""" 21 """Retrieves the user's XMPP token."""
23 @login_required 22 @login_required
24 def get(self): 23 def get(self):
25 try: 24 try:
26 self.response.headers['Content-Type'] = 'application/json' 25 self.response.headers['Content-Type'] = 'application/json'
27 self.response.out.write( 26 self.response.out.write(
28 json.dumps({'xmpp_token': auth.GetXmppToken().token})) 27 json.dumps({'xmpp_token': auth.GetXmppToken().token}))
29 except auth.NotAuthenticated: 28 except auth.NotAuthenticated:
30 self.response.out.write('User has not authenticated') 29 self.response.out.write('User has not authenticated')
31 self.set_status(400) 30 self.set_status(400)
32 31
32
33 class GetHostListHandler(webapp.RequestHandler): 33 class GetHostListHandler(webapp.RequestHandler):
34 """Proxies the host-list handlers on the Chromoting directory.""" 34 """Proxies the host-list handlers on the Chromoting directory."""
35 @login_required 35 @login_required
36 def get(self): 36 def get(self):
37 try: 37 result = urlfetch.fetch(
38 client = gdata.client.GDClient() 38 url = 'https://www.googleapis.com/chromoting/v1/@me/hosts',
39 host_list_json = client.Request( 39 method = urlfetch.GET,
40 method='GET', 40 headers = {'Authorization': 'OAuth ' + auth.GetAccessToken()})
41 uri="https://www.googleapis.com/chromoting/v1/@me/hosts", 41 self.response.headers['Content-Type'] = 'application/json'
Jamie 2011/05/20 16:46:47 In the previous code, the content-type was only se
awong 2011/05/20 20:37:38 Good catch. Actually, I'm just relaying the full
42 converter=None, 42 self.response.out.write(result.content)
Jamie 2011/05/20 16:46:47 Does |write| write the data to the client immediat
awong 2011/05/20 20:37:38 I'm pretty sure it's not a streaming response. Bu
43 desired_class=None, 43 for i in result.headers:
44 auth_token=auth.GetChromotingToken()) 44 self.response.headers[i] = result.headers[i]
45 self.response.headers['Content-Type'] = 'application/json' 45 self.response.set_status(result.status_code)
46 self.response.out.write(host_list_json.read()) 46
47 except auth.NotAuthenticated:
48 self.response.out.write('User has not authenticated')
49 self.response.set_status(400)
50 except (gdata.client.Unauthorized, gdata.client.RequestError), inst:
51 self.response.out.write(inst.reason)
52 self.response.set_status(inst.status)
53 47
54 def main(): 48 def main():
55 application = webapp.WSGIApplication( 49 application = webapp.WSGIApplication(
56 [ 50 [
57 ('/api/get_xmpp_token', GetXmppTokenHandler), 51 ('/api/get_xmpp_token', GetXmppTokenHandler),
58 ('/api/get_host_list', GetHostListHandler) 52 ('/api/get_host_list', GetHostListHandler)
59 ], 53 ],
60 debug=True) 54 debug=True)
61 util.run_wsgi_app(application) 55 util.run_wsgi_app(application)
62 56
63 57
64 if __name__ == '__main__': 58 if __name__ == '__main__':
65 main() 59 main()
OLDNEW
« no previous file with comments | « no previous file | remoting/client/appengine/auth.py » ('j') | remoting/client/appengine/auth.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698