Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

SHIORI/3.x Parser/Container

License

NotificationsYou must be signed in to change notification settings

Narazaka/shiorijk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

npmnpm licensenpm download totalnpm download by monthBowerBowerFOSSA Status

Dependency StatusdevDependency StatusTravis Build StatusAppVeyor Build Statuscodecov.ioCodacy Badge

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

example/example.ts

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.

API Document

Seehttp://narazaka.github.io/shiorijk/ or the source inlib/.

Also you can found the code snippets intest/.

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 underZlib License.

FOSSA Status

About

SHIORI/3.x Parser/Container

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors4

  •  
  •  
  •  
  •  

[8]ページ先頭

©2009-2025 Movatter.jp