baasic-sdk-angularjs
Version:
AngularJS SDK provides core functionality for building web and mobile applications on [Baasic](http://www.baasic.com/).
69 lines (57 loc) • 2.29 kB
JavaScript
/* globals module */
/**
* @module baasicApiHttp
* @description `baasicApiHttp` service is a core Baasic service that facilitates communication with the Baasic API. `baasicApiHttp` service is based on Angular '$http' service. For more information please visit online angular [documentation](https://docs.angularjs.org/api/ng/service/$http). This service handles:
- authentication tokens and
- HAL parsing.
*/
(function (angular, module, undefined) {
'use strict';
var extend = angular.extend;
function tail(array) {
return Array.prototype.slice.call(array, 1);
}
function createShortMethods(proxy) {
angular.forEach(tail(arguments, 1), function (name) {
proxy[name] = function (url, config) {
return proxy(extend(config || {}, {
method: name,
url: url
}));
};
});
}
function createShortMethodsWithData(proxy) {
angular.forEach(tail(arguments, 1), function (name) {
proxy[name] = function (url, data, config) {
return proxy(extend(config || {}, {
method: name,
url: url,
data: data
}));
};
});
}
var proxyFactory = function proxyFactory(app) {
var proxyMethod = function (config) {
var request = {};
if (config) {
request.url = config.url;
request.method = config.method;
if (config.headers) request.headers = config.headers;
if (config.data) request.data = config.data;
}
return app.apiClient.request(request);
};
createShortMethods(proxyMethod, 'get', 'delete', 'head', 'jsonp');
createShortMethodsWithData(proxyMethod, 'post', 'put', 'patch');
return proxyMethod;
};
module.service('baasicApiHttp', ['$q', 'baasicApp', function baasicApiHttp($q, baasicApp) {
var proxy = proxyFactory(baasicApp.get());
proxy.createNew = function (app) {
return proxyFactory(app);
};
return proxy;
}]);
})(angular, module);