- From: Joseph Pecoraro <joepeck02@gmail.com>
- Date: Thu, 10 Dec 2009 16:02:11 -0500
- To: public-webapps@w3.org
Again the examples seem out of date. I'll update the remaining examples. Sorry for not consolidating all of them into one email!
- 4.1.1. Examples
http://dev.w3.org/2006/webapi/DataCache/#examples
The second example seems to be out of date for a number of reasons.
[[
var uri = ...
var cache = window.openDataCache();
var local = function(request, response) {
response.statusCode = 200;
response.statusLine = 'HTTP/1.1 OK';
response.bodyText = ...
response.send();
};
window.navigator.registerOfflineHandler(uri, local);
var txn = cache.offlineTransaction(function(txn) {
txn.capture(uri, '', null, ['GET']);
txn.commit();
});
]]
The issues I see are:
- cache.offlineTransaction does not return a value
- there is no commit() in an offlineTransaction
- response.X = ...; is not valid, use the IDL's setX functions
- statusCode and statusLine/Text are both set with the IDL's setStatus()
I would have expected the example to look more like the following:
----
var uri = ...
var cache = window.openDataCache();
var local = function(request, response) {
response.setStatus(200, 'HTTP/1.1 OK');
repsonse.setResponseText(...);
response.send();
};
window.navigator.registerOfflineHandler(uri, local);
cache.offlineTransaction(function(txn) {
txn.capture(uri, '', null, ['GET']);
});
----
Also "localServer", "interceptor", or "intercept" (used in a later example) may be better names than "local" for the interceptor function. But that is more of a style issue.
- 4.1.1. Examples
http://dev.w3.org/2006/webapi/DataCache/#examples
The third example seems to be out of date for a number of reasons.
[[
cache = window.openDataCache();
var intercept = function(request, response) {
if (...) {
// validation fails
response.setStatus(400, 'HTTP/1.1 Bad Request');
response.send();
return;
}
cache.offlineTransaction(function(txn) {
txn.oncommitted = function() {
response.bodyText = request.bodyText;
response.headers['Content-Type'] = type;
response.statusCode = 200;
response.statusLine = 'HTTP/1.1 OK';
response.send();
});
txn.capture(request.targetURL, request.bodyText, request.headers['Content-Type']);
txn.commit();
});
};
var review = function(request, response) {
cache.offlineTransaction(function(txn) {
txn.capture(request.targetURL, response.bodyText, response.headers['Content-Type']);
txn.commit();
});
};
window.navigator.registerOfflineHandler(uri, intercept, review);
]]
The issues I see are:
- use `var` for the cache variable in the Window's scope
- `uri` variable is not declared in the Window's scope, only the Worker's
- `type` variable is not declared at all, I'll leave that blank, as I don't understand the example's intent
- there is no commit() in an offlineTransaction
- response.X = ...; is not valid, use the IDL's setX functions (like at the top)
- request.targetURL should be request.target
- the surrounding text says the interceptor is called on PUT, but no dynamic method is provided
I would have expected the example to look more like the following:
----
var uri = ...
var cache = window.openDataCache();
var intercept = function(request, response) {
if (...) {
// validation fails
response.setStatus(400, 'HTTP/1.1 Bad Request');
response.send();
return;
}
cache.offlineTransaction(function(txn) {
txn.oncommitted = function() {
response.setStatus(200, 'HTTP/1.1 OK');
response.setResponseText(request.bodyText);
response.setResponseHeader('Content-Type', ...);
response.send();
});
txn.capture(request.target, request.bodyText, request.headers['Content-Type'], ['PUT']);
});
};
var review = function(request, response) {
cache.offlineTransaction(function(txn) {
txn.capture(request.target, response.bodyText, response.headers['Content-Type'], ['PUT']);
});
};
window.navigator.registerOfflineHandler(uri, intercept, review);
----
Received on Thursday, 10 December 2009 21:02:56 UTC