docs/signature.html
<!DOCTYPE html>
<html>
<head>
<title>Module: Signature</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link rel="stylesheet" media="all" href="public/stylesheets/normalize.css" />
<link rel="stylesheet" media="all" href="docco.css" />
</head>
<body>
<div class="container">
<div class="page">
<div class="header">
<h1 id="module-signature">Module: Signature</h1>
</div>
<div class='highlight'><pre><span class="hljs-pi">'use strict'</span>;</pre></div>
<p><a name='constructor'></a></p>
<h2 id="constructor">Constructor</h2>
<div class='highlight'><pre><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">Signature</span> <span class="hljs-params">(opts)</span> </span>{
<span class="hljs-comment">/* checking the required arguments */</span>
[<span class="hljs-string">'key'</span>, <span class="hljs-string">'secret'</span>].forEach(<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-params">(item)</span> </span>{
<span class="hljs-keyword">if</span> (opts[item] == <span class="hljs-literal">null</span>)
<span class="hljs-keyword">throw</span> <span class="hljs-keyword">new</span> <span class="hljs-built_in">Error</span>(<span class="hljs-string">'There\'s a required argument missing: '</span> + item);
});
<span class="hljs-keyword">this</span>.opts = opts;
}</pre></div>
<p><a name='create'></a></p>
<h2 id="create-a-signature-ready-for-consume">Create a signature ready for consume</h2>
<h4 id="arguments">Arguments</h4>
<ul>
<li><code>params</code> — params to be sent to transloadit</li>
<li><code>opts</code> — Array of opts to be handled by the generator<ul>
<li><code>expires</code> — (Optional) Time in miliseconds for expiration (Default
is 15 minutes or 900000 ms)</li>
</ul>
</li>
<li><code>Callback</code> function — (Optional)</li>
</ul>
<h4 id="returns">Returns</h4>
<p>A signature, ready to be used with the payload sent to the function.</p>
<h4 id="example">Example</h4>
<pre><code><span class="hljs-keyword">var</span> params = {
<span class="hljs-string">'steps'</span>: { ... }
},
opts = {
<span class="hljs-string">'expires'</span>: <span class="hljs-string">'60000'</span>
};
sig(params, opts);
</code></pre><h4 id="code">Code</h4>
<div class='highlight'><pre>Signature.prototype.create = <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-params">(params, opts, callback)</span> </span>{
<span class="hljs-keyword">var</span> self = <span class="hljs-keyword">this</span>;
<span class="hljs-keyword">var</span> expires;
<span class="hljs-keyword">if</span> (opts != <span class="hljs-literal">null</span>)
expires = opts.expires || <span class="hljs-number">15</span> * <span class="hljs-number">60000</span>;
<span class="hljs-keyword">else</span>
expires = <span class="hljs-number">15</span> * <span class="hljs-number">60000</span>;
<span class="hljs-keyword">if</span> (params == <span class="hljs-literal">null</span>)
params = {};
params[<span class="hljs-string">'auth'</span>] = {
<span class="hljs-string">'key'</span>: self.opts.key,
expires: (<span class="hljs-keyword">new</span> <span class="hljs-built_in">Date</span>( (<span class="hljs-keyword">new</span> <span class="hljs-built_in">Date</span>()).getTime() + expires) ).toISOString()
};
<span class="hljs-keyword">var</span> sig = {
signature: self.createSignature(params),
params: params
};
<span class="hljs-keyword">if</span> (callback != <span class="hljs-literal">null</span>)
<span class="hljs-keyword">return</span> callback(<span class="hljs-literal">null</span>, sig);
<span class="hljs-keyword">return</span> sig;
};
Signature.prototype.createSignature = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(params)</span> </span>{
<span class="hljs-keyword">var</span> self = <span class="hljs-keyword">this</span>;
<span class="hljs-keyword">var</span> crypto = <span class="hljs-built_in">require</span>(<span class="hljs-string">'crypto'</span>);
<span class="hljs-keyword">var</span> paramString = <span class="hljs-built_in">JSON</span>.stringify(params);
<span class="hljs-keyword">var</span> theSignature = crypto
.createHmac(<span class="hljs-string">'sha1'</span>, self.opts.secret)
.update(
<span class="hljs-keyword">new</span> Buffer(
paramString,
<span class="hljs-string">'utf-8'</span>
)
)
.digest(<span class="hljs-string">'hex'</span>);
<span class="hljs-keyword">return</span> theSignature;
};
Signature.prototype.check = <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-params">(params, sig)</span> </span>{
<span class="hljs-keyword">var</span> self = <span class="hljs-keyword">this</span>;
<span class="hljs-keyword">var</span> theSignature = self.createSignature(params);
<span class="hljs-keyword">if</span> (theSignature.signature === sig)
<span class="hljs-keyword">return</span> <span class="hljs-literal">true</span>;
<span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
};
<span class="hljs-built_in">module</span>.exports = Signature;</pre></div>
<div class="fleur">h</div>
</div>
</div>
</body>
</html>