/node-upyun-classic

upyun sdk for node.js

Primary LanguageJavaScriptMIT LicenseMIT

upyun-classic

NPM version Build status Test coverage

upyun sdk for node.js (classic)

Install

$ npm install upyun-classic --save

Example

var UPYUN = require('upyun-classic');

var upyun = new UPYUN('testbucket', 'operatorname', 'operatorpwd', 'v0');

upyun.getUsage(function(err, result) {
    //...
})

Response

In this SDK, each api will return a response like below:

Normal

{
    statusCode: 200,    // http status code
    headers: {
        server: 'nginx/1.1.19',
        date: 'Wed, 13 Aug 2014 02:15:27 GMT',
        'content-type': 'application/json',
        'content-length': '24',
        connection: 'close'
    },                  // response header
    data: {
        space: 2501
    }                   // response body
}

Error catch

When an error occured, the error will be catched, and returned in the response

{
    statusCode: 401,    // http status code
    error: {
        error_code: 401,
        request_id: '9e7ce1bac4870ce5f066dd8775fda6b9',
        message: '<h1>401 Unauthorized</h1>Sign error (sign = md5(METHOD&URI&DATE&CONTENT_LENGTH&MD5(PASSWORD)))'
    },                  // error message
    headers: {
        server: 'nginx/1.1.19',
        date: 'Wed, 13 Aug 2014 02:19:07 GMT',
        'content-type': 'application/json',
        'content-length': '145',
        connection: 'close',
        'www-authenticate': 'Basic realm="UpYun"'
    }                   // response header
}

The different between these two responses is the error and body.

All responses contain http status code and the raw response header for futher usage.

Docs

API

Utils

API

### getUsage(callback) To get how many quota has been used.(Unit:`Byte`)

response eg.

{ statusCode: 200,
  headers: { ... },
  data: { space: '660612' } }

### listDir(remotePath, callback) Get the file list of that dir. The response contains each item's type(file or dir), size(unit: `Byte`), last modify time.

Arguments

  • remotePath The dir path which you want to traverse.

response eg.

{
  "statusCode": 200,
  "headers": { ... },
  "data": {
    "location": "/",
    "files": [
      {
        "name": "test_manual",
        "type": "folder",
        "length": "0",
        "last_modified": "1411701197"
      },
      {
        "name": "dir",
        "type": "file",
        "length": "0",
        "last_modified": "1411546581"
      }
    ]
  }
}

### createDir(remotePath, callback) Create a new dir in UPYUN bucket.

Arguments

  • remotePath The dir path which you want to create.

### removeDir(remotePath, callback) Delete a dir
  • remotePath The dir path which you want to remove.

### uploadFile(remotePath, localFile, type, [checksum], [opts], callback) Upload a file into UPYUN bucket.

Arguments

  • remotePath Where the file will be stored in your UPYUN bucket.
  • localFile The file you want to upload. It can be a path string or the file's raw data.
  • type Specifies the file's content-type.
  • checksum Set true to force SDK send a md5 of local file to UPYUN. Or set a md5value string by yourself.
  • opts The additional http request headers(JavaScript Object). More detail in Official Docs
 {
     statusCode: 200,
     headers: { ... },
     data: {
         width: '400',
         height: '200',
         frames: '1',
         type: 'PNG'
     }
 }

### existsFile(remotePath, callback) `HEAD` a path to detect if there is an file.

Arguments

  • remotePath The file's path in your UPYUN bucket.
{
    statusCode: 200,
    headers: { ... },
    data: {
        type: 'file',
        size: '1075',
        date: '1407729976'
    }
}

### downloadFile(remotePath, [localPath], callback) Download a file from UPYUN bucket.

Arguments

  • remotePath The file's path in your UPYUN bucket.
  • localPath Where the file will save to. If no localPath, the file's content will output directly in the response body.

### removeFile(remotePath, callback) Delete a file from UPYUN bucket.

Arguments

  • remotePath The file's path in your UPYUN bucket.
### setEndpoint(endpoint) Use this method to set api endpoint manually.

Arguments

  • endpoint The value can be these(leave blank to let sdk auto select the best one):
    • ctcc or v1: China Telecom
    • cucc or v2: China Unicom
    • cmcc or v3 China Mobile
    • v0 or any other string: Will use v0.api.upyun.com (auto detect routing)