import 'dart:collection';
import 'dart:convert';
import 'package:crypto/crypto.dart';
import 'package:googleapis_auth/googleapis_auth.dart';
import 'package:http/http.dart';
class MetricPoint {
MetricPoint(
this.value,
Map<String, String?> tags,
) : _tags = SplayTreeMap<String, String>.from(tags);
final double? value;
UnmodifiableMapView<String, String> get tags =>
UnmodifiableMapView<String, String>(_tags);
final SplayTreeMap<String, String> _tags;
String get id => sha256.convert(utf8.encode('$_tags')).toString();
@override
String toString() {
return 'MetricPoint(value=$value, tags=$_tags)';
}
}
abstract class MetricDestination {
Future<void> update(
List<MetricPoint> points, DateTime commitTime, String taskName);
}
AuthClient authClientFromAccessToken(String token, List<String> scopes) {
final DateTime anHourLater = DateTime.now().add(const Duration(hours: 1));
final AccessToken accessToken =
AccessToken('Bearer', token, anHourLater.toUtc());
final AccessCredentials accessCredentials =
AccessCredentials(accessToken, null, scopes);
return authenticatedClient(Client(), accessCredentials);
}