ghostbar/transloadit-api

View on GitHub
lib/assemblies.js

Summary

Maintainability
A
0 mins
Test Coverage
//
// Module: assemblies
// ==================
//
'use strict';
var helper = require('./helper');
//
// <a name='constructor'></a>
// Constructor
// -----------
//
// #### Code
function Assemblies (opts, uri) {
  helper.init.call(this, opts, uri);
}

// 
// <a name='post'></a>
// Public: send an assembly to Transloadit API
// -------------------------------------------
//
// #### Parameters
//
// + `files` - `File Object` JSON (it may have several files)
// + `params`
// + `callback` - `Callback Function`
//
// #### Returns
//
// A `Callback` function with `(err, body)` from the request.
//
// #### Code
Assemblies.prototype.post = function (files, params, callback) {
  var self = this;
  var fs = require('fs');
  var request = require('request');
  var r = request.post(self.uri.base + self.uri.assemblies, function(err, response, body) {
    /* Here's the callback, we clean up the `response` and only return `body` */
    if (err)
      return callback(err);

    return callback(null, body);
  });

  var SignatureLib = require('./signature');
  var signature = new SignatureLib(self.opts);

  var form = r.form();

  var x = signature.create(params);

  (Object.keys(files)).forEach(function (file) {
    form.append(files[file].name, fs.createReadStream(files[file].path), {
      filename: files[file].name
    });
  });

  form.append('signature', x.signature);
  form.append('params', JSON.stringify(x.params));
};

//
// <a name='cancel'></a>
// Public: cancel an assembly
// --------------------------
//
// #### Parameters
//
// + `url` - The assembly's URL returned when the assembly was created on the field `assembly_url`
// + `signature` - (Optional) signature with which the assembly was created
// + `callback` - `Callback Function`
//
// #### Returns
//
// A `Callback` function with `(err, body)` from the request.
//
// #### Code
Assemblies.prototype.cancel = function (url, signature, callback) {
  if (url == null || typeof(url) !== 'string')
    return callback(new Error('The URL (first) argument is required'));

  if (signature != null)
    url += '?signature=' + signature;

  var request = require('request');
  request({
    uri: url,
    method: 'DELETE'
  }, function (err, res, body) {
    return callback(err, body);
  });
};

module.exports = Assemblies;