- Notifications
You must be signed in to change notification settings - Fork1
SHIORI/3.x Parser/Container
License
NotificationsYou must be signed in to change notification settings
Narazaka/shiorijk
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Do you know that SHIORI is not JS but JK ?
npm install shiorijkor
bower install shiorijkShioriJK is a library of SHIORI protocol parsers and containers implemented by Javascript (TypeScript) for making SHIORI subsystem.
import*asShioriJKfrom"shiorijk";// const ShioriJK = require("shiorijk"); // also OK// ---------- parse request ----------// parse transactionconstrequestParser=newShioriJK.Shiori.Request.Parser();constrequestStr="GET SHIORI/3.0\r\n"+"Charset: UTF-8\r\n"+"Sender: embryo\r\n"+"ID: OnBIFFComplete\r\n"+"Reference0: 2\r\n"+"Reference1: 1024\r\n"+"Reference2: mail.example.com\r\n"+"Reference3: 1\r\n"+"Reference4: Subject: foo\x01X-Mailer: sendmail\x02Subject: bar\x01X-Mailer: Sylpheed\r\n"+"Reference5: 512\x01512\r\n"+"Reference6: 123@example.com\x01456@example.com\r\n"+"\r\n";constrequest=requestParser.parse(requestStr);console.log(request.request_line.method==="GET");// request line infoconsole.log(request.headers.get("ID")==="OnBIFFComplete");// gets header valueconsole.log(request.headers.ID==="OnBIFFComplete");// shortcut for common headersconsole.log(request.headers.Reference(1)==="1024");// shortcut for Reference*console.log(request.headers.references().length===7);// get all referencesconsole.log((request.headers.get_separated("Reference6")||[])[0]==="123@example.com");// separated by \x01console.log((request.headers.get_separated2("Reference4")||[])[1][0]==="Subject: bar");// separated by \x01 and \x02// parse chunks like HTTPletparseResult;parseResult=requestParser.parse_chunk("GET SHIORI/3.0\r\nCharset: UTF-8\r\n");console.log(parseResult.state==="continue");parseResult=requestParser.parse_chunk("ID: version\r\n\r\n");console.log(parseResult.state==="end");console.log(parseResult.results.length===1);console.log(parseResult.results[0].headers.ID==="version");// parse linesparseResult=requestParser.parse_lines(["GET SHIORI/3.0","Charset: UTF-8"]);console.log(parseResult.state==="continue");parseResult=requestParser.parse_lines(["ID: version",""]);console.log(parseResult.state==="end");console.log(parseResult.results[0].headers.ID==="version");// ---------- parse response ----------constresponseParser=newShioriJK.Shiori.Response.Parser();constresponseStr="SHIORI/3.0 200 OK\r\n"+"Sender: ikaga\r\n"+"Charset: UTF-8\r\n"+"Value: 8.2.8\r\n"+"\r\n";constresponse=responseParser.parse(responseStr);console.log(response.headers.Value==="8.2.8");// also you can parse by chunks and lines// ---------- build request ----------constrequest2=newShioriJK.Message.Request({request_line:{method:"GET",version:"3.0"},headers:{Charset:"UTF-8",Sender:"embryo",},});// can set after initializerequest2.headers.set("ID","version");console.log(request2.toString()==="GET SHIORI/3.0\r\nCharset: UTF-8\r\nSender: embryo\r\nID: version\r\n\r\n");// ---------- build response ----------constresponse2=newShioriJK.Message.Response({status_line:{code:200,version:"3.0"},headers:{Charset:"UTF-8",Sender:"ikaga",Value:"8.2.8",},});console.log(response2.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 implementationSanaJK and Ukagaka Baseware implementationIkagaka that is using ShioriJK.
Seehttp://narazaka.github.io/shiorijk/ or the source inlib/.
Also you can found the code snippets intest/.
- 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).
This is released underZlib License.
About
SHIORI/3.x Parser/Container
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
No packages published
Uh oh!
There was an error while loading.Please reload this page.
Contributors4
Uh oh!
There was an error while loading.Please reload this page.