| Index: dart/pkg/microlytics/lib/microlytics.dart
|
| diff --git a/dart/pkg/microlytics/lib/microlytics.dart b/dart/pkg/microlytics/lib/microlytics.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..84d89e3257d249b1067d103d3d6035033bdaa4ff
|
| --- /dev/null
|
| +++ b/dart/pkg/microlytics/lib/microlytics.dart
|
| @@ -0,0 +1,61 @@
|
| +// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
|
| +// for details. All rights reserved. Use of this source code is governed by a
|
| +// BSD-style license that can be found in the LICENSE file.
|
| +
|
| +library microlytics;
|
| +
|
| +import 'channels.dart';
|
| +
|
| +/// Very limited implementation of an API to report usage to Google Analytics.
|
| +/// No Personally Identifiable Information must ever be passed to this class.
|
| +class AnalyticsLogger {
|
| + final Channel _channel;
|
| + final String _clientID;
|
| + final String _analyticsID;
|
| + final String _appName;
|
| + final String _appVersion;
|
| + final String _messagePrefix; //Computed prefix for analytics messages
|
| +
|
| + /// Create a new logger
|
| + /// [channel] represents how this is going to be sent, this would typically
|
| + /// be a [RateLimitingBufferedChannel] wrapping either a [HttpRequestChannel]
|
| + /// or a [HttpClientChannel].
|
| + /// [clientID] is a version 4 UUID associated with the site or app.
|
| + /// [appName] is an application name.
|
| + /// [appVersion] is a verion string.
|
| + AnalyticsLogger(Channel channel, String clientID, String analyticsID,
|
| + String appName, String appVersion)
|
| + : this._channel = channel,
|
| + this._clientID = clientID,
|
| + this._analyticsID = analyticsID,
|
| + this._appName = appName,
|
| + this._appVersion = appVersion,
|
| + this._messagePrefix =
|
| + "v=1"
|
| + "&tid=$analyticsID"
|
| + "&cid=$clientID"
|
| + "&an=$appName"
|
| + "&av=$appVersion";
|
| +
|
| + void logAnonymousTiming(String category, String variable, int ms) {
|
| + category = Uri.encodeComponent(category);
|
| + variable = Uri.encodeComponent(variable);
|
| + _channel.sendData(
|
| + "${this._messagePrefix}"
|
| + "&t=timing"
|
| + "&utc=$category"
|
| + "&utv=$variable"
|
| + "&utt=$ms");
|
| + }
|
| +
|
| + void logAnonymousEvent(String category, String event) {
|
| + category = Uri.encodeComponent(category);
|
| + event = Uri.encodeComponent(event);
|
| + _channel.sendData(
|
| + "${this._messagePrefix}"
|
| + "&t=event"
|
| + "&ec=$category"
|
| + "&ea=$event");
|
| + }
|
| +}
|
| +
|
|
|