versioneye-update
Version:
Create/Update projects at VersionEye.com via the API
169 lines (138 loc) • 5.26 kB
JavaScript
;
const fs = require('fs');
const util = require('util');
const request = require('request');
const HttpStatus = require('http-status-codes');
const constants = require('./constants');
/**
* Create a new versioneye API client for a specific user account
* @param {String} apiKey - The versioneye api key that belongs to a specific user account
* @param {String} baseUrl - The baseUrl for the versionEye API
*/
function VersioneyeApi(apiKey, baseUrl) {
this.apiKey = apiKey;
this.baseUrl = baseUrl;
}
/**
* Update a project in versioneye via package file upload
* @param {String} projectId - The versioneye project id
* @param {String} filePath - Path to package file
* @param {Function} callback - Callback function(err)
* @return {undefined}
*/
VersioneyeApi.prototype.updateProjectByFile = function (projectId, filePath, callback) {
var fileContent = fs.createReadStream(filePath);
return this.updateProjectByContent(projectId, fileContent, callback);
};
/**
* Update a project in versioneye via package file upload
* @param {String} projectId - The versioneye project id
* @param {object} fileContent - The file content
* @param {Function} callback - Callback function(err)
* @return {undefined}
*/
VersioneyeApi.prototype.updateProjectByContent = function (projectId, fileContent, callback) {
var formData = {
project_file: fileContent
};
request.post({
url: util.format(constants.uriUpdateProject, this.baseUrl, projectId, this.apiKey),
formData: formData
}, function (err, response, body) {
if (err) {
callback(err);
return;
}
var statusCode = response.statusCode;
try {
var parsedBody = JSON.parse(body);
if (statusCode === HttpStatus.OK || statusCode === HttpStatus.CREATED) {
callback(parsedBody);
return;
} else {
callback(parsedBody, new Error('VersionEye API says "' + parsedBody.error + '"'));
return;
}
} catch (ex) {
callback({}, new Error('Failed to parse VersionEye API return object: "' + ex + '"'));
return;
}
});
};
/**
* Update a project in versioneye via package file upload
* @param {Function} callback - Callback function(err)
* @return {undefined}
*/
VersioneyeApi.prototype.listProjects = function (callback) {
request.get({
url: util.format(constants.uriListProjects, this.baseUrl, this.apiKey)
}, function (err, response, body) {
if (err) {
callback(err);
return;
}
var statusCode = response.statusCode;
try {
var parsedBody = JSON.parse(body);
if (statusCode === HttpStatus.OK || statusCode === HttpStatus.CREATED) {
callback(parsedBody);
return;
} else {
callback(parsedBody, new Error('VersionEye API says "' + parsedBody.error + '"'));
return;
}
} catch (ex) {
callback({}, new Error('Failed to parse VersionEye API return object: "' + ex + '"'));
return;
}
});
};
/**
* Update a project in versioneye via package file upload
* @param {String} filePath - Path to package file
* @param {String} visibility - The visibility of the project to be created
* @param {Function} callback - Callback function(err)
* @return {undefined}
*/
VersioneyeApi.prototype.createProjectByFile = function (filePath, visibility, callback) {
var fileContent = fs.createReadStream(filePath);
return this.createProjectByContent(fileContent, visibility, callback);
};
/**
* Update a project in versioneye via package file upload
* @param {object} fileContent - The file content
* @param {String} visibility - The visibility of the project to be created
* @param {Function} callback - Callback function(err)
* @return {undefined}
*/
VersioneyeApi.prototype.createProjectByContent = function (fileContent, visibility, callback) {
var formData = {
upload: fileContent,
visibility: visibility
};
request.post({
url: util.format(constants.uriCreateProject, this.baseUrl, this.apiKey),
formData: formData
}, function (err, response, body) {
if (err) {
callback(err);
return;
}
var statusCode = response.statusCode;
try {
var parsedBody = JSON.parse(body);
if (statusCode === HttpStatus.OK || statusCode === HttpStatus.CREATED) {
callback(parsedBody);
return;
} else {
callback(parsedBody, new Error('VersionEye API says "' + parsedBody.error + '"'));
return;
}
} catch (ex) {
callback({}, new Error('Failed to parse VersionEye API return object: "' + ex + '"'));
return;
}
});
};
module.exports = VersioneyeApi;