[Telemetry] Bring in telemetry bundle
Bring in initial state for the platform/telemetry bundle, which provides general-purpose telemetry conventions and infrastructure to support creating domain objects which expose telemetry data. WTD-575.
This commit is contained in:
70
platform/telemetry/src/TelemetryCapability.js
Normal file
70
platform/telemetry/src/TelemetryCapability.js
Normal file
@@ -0,0 +1,70 @@
|
||||
/*global define,Promise*/
|
||||
|
||||
/**
|
||||
* Module defining TelemetryCapability. Created by vwoeltje on 11/12/14.
|
||||
*/
|
||||
define(
|
||||
[],
|
||||
function () {
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
*
|
||||
* @constructor
|
||||
*/
|
||||
function TelemetryCapability(telemetryService, domainObject) {
|
||||
function buildRequest(request) {
|
||||
var type = domainObject.getCapability("type"),
|
||||
typeRequest = type.getDefinition().telemetry || {},
|
||||
modelTelemetry = domainObject.getModel().telemetry,
|
||||
fullRequest = Object.create(typeRequest);
|
||||
|
||||
Object.keys(modelTelemetry).forEach(function (k) {
|
||||
fullRequest[k] = modelTelemetry[k];
|
||||
});
|
||||
|
||||
Object.keys(request).forEach(function (k) {
|
||||
fullRequest[k] = request[k];
|
||||
});
|
||||
|
||||
// Include domain object ID, at minimum
|
||||
if (!fullRequest.id) {
|
||||
fullRequest.id = domainObject.getId();
|
||||
}
|
||||
if (!fullRequest.key) {
|
||||
fullRequest.key = domainObject.getId();
|
||||
}
|
||||
|
||||
return fullRequest;
|
||||
}
|
||||
|
||||
function requestTelemetry(request) {
|
||||
// Bring in any defaults from the object model
|
||||
var fullRequest = buildRequest(request || {}),
|
||||
source = fullRequest.source,
|
||||
key = fullRequest.key;
|
||||
|
||||
function getRelevantResponse(response) {
|
||||
return (response[source] || {})[key] || {};
|
||||
}
|
||||
|
||||
return telemetryService.requestTelemetry([fullRequest])
|
||||
.then(getRelevantResponse);
|
||||
}
|
||||
|
||||
return {
|
||||
requestData: requestTelemetry,
|
||||
getMetadata: function () {
|
||||
return buildRequest({});
|
||||
}
|
||||
//subscribe: subscribe
|
||||
};
|
||||
}
|
||||
|
||||
TelemetryCapability.appliesTo = function (model) {
|
||||
return model.telemetry;
|
||||
}
|
||||
|
||||
return TelemetryCapability;
|
||||
}
|
||||
);
|
||||
Reference in New Issue
Block a user