'use strict'; var hashmerge = require('hashmerge'); /** * This method will take the UUID of a block and turn it into a new template. * @function template_create * @memberof Bluebox * @param {Hash} options * @param {String} options.id The UUID of the block you want to archive into a template * @param {String} [options.description] This will record a description on the template for future use * @param {function} callback * @instance */ var template_create = function(options, callback) { var self = this; var required = [ 'id' ]; var optional = [ 'description' ]; var defaults = {}; var settings = hashmerge(defaults, options); self._request('post', '/block_templates.json', settings , function(err, body, statusCode) { if (err) { return callback(err) ; } if (statusCode === 404) { return callback(new Error('Not Found - Block could not be found')); } if (statusCode === 409) { // With custom text string // This can occur in two circumstances: // - First, when you've tried to run duplicate archive jobs on the same block (without the first finishing) // - Second, when the description you've specified is not unique across the system.')); return callback(new Error('Conflict - ' + body.text)); } // Archive is in progress. Template will show up in template list when complete if (statusCode !== 202) { return callback(new Error('Unexpected Status Code[' + statusCode + '] : ' + body )) ; } return callback(null, body); }); }; module.exports = template_create;