UNPKG

http-tag

Version:

Simplified Writing Of HTTP Message Text

68 lines (53 loc) 2.19 kB
# HTTPTag ## Description The **HTTPTag** is a Template literal tag to easily write HTTP Message texts. ```javascript const HTTPTag = require('http-tag') const xHeader = 'Custom-Header' socket.write( HTTPTag` GET / HTTP/1.1 X-Header: ${xHeader} ` ) ``` ## Installation Simple as: `npm install --save http-tag` ## Usage Well, as you see above, its very simple to use: ```javascript HTTPTag` GET / HTTP/1.1 X-Header: ${xHeader} ` ``` You dont need to manually handle **CR** and **LF** characters before **end of heade** (start of body) section of a message. Before **End Of A Message Head**, all global CRLF, CR and LF characters, i.e. that are not provided as **expressions** to tagged template, will be replaced with a CRLF each, including their trailing spaces (**considered only sequences of ' ' characters**). Leading [Whitespace Characters][mdn_whitespace] - `\n, \r \t ' ' ...` of a hall string will be trimed: ```javascript HTTPTag` \r\n \t // this will be trimed HTTP/1.1 200 OK ` ``` Note that We do not handle exactly the format of **HTTP Messages**, instead we support its light-writing, so the comments above considered as valid input. As Globaly all CR's and LF's before **end of a message head** will be replaced by CRLF's, you need a way to also pass this characters **Without Any Modification** to the HTTP message head section, and maybe also some trailing spaces, for this scenario you need to pass them in expressions to tagged template: ```javascript HTTPTag` GET / HTTP/1.1 ${' ' + 'This CR will not be merged with followed by \n character: \r'} ` ``` This Tagged Templates **MUST** conform to [Rules Of Escape Sequences][mdn_template_literal_escape_rules] defined for Template Literals, otherwise **SyntaxError** will be thrown. And Finally if after processing of a string the **end of a head** section is not encountered, we will add final CRLF(**s**) for you. [mdn_template_literal_escape_rules]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#tagged_templates_and_escape_sequences [mdn_whitespace]: https://developer.mozilla.org/en-US/docs/Glossary/Whitespace