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

Side by Side Diff: sdk/lib/_internal/pub/lib/src/oauth2.dart

Issue 311253005: Bind to all available loopback addresses in pub. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: code review Created 6 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 | Annotate | Revision Log
« no previous file with comments | « sdk/lib/_internal/pub/lib/src/io.dart ('k') | sdk/lib/_internal/pub/lib/src/source/hosted.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library pub.oauth2; 5 library pub.oauth2;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:io'; 8 import 'dart:io';
9 9
10 import 'package:oauth2/oauth2.dart'; 10 import 'package:oauth2/oauth2.dart';
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 var grant = new AuthorizationCodeGrant( 162 var grant = new AuthorizationCodeGrant(
163 _identifier, 163 _identifier,
164 _secret, 164 _secret,
165 authorizationEndpoint, 165 authorizationEndpoint,
166 tokenEndpoint, 166 tokenEndpoint,
167 httpClient: httpClient); 167 httpClient: httpClient);
168 168
169 // Spin up a one-shot HTTP server to receive the authorization code from the 169 // Spin up a one-shot HTTP server to receive the authorization code from the
170 // Google OAuth2 server via redirect. This server will close itself as soon as 170 // Google OAuth2 server via redirect. This server will close itself as soon as
171 // the code is received. 171 // the code is received.
172 var server;
173 var completer = new Completer(); 172 var completer = new Completer();
174 shelf_io.serve((request) { 173 bindServer('localhost', 0).then((server) {
175 if (request.url.path != "/") { 174 shelf_io.serveRequests(server, (request) {
176 return new shelf.Response.notFound('Invalid URI.'); 175 if (request.url.path != "/") {
177 } 176 return new shelf.Response.notFound('Invalid URI.');
177 }
178 178
179 log.message('Authorization received, processing...'); 179 log.message('Authorization received, processing...');
180 var queryString = request.url.query; 180 var queryString = request.url.query;
181 if (queryString == null) queryString = ''; 181 if (queryString == null) queryString = '';
182 182
183 // Closing the server here is safe, since it will wait until the response is 183 // Closing the server here is safe, since it will wait until the response
184 // sent to actually shut down. 184 // is sent to actually shut down.
185 server.close(); 185 server.close();
186 chainToCompleter(grant.handleAuthorizationResponse(queryToMap(queryString)), 186 chainToCompleter(grant.handleAuthorizationResponse(queryToMap(queryString) ),
187 completer); 187 completer);
188 188
189 return new shelf.Response.found('http://pub.dartlang.org/authorized'); 189 return new shelf.Response.found('http://pub.dartlang.org/authorized');
190 }, '127.0.0.1', 0).then((server_) { 190 });
191 server = server_;
192 191
193 var authUrl = grant.getAuthorizationUrl( 192 var authUrl = grant.getAuthorizationUrl(
194 Uri.parse('http://127.0.0.1:${server.port}'), scopes: _scopes); 193 Uri.parse('http://localhost:${server.port}'), scopes: _scopes);
195 194
196 log.message( 195 log.message(
197 'Pub needs your authorization to upload packages on your behalf.\n' 196 'Pub needs your authorization to upload packages on your behalf.\n'
198 'In a web browser, go to $authUrl\n' 197 'In a web browser, go to $authUrl\n'
199 'Then click "Allow access".\n\n' 198 'Then click "Allow access".\n\n'
200 'Waiting for your authorization...'); 199 'Waiting for your authorization...');
201 }); 200 });
202 201
203 return completer.future.then((client) { 202 return completer.future.then((client) {
204 log.message('Successfully authorized.\n'); 203 log.message('Successfully authorized.\n');
205 return client; 204 return client;
206 }); 205 });
207 } 206 }
OLDNEW
« no previous file with comments | « sdk/lib/_internal/pub/lib/src/io.dart ('k') | sdk/lib/_internal/pub/lib/src/source/hosted.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698