ShioriJK - SHIORI/3.x Parser/Container
Do you know that SHIORI is not JS but JK ?
Installation
npm install shiorijk
or
bower install shiorijk
What is ShioriJK ?
ShioriJK is a library of SHIORI protocol parsers and containers implemented by Javascript (TypeScript) for making SHIORI subsystem.
Usage overview
;// const ShioriJK = require("shiorijk"); // also OK // ---------- parse request ---------- // parse transaction;;;console.logrequest.request_line.method === "GET"; // request line infoconsole.logrequest.headers.get"ID" === "OnBIFFComplete"; // gets header valueconsole.logrequest.headers.ID === "OnBIFFComplete"; // shortcut for common headersconsole.logrequest.headers.Reference1 === "1024"; // shortcut for Reference*console.logrequest.headers.references.length === 7; // get all referencesconsole.logrequest.headers.get_separated"Reference6" || === "123@example.com"; // separated by \x01console.logrequest.headers.get_separated2"Reference4" || === "Subject: bar"; // separated by \x01 and \x02 // parse chunks like HTTP;parseResult = requestParser.parse_chunk"GET SHIORI/3.0\r\nCharset: UTF-8\r\n";console.logparseResult.state === "continue";parseResult = requestParser.parse_chunk"ID: version\r\n\r\n";console.logparseResult.state === "end";console.logparseResult.results.length === 1;console.logparseResult.results.headers.ID === "version"; // parse linesparseResult = requestParser.parse_lines;console.logparseResult.state === "continue";parseResult = requestParser.parse_lines;console.logparseResult.state === "end";console.logparseResult.results.headers.ID === "version"; // ---------- parse response ---------- ;;;console.logresponse.headers.Value === "8.2.8"; // also you can parse by chunks and lines // ---------- build request ---------- ; // can set after initializerequest2.headers.set"ID", "version"; console.logrequest2.toString === "GET SHIORI/3.0\r\nCharset: UTF-8\r\nSender: embryo\r\nID: version\r\n\r\n"; // ---------- build response ---------- ; console.logresponse2.toString === "SHIORI/3.0 200 OK\r\nCharset: UTF-8\r\nSender: ikaga\r\nValue: 8.2.8\r\n\r\n";
MORE: See the SHIORI implementation SanaJK and Ukagaka Baseware implementation Ikagaka that is using ShioriJK.
API Document
See http://narazaka.github.io/shiorijk/ or the source in lib/.
Also you can found the code snippets in test/.
History
v1.0.0
- CoffeeScript -> TypeScript
- Basic JavaScript API is not changed.
- null-unioned type has been changed as :
Foo | null | undefined
->Foo | undefined
- The string throw that existed in some APIs has been changed to throw classes that inherited Error.
- Needs >= ES5 (so IE <= 8 needs shims).
License
This is released under Zlib License.