- From: Nikunj R. Mehta <nikunj.mehta@oracle.com>
- Date: Fri, 1 Jan 2010 10:17:50 -0800
- To: Joseph Pecoraro <joepeck02@gmail.com>
- Cc: public-webapps@w3.org
Hi Joseph,
I have updated the examples with the new API. Please let me know if
you see any issues now. Thanks a lot for the detailed feedback.
Nikunj
On Dec 10, 2009, at 1:02 PM, Joseph Pecoraro wrote:
> 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);
> ----
Nikunj Mehta
http://blog.o-micron.com
Received on Friday, 1 January 2010 18:19:19 UTC