Add documentation for protocol module.
authorCheng Zhao <zcbenz@gmail.com>
Tue, 3 Sep 2013 10:22:40 +0000 (18:22 +0800)
committerCheng Zhao <zcbenz@gmail.com>
Tue, 3 Sep 2013 10:22:40 +0000 (18:22 +0800)
docs/README.md
docs/protocol.md [new file with mode: 0644]

index bc6816b..8d9ade3 100644 (file)
@@ -31,8 +31,9 @@ Browser side modules:
 * [menu](menu.md)
 * [menu-item](menu-item.md)
 * [power-monitor](power-monitor.md)
+* [protocol](protocol.md)
 
 Common modules:
 
 * [clipboard](clipboard.md)
-* [shell](shell.md)
\ No newline at end of file
+* [shell](shell.md)
diff --git a/docs/protocol.md b/docs/protocol.md
new file mode 100644 (file)
index 0000000..d13025d
--- /dev/null
@@ -0,0 +1,68 @@
+## Synopsis
+
+The `protocol` module can register a new protocol or intercept an existing
+protocol, so you can custom the response to the requests for vairous protocols.
+
+An example of implementing a protocol that has the same effect with the
+`file://` protocol:
+
+```javascript
+var protocol = require('protocol');
+protocol.registerProtocol('atom', function(request) {
+  var path = request.url.substr(7)
+  return new protocol.RequestFileJob(path);
+});
+```
+
+## protocol.registerProtocol(scheme, handler)
+
+* `scheme` String
+* `handler` Function
+
+Registers a custom protocol of `scheme`, the `handler` would be called with
+`handler(request)` when the a request with registered `scheme` is made.
+
+You need to return a request job in the `handler` to specify which type of
+response you would like to send.
+
+## protocol.unregisterProtocol(scheme)
+
+* `scheme` String
+
+Unregisters the custom protocol of `scheme`.
+
+## protocol.isHandledProtocol(scheme)
+
+* `scheme` String
+
+Returns whether the `scheme` can be handled already.
+
+## protocol.interceptProtocol(scheme, handler)
+
+* `scheme` String
+* `handler` Function
+
+Intercepts an existing protocol with `scheme`, returning `null` or `undefined`
+in `handler` would use the original protocol handler to handle the request.
+
+## protocol.uninterceptProtocol(scheme)
+
+* `scheme` String
+
+Unintercepts a protocol.
+
+## Class: protocol.RequestFileJob(path)
+
+* `path` String
+
+Create a request job which would query a file of `path` and set corresponding
+mime types.
+
+## Class: protocol.RequestStringJob(options)
+
+* `options` Object
+  * `mimeType` String - Default is `text/plain`
+  * `charset` String - Default is `UTF-8`
+  * `data` String
+
+Create a request job which sends a string as response.