Akamai NetStorage HTTP API for Node.js
npm install akamai-http-apinode-akamai-http-api
====================
Akamai NetStorage HTTP API for Node.js (Unofficial).



* Official library might be found here
(though, the quality of this library is suspicious).
"dependencies": {
"akamai-http-api": "0.6.*" // see the "releases" section
}
`
`npm update`Initialization
`javascript
var akamai = require('akamai-http-api');
akamai.setConfig({
keyName: 'keyName',
key: 'aLongString',
host: 'changeme.akamaihd.net',
ssl: true, // optional, default: false
verbose: false, // optional, default: false
request: { // optional, request.js options, see: https://github.com/request/request#requestoptions-callback
timeout: 20000 // 20s is the dafault value
}
});
`$3
1. You have to enable the netstorage HTTP API access using the control.akamai.com website
2. Ensure there are no more than 15 operations/second on netstorage, otherwise you can expect netstorage to serve 500 errors.
3. Double check the host value. In case of typo (fe: test.upload.akamai.com), the client just sits there trying to open up a socket. Default timeout is 20s.API
$3
#### upload
`javascript
var fs = require('fs'),
stream = fs.createReadStream('cool/file.jpg');
akamai.upload(stream, '/12345/MyFolder/MyFile.jpg', function (err, data) {});
`
#### download
`javascript
var fs = require('fs'),
stream = fs.createWriteStream('cool/file_download.jpg');
akamai.download(pathRemoteFile, stream, function (err, data) {});
`
#### mtime
`javascript
akamai.mtime('/12345/MyFolder/MyFile.jpg', new Date(), function (err, data) {});
`$3
#### du
`javascript
akamai.du('/12345/MyFolder', function (err, data) {});
`
#### dir
`javascript
akamai.dir('/12345/MyFolder', function (err, data) {});
`
#### stat
`javascript
akamai.stat('/12345/MyFolder', function (err, data) {});
`
#### delete
`javascript
akamai.delete('/12345/MyFolder/MyFile.jpg', function (err, data) {});
`
#### mkdir
`javascript
akamai.mkdir('/12345/MyFolder', function (err, data) {});
`
#### rmdir
`javascript
akamai.rmdir('/12345/MyFolder', function (err, data) {});
`
#### rename
`javascript
akamai.rename('/12345/MyFile.jpg', '/12345/MyFileNew.jpg', function (err, data) {});
`
#### symlink
`javascript
akamai.symlink('/12345/MyFile.jpg', '/12345/MyFileSymlink.jpg', function (err, data) {});
`$3
#### fileExists
`javascript
akamai.fileExists('/12345/MyFile.jpg', function (err, boolFlag) {});
`$3
For the communication netstorage HTTP API uses HTTP codes.
Hence, a number of methods may trigger an exception. For example mkdir in case the target already exists.
Or symlink in case the target doesn't exist.To handle these exceptions the
err object has an abnormal code attribute.`javascript
akamai.mkdir('...', function (err, data) {
if (err.code === 409) { } // it already exists
if (err.message.indexOf(409) !== -1) // the same
});
`$3
`javascript
var akamai = require('akamai-http-api'),
_ = require('lodash'),
myAkamai = Object.create(akamai);// custom headers for the upload function
myAkamai.upload = function (stream, path, custHeaders, cb) {
var options = {
request: {method: 'put'},
headers: _.extend({action: 'upload', 'upload-type': 'binary'}, custHeaders)
};
stream.pipe(this.getRequestObject(path, options, cb));
return this;
};
// quick-delete function (you should enable it first!)
myAkamai.quickDelete = function (path, cb) {
var options = {
request: {method: 'put'},
headers: {action: 'quick-delete', 'quick-delete': 'imreallyreallysure'}
};
this.getRequestObject(path, options, cb);
return this;
};
// exporting outside
module.exports = myAkamai;
`Tests
Docker
`sh
modify test/akamai.js#19-21 first
[sudo] docker build -t node-akamai-http-api .
[sudo] docker run -ti --rm node-akamai-http-api
`NVM
`sh
export AKAMAI_KEY_NAME="key_name"
export AKAMAI_KEY="key"
export AKAMAI_HOST="domain.akamaihd.net"
nvm install [6, 8, 10, 12, etc.]
npm install
npm test
``#### License