Skip to content

Commit

Permalink
Add jsdoc about .timestamp on JS docs, factor out validation step (#13
Browse files Browse the repository at this point in the history
)
  • Loading branch information
christineyen committed May 10, 2017
1 parent bab3837 commit b7f48c2
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 54 deletions.
8 changes: 8 additions & 0 deletions src/event.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,14 @@ export default class Event {
*/
this.sampleRate = 1;

/**
* If set, specifies the timestamp associated with this event. If unset,
* defaults to Date.now();
*
* @type {Date}
*/
this.timestamp = null;

foreach(fields, (v, k) => this.addField(k, v));
foreach(dyn_fields, (v, k) => this.addField(k, v()));

Expand Down
75 changes: 21 additions & 54 deletions src/libhoney.js
Original file line number Diff line number Diff line change
Expand Up @@ -190,60 +190,12 @@ export default class Libhoney extends EventEmitter {
* @private
*/
sendEvent (event) {
if (!this._usable) return;

var timestamp = event.timestamp || Date.now();
if (typeof timestamp === 'string' || typeof timestamp === 'number')
timestamp = new Date(timestamp);

if (typeof event.data !== 'object' || event.data === null) {
console.error(".data must be an object");
return;
}
var postData;
try {
postData = JSON.stringify(event.data);
}
catch (e) {
console.error("error converting event data to JSON: " + e);
return;
}

var apiHost = event.apiHost;
if (typeof apiHost !== 'string' || apiHost === "") {
console.error(".apiHost must be a non-empty string");
let transmitEvent = this.validateEvent(event);
if (!transmitEvent) {
return;
}

var writeKey = event.writeKey;
if (typeof writeKey !== 'string' || writeKey === "") {
console.error(".writeKey must be a non-empty string");
return;
}

var dataset = event.dataset;
if (typeof dataset !== 'string' || dataset === "") {
console.error(".dataset must be a non-empty string");
return;
}

var sampleRate = event.sampleRate;
if (typeof sampleRate !== 'number') {
console.error(".sampleRate must be a number");
return;
}

var metadata = event.metadata;

this._transmission.sendEvent({
timestamp,
apiHost,
postData,
writeKey,
dataset,
sampleRate,
metadata
});
this._transmission.sendEvent(transmitEvent);
}

/**
Expand All @@ -262,6 +214,22 @@ export default class Libhoney extends EventEmitter {
* @private
*/
sendPresampledEvent (event) {
let transmitEvent = this.validateEvent(event);
if (!transmitEvent) {
return;
}

this._transmission.sendPresampledEvent(transmitEvent);
}

/**
* validateEvent takes an event and validates its structure and contents.
*
* @returns {Object} the validated libhoney Event. May return undefined if
* the event was invalid in some way or unable to be sent.
* @private
*/
validateEvent (event) {
if (!this._usable) return;

var timestamp = event.timestamp || Date.now();
Expand Down Expand Up @@ -306,16 +274,15 @@ export default class Libhoney extends EventEmitter {
}

var metadata = event.metadata;

this._transmission.sendPresampledEvent({
return {
timestamp,
apiHost,
postData,
writeKey,
dataset,
sampleRate,
metadata
});
};
}

/**
Expand Down

0 comments on commit b7f48c2

Please sign in to comment.