Skip to content

Instantly share code, notes, and snippets.

@thomasv314
Created April 9, 2014 18:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save thomasv314/10297964 to your computer and use it in GitHub Desktop.
Save thomasv314/10297964 to your computer and use it in GitHub Desktop.
'use strict';
angular.module('instangApp')
.service('TagService', function TagService($http, $q, $angularCacheFactory, Nginsta) {
// AngularJS will instantiate a singleton by calling "new" on this function
var cache = $angularCacheFactory('tagCache', {
maxAge: 3600000
});
return {
createTag: function(data) {
var deferred = $q.defer();
$http.post(Nginsta.url('/api/tags'), { tag: data })
.success(function(data, status, headers, config) {
var tag = data.tag;
cache.put(data.tag.id, data.tag);
deferred.resolve(data.tag);
})
.error(function(data, status, headers, config) {
deferred.reject(data);
});
return deferred.promise;
},
deleteById: function(id) {
var deferred = $q.defer();
$http.delete(Nginsta.url('/api/tags/'+id))
.success(function(data, status, headers, config) {
console.log(data);
deferred.resolve(data);
})
.error(function(data, status, headers, config) {
console.log(data);
deferred.reject(data);
});
return deferred.promise;
},
getById: function (id) {
var deferred = $q.defer();
if (cache.get(id)) {
console.log("Already had in cache.");
deferred.resolve(cache.get(id));
}
else {
console.log("Did not have cache.");
$http.get(Nginsta.url('/api/tags/' + id))
.success(function(data, status, headers, config) {
console.log("Da data!", data);
cache.put(id, data.tag);
deferred.resolve(data.tag);
})
.error(function(data, status, headers, config) {
deferred.reject(data);
})
}
return deferred.promise;
}
};
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment