bower
Version:
The browser package manager
77 lines (67 loc) • 2.13 kB
JavaScript
var parseUrl = require('url').parse;
var request = require('request');
var createError = require('./util/createError');
function register(name, url, callback) {
var config = this._config;
var requestUrl = config.registry.register + '/packages';
var remote = parseUrl(requestUrl);
var headers = {};
if (config.userAgent) {
headers['User-Agent'] = config.userAgent;
}
if (config.accessToken) {
requestUrl += '?access_token=' + config.accessToken;
}
request.post(
{
url: requestUrl,
headers: headers,
ca: config.ca.register,
strictSSL: config.strictSsl,
timeout: config.timeout,
json: true,
form: {
name: name,
url: url
}
},
function(err, response) {
// If there was an internal error (e.g. timeout)
if (err) {
return callback(
createError(
'Request to ' + requestUrl + ' failed: ' + err.message,
err.code
)
);
}
// Duplicate
if (response.statusCode === 403) {
return callback(createError('Duplicate package', 'EDUPLICATE'));
}
// Invalid format
if (response.statusCode === 400) {
return callback(
createError('Invalid URL format', 'EINVFORMAT')
);
}
// Everything other than 201 is unknown
if (response.statusCode !== 201) {
return callback(
createError(
'Unknown error: ' +
response.statusCode +
' - ' +
response.body,
'EUNKNOWN'
)
);
}
callback(null, {
name: name,
url: url
});
}
);
}
module.exports = register;