upyun-legacy
Version:
upyun sdk for node.js
240 lines (187 loc) • 6 kB
Markdown
# node-upyun-legacy
[](https://www.npmjs.org/package/upyun-legacy)
[](https://travis-ci.org/lisposter/node-upyun-legacy)
[](https://coveralls.io/r/lisposter/node-upyun-legacy?branch=master)
upyun sdk for node.js (legacy)
__NOTE__, this package has been moved to [upyun-classic](https://www.npmjs.com/package/upyun-classic)
<br/>
__NOTE__, this package has been moved to [upyun-classic](https://www.npmjs.com/package/upyun-classic)
<br/>
__NOTE__, this package has been moved to [upyun-classic](https://www.npmjs.com/package/upyun-classic)
# Install
```sh
$ npm install upyun-legacy --save
```
# Example
```js
var UPYUN = require('upyun-legacy');
var upyun = new UPYUN('testbucket', 'operatername', 'operaterpwd', 'v0');
upyun.getUsage(function(err, result) {
//...
})
```
# Response
In this SDK, every api will return a response in the format:
#### Normal
```js
{
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
```js
{
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 raw response header for futher usage.
# Docs
## API
* [`getUsage`](#getUsage)
* [`listDir`](#listDir)
* [`createDir`](#createDir)
* [`removeDir`](#removeDir)
* [`uploadFile`](#uploadFile)
* [`existsFile`](#existsFile)
* [`downloadFile`](#downloadFile)
* [`removeFile`](#removeFile)
## Utils
* [`setEndpoint`](#setEndpoint)
# API
<a name="getUsage" />
### getUsage(callback)
To get how many quota has been used.(Unit:`Byte`)
response eg.
```js
{ statusCode: 200,
headers: { ... },
data: { space: '660612' } }
```
---------------------------------------
<a name="listDir" />
### 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.
```js
{
"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"
}
]
}
}
```
---------------------------------------
<a name="createDir" />
### createDir(remotePath, callback)
Create a new dir in UPYUN bucket.
__Arguments__
* `remotePath` The dir path which you want to create.
---------------------------------------
<a name="removeDir" />
### removeDir(remotePath, callback)
Delete a dir
* `remotePath` The dir path which you want to remove.
---------------------------------------
<a name="uploadFile" />
### 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](http://docs.upyun.com/api/rest_api/#_4)
```js
{
statusCode: 200,
headers: { ... },
data: {
width: '400',
height: '200',
frames: '1',
type: 'PNG'
}
}
```
---------------------------------------
<a name="existsFile" />
### existsFile(remotePath, callback)
`HEAD` a path to detect if there is an file.
__Arguments__
* `remotePath` The file's path in your UPYUN bucket.
```js
{
statusCode: 200,
headers: { ... },
data: {
type: 'file',
size: '1075',
date: '1407729976'
}
}
```
---------------------------------------
<a name="downloadFile" />
### 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.
---------------------------------------
<a name="removeFile" />
### removeFile(remotePath, callback)
Delete a file from UPYUN bucket.
__Arguments__
* `remotePath` The file's path in your UPYUN bucket.
# Utils
<a name="setEndpoint" />
### 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)