Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
angular-gobox / src / services / api.js
Size: Mime:
(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;
        }
    }

})();