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

Side by Side Diff: lib/src/utils.dart

Issue 1311323002: Modernize the style. (Closed) Base URL: git@github.com:dart-lang/oauth2.git@master
Patch Set: Created 5 years, 4 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
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 utils; 5 library oauth2.utils;
6
7 import 'dart:async';
8 6
9 /// Adds additional query parameters to [url], overwriting the original 7 /// Adds additional query parameters to [url], overwriting the original
10 /// parameters if a name conflict occurs. 8 /// parameters if a name conflict occurs.
11 Uri addQueryParameters(Uri url, Map<String, String> parameters) { 9 Uri addQueryParameters(Uri url, Map<String, String> parameters) => url.replace(
12 var queryMap = queryToMap(url.query); 10 queryParameters: new Map.from(url.queryParameters)..addAll(parameters));
13 queryMap.addAll(parameters);
14 return url.resolve("?${mapToQuery(queryMap)}");
15 }
16
17 /// Convert a URL query string (or `application/x-www-form-urlencoded` body)
18 /// into a [Map] from parameter names to values.
19 Map<String, String> queryToMap(String queryList) {
20 var map = {};
21 for (var pair in queryList.split("&")) {
22 var split = split1(pair, "=");
23 if (split.isEmpty) continue;
24 var key = urlDecode(split[0]);
25 var value = split.length > 1 ? urlDecode(split[1]) : "";
26 map[key] = value;
27 }
28 return map;
29 }
30
31 /// Convert a [Map] from parameter names to values to a URL query string.
32 String mapToQuery(Map<String, String> map) {
33 var pairs = <List<String>>[];
34 map.forEach((key, value) {
35 key = Uri.encodeQueryComponent(key);
36 value = (value == null || value.isEmpty)
37 ? null
38 : Uri.encodeQueryComponent(value);
39 pairs.add([key, value]);
40 });
41 return pairs.map((pair) {
42 if (pair[1] == null) return pair[0];
43 return "${pair[0]}=${pair[1]}";
44 }).join("&");
45 }
46
47 /// Decode a URL-encoded string. Unlike [Uri.decodeComponent], this includes
48 /// replacing `+` with ` `.
49 String urlDecode(String encoded) =>
50 Uri.decodeComponent(encoded.replaceAll("+", " "));
51 11
52 /// Like [String.split], but only splits on the first occurrence of the pattern. 12 /// Like [String.split], but only splits on the first occurrence of the pattern.
13 ///
53 /// This will always return a list of two elements or fewer. 14 /// This will always return a list of two elements or fewer.
54 List<String> split1(String toSplit, String pattern) { 15 List<String> split1(String toSplit, String pattern) {
55 if (toSplit.isEmpty) return <String>[]; 16 if (toSplit.isEmpty) return [];
56 17
57 var index = toSplit.indexOf(pattern); 18 var index = toSplit.indexOf(pattern);
58 if (index == -1) return [toSplit]; 19 if (index == -1) return [toSplit];
59 return [toSplit.substring(0, index), 20 return [toSplit.substring(0, index),
60 toSplit.substring(index + pattern.length)]; 21 toSplit.substring(index + pattern.length)];
61 } 22 }
62 23
63 /// A WWW-Authenticate header value, parsed as per [RFC 2617][]. 24 /// A WWW-Authenticate header value, parsed as per [RFC 2617][].
64 /// 25 ///
65 /// [RFC 2617]: http://tools.ietf.org/html/rfc2617 26 /// [RFC 2617]: http://tools.ietf.org/html/rfc2617
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 parameters[match.group(1).toLowerCase()] = match.group(2); 59 parameters[match.group(1).toLowerCase()] = match.group(2);
99 } while (match.group(3) != null); 60 } while (match.group(3) != null);
100 61
101 if (!paramString.trim().isEmpty) { 62 if (!paramString.trim().isEmpty) {
102 throw new FormatException('Invalid WWW-Authenticate header: "$header"'); 63 throw new FormatException('Invalid WWW-Authenticate header: "$header"');
103 } 64 }
104 65
105 return new AuthenticateHeader(scheme, parameters); 66 return new AuthenticateHeader(scheme, parameters);
106 } 67 }
107 } 68 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698