Source: recording.js

/**
 * @namespace cam
 * @description Recording section for Cam class
 * @author Roger Hardiman <opensource@rjh.org.uk>
 * @licence MIT
 */

const Cam = require('./cam').Cam
	, linerase = require('./utils').linerase
	;

/**
 * @typedef {object} Cam~RecordingItem
 * @property {string} $.token Recording token
 * @property {string} configuration.source.sourceid
 * @property {string} configuration.content
 * @property {string} configuration.maximumretentiontime
 * @property {string} tracks.track.tracktoken
 * @property {string} tracks.configuration.tracktype
 * @property {string} tracks.configuration.description
 */

/**
 * @callback Cam~GetRecordingsCallback
 * @property {?Error} error
 * @property {Cam~RecordingItem|Array.<Cam~RecordingItem>} recording items
 * @property {string} xml Raw SOAP response
 */

/**
 * Get Recording Items (links Video Sources to Recording Tracks)
 * @param {Cam~GetRecordingsCallback} [callback]
 */
Cam.prototype.getRecordings = function(callback) {
	this._request({
		service: 'recording'
		, body: this._envelopeHeader() +
		'<GetRecordings xmlns="http://www.onvif.org/ver10/recording/wsdl"/>' +
		this._envelopeFooter()
	}, function(err, data, xml) {
		if (!err) {
			/**
			 * Recording Item
			 * @name Cam#recordingItem
			 * @type {Cam~RecordingItem|Array.<Cam~RecordingItem>}
			 */
			this.recordingItems = linerase(data).getRecordingsResponse.recordingItem;
		}
		if (callback) {
			callback.call(this, err, this.recordingItems, xml);
		}
	}.bind(this));
};