/** * @ requires */ var Feed = require('./feed.js'), request = require('./http.js').request, makeStreamOptions = require('./utils.js').makeStreamOptions, defaultDataFormat = require('../include/meta.js').defaultDataFormat; /** * Create an instance of Stream * * @constructor {Stream} * @this {dataStream} * @param {string} masterApikey Your pachube api key. */ function Stream(masterApikey, feedID) { /** @private */this.masterApiKey = masterApikey; /** @private */this.feedID = feedID.toString(); } /** * @inheritance Feed */ Stream.prototype = Feed.prototype; /** * Create new datastream: POST /v2/feeds/<feed_id>/datastreams * * @this {Stream} * @param {number} feedID The feed ID. * @param {string} dataSource The data source, a path, a string or an object. * @param {function} callback The callbak function. * @param {string} optionalDataFormat Optional data format parameter, json or xml, default to json. */ Stream.prototype.create = function(dataSource, callback, optionalDataFormat) { var options = makeStreamOptions('POST', this.feedID); var dataFormat = optionalDataFormat || defaultDataFormat; request(this.masterApiKey, options, callback, dataFormat, dataSource); }; /** * Read datastream - GET /v2/feeds/<feed_id>/datastreams/<datastream_id> * * @this {Stream} * @param {number} feedID The feed id. * @param {string} streamID The data stream id. * @param {function} callback The callback function. * @param {string} optionalDataFormat optional data format parameter, json or xml, default to json. */ Stream.prototype.read = function(streamID, callback, optionalDataFormat) { var options = makeStreamOptions('GET', this.feedID, streamID); var dataFormat = optionalDataFormat || defaultDataFormat; request(this.masterApiKey, options, callback, dataFormat); }; /** * Update datastream: PUT /v2/feeds/<feed_id>/datastreams/<datastream_id> * * @this {Stream} * @param {number} feedID The feed id. * @param {string} streamID The data stream id. * @param {string} dataSource The data source, a path, a string or an object. * @param {function} callback The callback function. * @param {string} optionalDataFormat Optional data format parameter, json or xml, default to json. */ Stream.prototype.update = function(streamID, dataSource, callback, optionalDataFormat) { var options = makeStreamOptions('GET',this.feedID, streamID); var dataFormat = optionalDataFormat || defaultDataFormat; request(this.masterApiKey, options, callback, dataFormat, dataSource); }; /** * Delete datastream: DELETE /v2/feeds/<feed_id>/datastreams/<datastream_id> * * @this {Stream} * @param {number} feedID The feed id. * @param {string} streamID The data stream id. * @param {function} callback The callback function. * @returns {string} HTTP headers only */ Stream.prototype.delete = function(streamID, callback) { var options = makeStreamOptions('DELETE', this.feedID, streamID); request(this.masterApiKey, options, callback); }; /** * @ exports */ module.exports = Stream;