Ghost/core/shared/ghost-url.js
Fabian Becker 9899f8d4e7 Fix non-idempotent Ghost API helper
- Add test
- Don't override apiUrl

closes #6239
2015-12-18 15:02:05 +01:00

74 lines
1.8 KiB
JavaScript

(function () {
'use strict';
var apiUrl = '{{api-url}}',
clientId,
clientSecret,
url,
init;
function generateQueryString(object) {
var queries = [],
i;
if (!object) {
return '';
}
for (i in object) {
if (object.hasOwnProperty(i) && (!!object[i] || object[i] === false)) {
queries.push(i + '=' + encodeURIComponent(object[i]));
}
}
if (queries.length) {
return '?' + queries.join('&');
}
return '';
}
url = {
api: function () {
var args = Array.prototype.slice.call(arguments),
queryOptions,
requestUrl = apiUrl;
if (args.length && typeof args[args.length - 1] === 'object') {
queryOptions = args.pop();
} else {
queryOptions = {};
}
queryOptions.client_id = clientId;
queryOptions.client_secret = clientSecret;
if (args.length) {
args.forEach(function (el) {
requestUrl += el.replace(/^\/|\/$/g, '') + '/';
});
}
return requestUrl + generateQueryString(queryOptions);
}
};
init = function (options) {
clientId = options.clientId ? options.clientId : '';
clientSecret = options.clientSecret ? options.clientSecret : '';
apiUrl = options.url ? options.url : (apiUrl.match(/{\{api-url}}/) ? '' : apiUrl);
};
if (typeof window !== 'undefined') {
window.ghost = window.ghost || {};
window.ghost.url = url;
window.ghost.init = init;
}
if (typeof module !== 'undefined') {
module.exports = {
url: url,
init: init
};
}
})();