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

Side by Side Diff: usage/lib/src/usage_impl_io.dart

Issue 1400473008: Roll Observatory packages and add a roll script (Closed) Base URL: git@github.com:dart-lang/observatory_pub_packages.git@master
Patch Set: Created 5 years, 2 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
« no previous file with comments | « usage/lib/src/usage_impl_html.dart ('k') | usage/lib/src/uuid.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
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.
4
5 library usage_impl_io;
6
7 import 'dart:async';
8 import 'dart:convert' show JSON;
9 import 'dart:io';
10
11 import 'package:path/path.dart' as path;
12
13 import 'usage_impl.dart';
14
15 String _createUserAgent() {
16 // Mozilla/5.0 (iPhone; U; CPU iPhone OS 5_1_1 like Mac OS X; en)
17 // Dart/1.8.0-edge.41170 (macos; macos; macos; null)
18 String os = Platform.operatingSystem;
19 String locale = Platform.environment['LANG'];
20 return "Dart/${_dartVersion()} (${os}; ${os}; ${os}; ${locale})";
21 }
22
23 String _userHomeDir() {
24 String envKey = Platform.operatingSystem == 'windows' ? 'APPDATA' : 'HOME';
25 String value = Platform.environment[envKey];
26 return value == null ? '.' : value;
27 }
28
29 String _dartVersion() {
30 String ver = Platform.version;
31 int index = ver.indexOf(' ');
32 if (index != -1) ver = ver.substring(0, index);
33 return ver;
34 }
35
36 class IOPostHandler extends PostHandler {
37 final String _userAgent;
38 final HttpClient mockClient;
39
40 IOPostHandler({HttpClient this.mockClient}) : _userAgent = _createUserAgent();
41
42 Future sendPost(String url, Map<String, String> parameters) {
43 // Add custom parameters for OS and the Dart version.
44 parameters['cd1'] = Platform.operatingSystem;
45 parameters['cd2'] = 'dart ${_dartVersion()}';
46
47 String data = postEncode(parameters);
48
49 HttpClient client = mockClient != null ? mockClient : new HttpClient();
50 client.userAgent = _userAgent;
51 return client.postUrl(Uri.parse(url)).then((HttpClientRequest req) {
52 req.write(data);
53 return req.close();
54 }).then((HttpClientResponse response) {
55 response.drain();
56 }).catchError((e) {
57 // Catch errors that can happen during a request, but that we can't do
58 // anything about, e.g. a missing internet conenction.
59 });
60 }
61 }
62
63 class IOPersistentProperties extends PersistentProperties {
64 File _file;
65 Map _map;
66
67 IOPersistentProperties(String name) : super(name) {
68 String fileName = '.${name.replaceAll(' ', '_')}';
69 _file = new File(path.join(_userHomeDir(), fileName));
70 _file.createSync();
71 String contents = _file.readAsStringSync();
72 if (contents.isEmpty) contents = '{}';
73 _map = JSON.decode(contents);
74 }
75
76 dynamic operator[](String key) => _map[key];
77
78 void operator[]=(String key, dynamic value) {
79 if (value == null) {
80 _map.remove(key);
81 } else {
82 _map[key] = value;
83 }
84
85 _file.writeAsStringSync(JSON.encode(_map) + '\n');
86 }
87 }
OLDNEW
« no previous file with comments | « usage/lib/src/usage_impl_html.dart ('k') | usage/lib/src/uuid.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698