README
Syncano Middleware Common
About
Collection of common utilities for sockets in syncano that can be used in conjunction with @aexol/syncano-middleware lib.
Installation
npm install @aexol/syncano-middleware-common
Usage
API Reference
Modules
- @aexol/syncano-middleware-common
Common middlewares for syncano.
Functions
- allowedMethods(fn, allowed) ⇒
function
Checks if request is allowed based on request method.
- loggedIn(fn, opts) ⇒
Object
Checks if user is logged in, returning response with 403 and message if not.
- parseGETFields(fn) ⇒
function
Parses args in GET request as json if possible. If not, leaves them unchanged.
- replaceBuffers(fn, opts) ⇒
Object
Replace all buffers in socket args.
- rootAccount(fn, opts) ⇒
Object
Root account check middleware.
- toBool(fn, fields)
Attempts to cast certain fields in request to bool. Can be useful to handling both GET and POST input on endpoint as GET endpoints will always have a string.
Fields that are either
true
or'true'
will evaluate to true. Everything else will be considered false.- toNumber(fn, fields)
Attempts to cast certain fields in request to number. Can be useful to handling both GET and POST input on endpoint as GET endpoints will always have a string.
@aexol/syncano-middleware-common
Common middlewares for syncano.
function
allowedMethods(fn, allowed) ⇒ Checks if request is allowed based on request method.
Kind: global function
Access: public
Param | Type | Description |
---|---|---|
fn | function | Object |
Either next function in chain or object with key: value pairs of method and handler function for method type. |
allowed | Array |
List of allowed methods in case of fn being function. Optional. |
Example
import serve, {response} from '@aexol/syncano-middleware'
import {allowedMethods} from '@aexol/syncano-middleware-common'
async function hello(ctx, syncano) {
return response.success({message: `Hello, ${ctx.meta.user.username}`)
}
export default ctx => serve(ctx, allowedMethods(hello, ['GET']))
Example
import serve, {response} from '@aexol/syncano-middleware'
import {allowedMethods} from '@aexol/syncano-middleware-common'
async function hello(ctx, syncano) {
return response.success({message: `Hello, ${ctx.meta.user.username}`)
}
export default ctx => serve(ctx, allowedMethods({
GET: hello,
POST: hello
}))
Object
loggedIn(fn, opts) ⇒ Checks if user is logged in, returning response with 403 and message if not.
Kind: global function
Access: public
Param | Type | Description |
---|---|---|
fn | function |
Next function in request chain |
opts | Object |
Additional options. Optional |
opts.message | String |
Alternative message if user is not logged in. |
Example
import serve, {response} from '@aexol/syncano-middleware'
import {loggedIn} from '@aexol/syncano-middleware-common'
async function hello(ctx, syncano) {
return response.success({message: `Hello, ${ctx.meta.user.username}`)
}
export default ctx => serve(ctx, loggedIn(hello))
function
parseGETFields(fn) ⇒ Parses args in GET request as json if possible. If not, leaves them unchanged.
Kind: global function
Access: public
Param | Type | Description |
---|---|---|
fn | function |
Next function in request chain |
Example
import serve, {response} from '@aexol/syncano-middleware'
import {parseGETFields} from '@aexol/syncano-middleware-common'
async function hello(ctx, syncano) {
return response.success({message: `Hello, ${ctx.meta.user.username}`)
}
export default ctx => serve(ctx, parseGETFields(hello))
Object
replaceBuffers(fn, opts) ⇒ Replace all buffers in socket args.
Kind: global function
Access: public
Param | Type | Description |
---|---|---|
fn | function |
Handler function |
opts | Object |
Aditional opts. Optional |
opts.replaceFn | function |
If set, will be used to replace buffer contents instead of default behaviour. |
opts.exclude | Array |
List of args to skip from replacing. |
opts.encoding | String |
Input encoding of buffer in args. |
opts.inputEncoding | String |
Output encoding of buffer in args. Unless, replaceFn was set, this middleware replaces all buffers with it's string content in place. Modifies ctx.args. |
Example
import serve, {response} from '@aexol/syncano-middleware'
import {replaceBuffers} from '@aexol/syncano-middleware-common'
async function hello(ctx, syncano) {
return response.success({message: 'ok'})
}
export default ctx => serve(ctx, replaceBuffers(hello))
Object
rootAccount(fn, opts) ⇒ Root account check middleware.
Kind: global function
Access: public
Param | Type | Description |
---|---|---|
fn | function |
Next function in chain. |
opts | Object |
Additional options. Optional. |
opts.message | String |
Custom error message if not root account. |
opts.condFn | function |
Check for root only if function evaluates to true. |
Example
import serve, {response} from '@aexol/syncano-middleware'
import {rootAccount} from '@aexol/syncano-middleware-common'
async function hello(ctx, syncano) {
return response.success({message: `Hello, ${ctx.meta.admin.email}`)
}
export default ctx => serve(ctx, rootAccount(hello))
toBool(fn, fields)
Attempts to cast certain fields in request to bool. Can be useful to handling both GET and POST input on endpoint as GET endpoints will always have a string.
Fields that are either true
or 'true'
will evaluate to true.
Everything else will be considered false.
Kind: global function
Param | Type | Description |
---|---|---|
fn | function |
Next function in chain |
fields | Array |
fields to cast to bool |
toNumber(fn, fields)
Attempts to cast certain fields in request to number. Can be useful to handling both GET and POST input on endpoint as GET endpoints will always have a string.
Kind: global function
Param | Type | Description |
---|---|---|
fn | function |
Next function in chain |
fields | Array |
fields to cast to number |