diff --git a/docs/README.md b/docs/README.md index bc6816bd83b..8d9ade34168 100644 --- a/docs/README.md +++ b/docs/README.md @@ -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 index 00000000000..d13025df987 --- /dev/null +++ b/docs/protocol.md @@ -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.