http-headers-js
Version:
Http constants for mime-types, headers, tracking-statuses, methods, content-encodings, csp, response codes and cache-control instructions
202 lines (132 loc) • 6.03 kB
Markdown
# Http constants for mime-types, headers, tracking-statuses, methods, content-encodings, csp, response codes and cache-control instructions
> Current version 1.0.10
Provides standard and common non-standard http headers, mime-types, methods, content codings, response statuses, CSP directives and sources, cache-control instructions and tracking statuses.
All headers are capitalized, hence `Access-Control-Request-Method`
All mime-types are lowercase, hence `video/mpeg`
All content codings are lowercase, hence `deflate`
All methods are uppercase, hence `POST`
All response codes are integer numbers, hence `404`
All Cache-Control instructions are lowercase, hence `min-fresh`
All CSP directives and sources are lowercase, hence `unsafe-eval`
Key names constructed from uppercase values, `-`, `+` and `.` substituted with `_`, hence
Headers.STRICT_TRANSPORT_SECURITY //Strict-Transport-Security
MimeTypes.Application.XOP_XML //application/xop+xml
MimeTypes.Model.X3D_VRML //model/x3d+vrml
ContentEncodings.X_GZIP //x-gzip
MimeTypes.Image.VND_WAP_WBMP //image/vnd.wap.wbmp
ResponseCodes.I_AM_A_TEAPOT //418
CacheControls.MAX_AGE //max-age
CSPS.UNSAFE_EVAL //unsafe-eval
## Usage
Install local
npm install http-headers-js --save
Available at the moment
let {
Headers,
TrackingStatuses,
MimeTypes,
Methods,
ContentEncodings,
ResponseCodes,
CacheControls,
RespCodeIs,
CSPD,
CSPS
} = require('http-headers-js');
- Headers - headers
- TrackingStatuses - tracking statuses
- Methods - http methods
- ContentEncodings - http content coding registry
- ResponseCodes - response codes
- CacheControls - Cache-Control instructions
- CSPD - CSP directives
- CSPS - some CSP source values
- MimeTypes - yes, mime types, fair and square
- RespCodeIs - set of functions to get type of response code
### Constants
Import and usage, as exemplified by express js middleware
let { Headers } = require('http-headers-js');
/* code */
isLoggedIn: function (req, res, next) {
let token = req.get(Headers.AUTHORIZATION);
if (token == null) {
return res.status(401).send("Not authorized");
}
OAuth.get(token) //some library to check token
.then(function (user) {
if (user == null) {
return res.status(401).send("Not authorized");
}
next();
})
}
/*code*/
const { MimeTypes } = require('http-headers-js');
class ExtensionFilter {
static getExtensionByContentType (contentType) {
switch (contentType) {
case MimeTypes.Application.PDF:
return "PDF";
case MimeTypes.Vnd.MS.WORD_2007:
return "DOCX";
defaut:
return null;
}
}
}
To use mime types first access type, then subtype:
MimeTypes.Application.SOAP_XML //application/soap+xml
MimeTypes.Application.X.WWW_FORM_URLENCODED //application/x-www-form-urlencoded
MimeTypes.X.WWW_FORM_URLENCODED //application/x-www-form-urlencoded
MimeTypes.Vnd.Od.TEXT //application/vnd.oasis.opendocument.text
MimeTypes.Vnd.MS.EXCEL //application/vnd.ms-excel
MimeTypes.Vnd.MS.EXCEL_2007 //application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
MimeTypes.Pkcs.X_PKCS7_CERTREQRESP //application/x-pkcs7-certreqresp
There are also two duplicates for mime types. One is `MimeTypes.X` and `MimeType.Application.X`, another is `MimeTypes.Pkcs` and `MimeTypes.Application.Pkcs`
CSPS contains two sets of values - common and with QTD suffix. QTD values are quoted:
CSPS.SELF //string "self"
CSPS.SELF_QTD //string "'self'"
### Functions
There are 5 functions to check response code:
- `RespCodeIs.Info`
- `RespCodeIs.Success`
- `RespCodeIs.Redirect`
- `RespCodeIs.ClientErr`
- `RespCodeIs.ServerErr`
All functions take number argument, like
RespCodeIs.ServerErr(500) //return true
RespCodeIs.ServerErr(ResponseCodes.INTERNAL_SERVER_ERROR) //return true
RespCodeIs.ClientErr(ResponseCodes.USE_PROXY) //return false
## Dependencies
No additional dependencies for production, `mocha` and `chai` for testing.
## Test
npm test
## Development
See [bitbucket repository](https://bitbucket.org/sypachev_s_s/http-headers-js/)
## Direct Contacts
Issues? Write to `sypachev_s_s@mail.ru`
## What's new
### 1.0.10
- Added more testing
### 1.0.9
- Added CSP directives and common sources
### 1.0.8
- Added `CacheControls`
- Support older engines
### 1.0.7
- Added `RespCodeIs`
- Headers and Methods sorted in src
### 1.0.6
- Added `ResponseCodes`
### 1.0.5
- Added `Early-Data`, `Downlink`, `Save-Data`, `Referrer-Policy`, `Content-Security-Policy-Report-Only`,
`Expect-CT`, `Public-Key-Pins-Report-Only`, `X-Download-Options`, `X-Permitted-Cross-Domain-Policies`, `Sec-WebSocket-...`, `Large-Allocation`, `Server-Timing`, `SourceMap`,
`X-DNS-Prefetch-Control`, `X-Robots-Tag`
- Fixed `VIEWPORT-WIDTH` to `VIEWPORT_WIDTH`, `3GPP` to `_3GPP` (`_3GPP2`), `VND.RN_REALAUDIO` to `VND_RN_REALAUDIO`, `VND.WAVE` to `VND_WAVE`, `VND.MICROSOFT.ICON` to `VND_MICROSOFT_ICON`, `VND.WAP.WBMP` to `VND_WAP_WBMP`
- Autotest key names
### 1.0.3
- Added `Content-Version`, `Derived-From`, `Alternates`, `MIME-Version`, `Public`, `Title` headers
- Added `ContentEncodings`
### 1.0.2
- Added `Methods`
- Added `Last-Event-ID`, `DPR`, `Content-DPR`, `Accept-CH`, `Accept-CH-Lifetime`, `Width`, `Viewport-Width`, `Keep-Alive` headers