backblaze-b2
Advanced tools
Comparing version 0.9.3 to 0.9.4
@@ -0,1 +1,8 @@ | ||
### v0.9.4 (December 3, 2015) - The all the things API release | ||
Features | ||
- Download file by fileId | ||
- Delete file version | ||
### v0.9.3 (December 3, 2015) - The get on the file escalator release | ||
@@ -2,0 +9,0 @@ |
module.exports = { | ||
API_AUTHORIZE__URL: 'https://api.backblaze.com/b2api/v1/b2_authorize_account' | ||
API_AUTHORIZE__URL: 'https://api.backblaze.com/b2api/v1/b2_authorize_account', | ||
API_VERSION_URL: '/b2api/v1' | ||
}; |
var utils = require('./../utils'); | ||
var request = require('../request'); | ||
var conf = require('../../conf'); | ||
@@ -95,3 +96,3 @@ exports.TYPES = { | ||
function getApiUrl(b2) { | ||
return b2.apiUrl + '/b2api/v1'; | ||
return b2.apiUrl + conf.API_VERSION_URL; | ||
} |
@@ -6,2 +6,3 @@ var sha1 = require('node-sha1'); | ||
var request = require('../request'); | ||
var conf = require('../../conf'); | ||
@@ -109,5 +110,36 @@ exports.uploadFile = function(b2, args) { | ||
//B2.prototype.delete_file_version = function() {}; | ||
//B2.prototype.download_file_by_id = function() {}; | ||
exports.downloadFileById = function(b2, fileId) { | ||
var options = { | ||
url: getDownloadFileByIdUrl(b2), | ||
qs: { | ||
fileId: fileId | ||
}, | ||
headers: utils.getAuthHeaderObjectWithToken(b2) | ||
}; | ||
var deferred = q.defer(); | ||
var requestInstance = request.getInstance(); | ||
requestInstance(options, utils.getProcessFileSuccess(deferred, processDownloadResponse)); | ||
return deferred.promise; | ||
}; | ||
exports.deleteFileVersion = function(b2, args) { | ||
var fileId = args.fileId; | ||
var fileName = args.fileName; | ||
var options = { | ||
url: getDeleteFileVersionUrl(b2), | ||
method: 'POST', | ||
headers: utils.getAuthHeaderObjectWithToken(b2), | ||
body: JSON.stringify({ | ||
fileId: fileId, | ||
fileName: fileName | ||
}) | ||
}; | ||
return request.sendRequest(options); | ||
}; | ||
function processDownloadResponse(response, body) { | ||
@@ -153,4 +185,12 @@ var headers = [ | ||
function getDownloadFileByIdUrl(b2) { | ||
return b2.downloadUrl + conf.API_VERSION_URL + '/b2_download_file_by_id'; | ||
} | ||
function getDeleteFileVersionUrl(b2) { | ||
return getApiUrl(b2) + '/b2_delete_file_version'; | ||
} | ||
function getApiUrl(b2) { | ||
return b2.apiUrl + '/b2api/v1'; | ||
return b2.apiUrl + conf.API_VERSION_URL; | ||
} |
@@ -80,7 +80,13 @@ var actions = require('./actions'); | ||
/* | ||
B2.prototype.delete_file_version = function() {}; | ||
B2.prototype.download_file_by_id = function() {}; | ||
*/ | ||
B2.prototype.downloadFileById = function(fileId) { | ||
return actions.file.downloadFileById(this, fileId); | ||
}; | ||
// args: | ||
// - fileId | ||
// - fileName | ||
B2.prototype.deleteFileVersion = function(args) { | ||
return actions.file.deleteFileVersion(this, args); | ||
}; | ||
module.exports = B2; |
{ | ||
"name": "backblaze-b2", | ||
"version": "0.9.3", | ||
"version": "0.9.4", | ||
"description": "Node.js Library for the Backblaze B2 Storage Service", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -14,7 +14,5 @@ ### Backblaze B2 Node.js Library | ||
At this time not all API features of Backblaze B2 are yet implemented. | ||
All B2 API's have been implemented. See below for usage. | ||
Once all API features are implemented, version will be updated to 1.0.x | ||
### Usage | ||
@@ -84,1 +82,11 @@ | ||
}); // returns promise | ||
// download file by fileId | ||
b2.downloadFileById(fileId); // returns promise | ||
// delete file version | ||
b2.deleteFileVersion({ | ||
fileId: 'fileId', | ||
fileName: 'fileName' | ||
}); // returns promise | ||
34
test.js
@@ -54,15 +54,25 @@ var fs = require('fs'); | ||
b2.downloadFileByName({ | ||
bucketName: 'thngs-foo', | ||
fileName: 'thngs-circle.png' | ||
}).then( | ||
function(data) { | ||
console.log('success', data); | ||
//fs.writeFileSync('/Users/yakov/Desktop/test-thngs-circle.png', data); | ||
}, | ||
function(error) { | ||
console.log('err', error); | ||
} | ||
); | ||
b2.deleteFileVersion({ | ||
fileId: '4_zf15e07a37be0372b56110f1e_f1133cc984bf18527_d20151123_m085512_c001_v0001012_t0021', | ||
fileName: 'xyc.zip' | ||
}) | ||
.then( | ||
function(response) { | ||
console.log('success', response); | ||
}, | ||
function(error) { | ||
console.log('error', error); | ||
} | ||
); | ||
//b2.downloadFileById('4_zf15e07a37be0372b56110f1e_f113a14c4db722abc_d20151123_m092204_c001_v0001005_t0005').then( | ||
// function(data) { | ||
// console.log('success', data); | ||
// //fs.writeFileSync('/Users/yakov/Desktop/test-thngs-circle.png', data); | ||
// }, | ||
// function(error) { | ||
// console.log('err', error); | ||
// } | ||
//); | ||
//b2.getFileInfo('4_zf15e07a37be0372b56110f1e_f1133cc984bf18527_d20151123_m085512_c001_v0001012_t0021') | ||
@@ -69,0 +79,0 @@ // .then( |
@@ -361,2 +361,117 @@ var expect = require('expect.js'); | ||
describe('downloadFileById', function() { | ||
describe('with good response', function() { | ||
beforeEach(function(done) { | ||
response = { | ||
headers: { | ||
'x-bz-file-id': 'fileIdAbcd1234', | ||
'x-bz-file-name': 'unicorns-download.png', | ||
'x-bz-content-sha1': 'file_hash' | ||
}, | ||
statusCode: 200 | ||
}; | ||
bogusRequestModule = function(options, cb) { | ||
requestOptions = options; | ||
cb(errorMessage, response, 'file contents'); | ||
}; | ||
request.setup(bogusRequestModule); | ||
file.downloadFileById(b2, 'abcd1234').then(function(response) { | ||
actualResponse = response; | ||
done(); | ||
}); | ||
}); | ||
it('should set correct options and resolve with good response', function() { | ||
expect(requestOptions).to.eql({ | ||
url: 'https://download/b2api/v1/b2_download_file_by_id', | ||
qs: { | ||
fileId: 'abcd1234' | ||
}, | ||
headers: { | ||
Authorization: 'unicorns and rainbows' | ||
} | ||
}); | ||
expect(actualResponse).to.eql({ | ||
data: 'file contents', | ||
fileId: 'fileIdAbcd1234', | ||
filename: 'unicorns-download.png', | ||
sha1: 'file_hash' | ||
}); | ||
}); | ||
}); | ||
describe('with error response', function() { | ||
beforeEach(function(done) { | ||
errorMessage = 'Something went wrong'; | ||
file.downloadFileById(b2, '1234abcd').then(null, function(error) { | ||
actualResponse = error; | ||
done(); | ||
}); | ||
}); | ||
it('Should respond with an error and reject promise', function() { | ||
expect(actualResponse).to.be(errorMessage); | ||
}); | ||
}); | ||
}); | ||
describe('deleteFileVersion', function() { | ||
beforeEach(function() { | ||
options = { | ||
fileId: 'abcd1234', | ||
fileName: 'foo.txt' | ||
}; | ||
}); | ||
describe('with good response', function() { | ||
beforeEach(function(done) { | ||
response = { foo: '1234' }; | ||
file.deleteFileVersion(b2, options).then(function(response) { | ||
actualResponse = response; | ||
done(); | ||
}); | ||
}); | ||
it('should set correct options and resolve with good response', function() { | ||
expect(requestOptions).to.eql({ | ||
url: 'https://foo/b2api/v1/b2_delete_file_version', | ||
method: 'POST', | ||
headers: { | ||
Authorization: 'unicorns and rainbows' | ||
}, | ||
body: '{"fileId":"abcd1234","fileName":"foo.txt"}' | ||
}); | ||
expect(actualResponse).to.eql(response); | ||
}); | ||
}); | ||
describe('with error response', function() { | ||
beforeEach(function(done) { | ||
errorMessage = 'Something went wrong'; | ||
file.deleteFileVersion(b2, options).then(null, function(error) { | ||
actualResponse = error; | ||
done(); | ||
}); | ||
}); | ||
it('Should respond with an error and reject promise', function() { | ||
expect(actualResponse).to.be(errorMessage); | ||
}); | ||
}); | ||
}); | ||
}); |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
55880
1375
91