Skip to content

Commit

Permalink
Add clientside api caching setting
Browse files Browse the repository at this point in the history
  • Loading branch information
jlukic committed May 13, 2015
1 parent a07e699 commit f2ced9d
Showing 1 changed file with 44 additions and 14 deletions.
58 changes: 44 additions & 14 deletions src/definitions/behaviors/api.js
Expand Up @@ -74,21 +74,9 @@ $.api = $.fn.api = function(parameters) {
module = {

initialize: function() {
var
triggerEvent = module.get.event()
;
// bind events
if(!methodInvoked) {
if( triggerEvent ) {
module.debug('Attaching API events to element', triggerEvent);
$module
.on(triggerEvent + eventNamespace, module.event.trigger)
;
}
else if(settings.on == 'now') {
module.debug('Querying API now', triggerEvent);
module.query();
}
module.create.cache();
module.bind.events();
}
module.instantiate();
},
Expand All @@ -109,6 +97,24 @@ $.api = $.fn.api = function(parameters) {
;
},

bind: {
events: function() {
var
triggerEvent = module.get.event()
;
if( triggerEvent ) {
module.debug('Attaching API events to element', triggerEvent);
$module
.on(triggerEvent + eventNamespace, module.event.trigger)
;
}
else if(settings.on == 'now') {
module.debug('Querying API now', triggerEvent);
module.query();
}
}
},

query: function() {

if(module.is.disabled()) {
Expand Down Expand Up @@ -190,6 +196,14 @@ $.api = $.fn.api = function(parameters) {
module.debug('Sending data', data, ajaxSettings.method);
module.verbose('Using AJAX settings', ajaxSettings);

// pull from cache
if(settings.cache && module.cache.response[url] !== undefined) {
module.debug('Pulling response from cache');
module.request = module.create.request();
module.request.resolveWith(context, [ module.cache.response[url] ]);
return;
}

if( module.is.loading() ) {
// throttle additional requests
module.timer = setTimeout(function() {
Expand Down Expand Up @@ -377,6 +391,11 @@ $.api = $.fn.api = function(parameters) {
;
module.debug('API Response Received', response);

if(settings.cache && url) {
module.cache.response[url] = response;
module.debug('Caching response for next lookup', module.cache);
}

if(translatedResponse) {
module.debug('Modified API response in onResponse callback', settings.onResponse, translatedResponse, response);
response = translatedResponse;
Expand Down Expand Up @@ -442,6 +461,14 @@ $.api = $.fn.api = function(parameters) {
},

create: {

cache: function() {
module.verbose('Creating local response cache');
module.cache = {
response: {}
};
},

// api promise
request: function() {
return $.Deferred()
Expand Down Expand Up @@ -821,6 +848,9 @@ $.api.settings = {
verbose : false,
performance : true,

// cache
cache : false,

// event binding
on : 'auto',
filter : '.disabled',
Expand Down

0 comments on commit f2ced9d

Please sign in to comment.