akamai-http-api

    0.6.1 • Public • Published

    node-akamai-http-api

    Akamai NetStorage HTTP API for Node.js (Unofficial).

    Build Status Coverage Status Code Climate

    Installation

    "dependencies": {
      "akamai-http-api": "0.6.*" // see the "releases" section
    }
    

    npm update

    Initialization

    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
      }
    });

    Notices

    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

    Advanced

    upload

    var fs = require('fs'),
      stream = fs.createReadStream('cool/file.jpg');
    akamai.upload(stream, '/12345/MyFolder/MyFile.jpg', function (err, data) {});

    download

    var fs = require('fs'),
      stream = fs.createWriteStream('cool/file_download.jpg');
    akamai.download(pathRemoteFile, stream, function (err, data) {});

    mtime

    akamai.mtime('/12345/MyFolder/MyFile.jpg', new Date(), function (err, data) {});

    Basic

    du

    akamai.du('/12345/MyFolder', function (err, data) {});

    dir

    akamai.dir('/12345/MyFolder', function (err, data) {});

    stat

    akamai.stat('/12345/MyFolder', function (err, data) {});

    delete

    akamai.delete('/12345/MyFolder/MyFile.jpg', function (err, data) {});

    mkdir

    akamai.mkdir('/12345/MyFolder', function (err, data) {});

    rmdir

    akamai.rmdir('/12345/MyFolder', function (err, data) {});

    rename

    akamai.rename('/12345/MyFile.jpg', '/12345/MyFileNew.jpg', function (err, data) {});

    symlink

    akamai.symlink('/12345/MyFile.jpg', '/12345/MyFileSymlink.jpg', function (err, data) {});

    Helpers

    fileExists

    akamai.fileExists('/12345/MyFile.jpg', function (err, boolFlag) {});

    Exceptions

    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.

    akamai.mkdir('...', function (err, data) {
      if (err.code === 409) { } // it already exists
      if (err.message.indexOf(409) !== -1) // the same
    });

    How to extend it?

    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

    # 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

    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

    MIT

    Install

    npm i akamai-http-api

    DownloadsWeekly Downloads

    2,984

    Version

    0.6.1

    License

    MIT

    Unpacked Size

    89.1 kB

    Total Files

    12

    Last publish

    Collaborators

    • kkamkou