Repository URL to install this package:
|
Version:
1.0.5 ▾
|
(function() {
'use strict';
angular.module('angularGobox').service('API', API);
API.$inject = ['$http', '$rootScope'];
function API($http, $rootScope) {
var service = this;
service.baseUrl = '';
service.token = '';
service.defaultHeaders = {
'Accept': 'application/json'
};
service.get = get;
service.post = post;
service.put = put;
service.patch = patch;
service.delete = delete_;
service.authorize = authorize;
// Public
function get(path, params, opts) {
path = service.baseUrl + expandPath(path);
opts = expandOpts(opts);
opts.params = params;
return $http.get(path, opts).error(err);
}
function post(path, data, opts) {
path = service.baseUrl + expandPath(path);
opts = expandOpts(opts);
return $http.post(path, data, opts).error(err);
}
function put(path, data, opts) {
path = service.baseUrl + expandPath(path);
opts = expandOpts(opts);
return $http.put(path, data, opts).error(err);
}
function patch(path, data, opts) {
path = service.baseUrl + expandPath(path);
opts = expandOpts(opts);
return $http(angular.extend({
method: 'PATCH',
url: path,
data: angular.toJson(data),
}, opts)).error(err);
}
function delete_(path, opts) {
path = service.baseUrl + expandPath(path);
opts = expandOpts(opts);
return $http.delete(path, opts).error(err);
}
function authorize(username, password) {
return post('/api-token-auth/', {
username: username,
password: password
}).success(function(data) {
service.token = data.token;
return data;
});
}
// Private
function expandPath(path) {
return '/api/v1' + path;
}
function expandOpts(opts) {
opts = opts || {};
opts.headers = opts.headers || service.defaultHeaders;
if (service.token) {
opts.headers['Authorization'] = 'Token ' + service.token;
}
return opts;
}
function pluckData(resp) {
return resp;
}
function err(error) {
if (error.detail === 'Invalid token')
$rootScope.$broadcast('api.events.invalid_token', error);
console.warn("API error", error);
console.log("API service", service);
return error;
}
}
})();