Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface DarukContext

Hierarchy

  • Context
    • DarukContext

Indexable

[key: string]: any

Custom properties.

Index

Properties

URL

URL: URL

Get WHATWG parsed URL object.

accept

accept: Accepts

app

app: Application

assert

assert: typeof httpAssert

Similar to .throw(), adds assertion.

this.assert(this.user, 401, 'Please login!');

See: https://github.com/jshttp/http-assert

body

body: any

Get/Set response body.

cookies

cookies: Cookies

etag

etag: string

Get/Set the ETag of a response. This will normalize the quotes if necessary.

this.response.etag = 'md5hashsum';
this.response.etag = '"md5hashsum"';
this.response.etag = 'W/"123456789"';
param
api

public

fresh

fresh: boolean

Check if the request is fresh, aka Last-Modified and/or the ETag still match.

header

header: any

Return request header.

headerSent

headerSent: boolean

Check if a header has been written to the socket.

headers

headers: any

Return request header, alias as request.header

host

host: string

Parse the "Host" header field host and support X-Forwarded-Host when a proxy is enabled.

hostname

hostname: string

Parse the "Host" header field hostname and support X-Forwarded-Host when a proxy is enabled.

href

href: string

Get full request URL.

idempotent

idempotent: boolean

Check if the request is idempotent.

ip

ip: string

Request remote address. Supports X-Forwarded-For when app.proxy is true.

ips

ips: string[]

When app.proxy is true, parse the "X-Forwarded-For" ip address list.

For example if the value were "client, proxy1, proxy2" you would receive the array ["client", "proxy1", "proxy2"] where "proxy2" is the furthest down-stream.

lastModified

lastModified: Date

Get the Last-Modified date in Date form, if it exists. Set the Last-Modified date using a string or a Date.

this.response.lastModified = new Date();
this.response.lastModified = '2013-09-13';

length

length: number

Return parsed response Content-Length when present. Set Content-Length field to n.

message

message: string

Get response status message

method

method: string

Get/Set request method.

origin

origin: string

Get origin of URL.

originalUrl

originalUrl: string

path

path: string

Get request pathname. Set pathname, retaining the query-string when present.

protocol

protocol: string

Return the protocol string "http" or "https" when requested with TLS. When the proxy setting is enabled the "X-Forwarded-Proto" header field will be trusted. If you're running behind a reverse proxy that supplies https for you this may be enabled.

query

query: any

Get parsed query-string. Set query-string as an object.

querystring

querystring: string

Get/Set query string.

req

req: IncomingMessage

request

request: DarukRequest

res

res: ServerResponse

Optional respond

respond: undefined | false | true

To bypass Koa's built-in response handling, you may explicitly set ctx.respond = false;

response

response: Response

search

search: string

Get the search string. Same as the querystring except it includes the leading ?.

Set the search string. Same as response.querystring= but included for ubiquity.

secure

secure: boolean

Short-hand for:

this.protocol == 'https'

socket

socket: Socket

Return the request socket.

stale

stale: boolean

Check if the request is stale, aka "Last-Modified" and / or the "ETag" for the resource has changed.

state

state: StateT

status

status: number

Get/Set response status code.

subdomains

subdomains: string[]

Return subdomains as an array.

Subdomains are the dot-separated parts of the host before the main domain of the app. By default, the domain of the app is assumed to be the last two parts of the host. This can be changed by setting app.subdomainOffset.

For example, if the domain is "tobi.ferrets.example.com": If app.subdomainOffset is not set, this.subdomains is ["ferrets", "tobi"]. If app.subdomainOffset is 3, this.subdomains is ["tobi"].

type

type: string

Return the response mime type void of parameters such as "charset".

Set Content-Type response header with type through mime.lookup() when it does not contain a charset.

Examples:

this.type = '.html';
this.type = 'html';
this.type = 'json';
this.type = 'application/json';
this.type = 'png';

url

url: string

Get/Set request URL.

writable

writable: boolean

Checks if the request is writable. Tests for the existence of the socket as node sometimes does not set it.

Methods

accepts

  • accepts(): string[] | boolean
  • accepts(...types: string[]): string | boolean
  • accepts(types: string[]): string | boolean
  • Check if the given type(s) is acceptable, returning the best match when true, otherwise undefined, in which case you should respond with 406 "Not Acceptable".

    The type value may be a single mime type string such as "application/json", the extension name such as "json" or an array ["json", "html", "text/plain"]. When a list or array is given the best match, if any is returned.

    Examples:

    // Accept: text/html
    this.accepts('html');
    // => "html"
    
    // Accept: text/*, application/json
    this.accepts('html');
    // => "html"
    this.accepts('text/html');
    // => "text/html"
    this.accepts('json', 'text');
    // => "json"
    this.accepts('application/json');
    // => "application/json"
    
    // Accept: text/*, application/json
    this.accepts('image/png');
    this.accepts('png');
    // => undefined
    
    // Accept: text/*;q=.5, application/json
    this.accepts(['html', 'json']);
    this.accepts('html', 'json');
    // => "json"

    Returns string[] | boolean

  • Parameters

    • Rest ...types: string[]

    Returns string | boolean

  • Parameters

    • types: string[]

    Returns string | boolean

acceptsCharsets

  • acceptsCharsets(): string[] | boolean
  • acceptsCharsets(...charsets: string[]): string | boolean
  • acceptsCharsets(charsets: string[]): string | boolean
  • Return accepted charsets or best fit based on charsets.

    Given Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5 an array sorted by quality is returned:

    ['utf-8', 'utf-7', 'iso-8859-1']

    Returns string[] | boolean

  • Parameters

    • Rest ...charsets: string[]

    Returns string | boolean

  • Parameters

    • charsets: string[]

    Returns string | boolean

acceptsEncodings

  • acceptsEncodings(): string[] | boolean
  • acceptsEncodings(...encodings: string[]): string | boolean
  • acceptsEncodings(encodings: string[]): string | boolean
  • Return accepted encodings or best fit based on encodings.

    Given Accept-Encoding: gzip, deflate an array sorted by quality is returned:

    ['gzip', 'deflate']

    Returns string[] | boolean

  • Parameters

    • Rest ...encodings: string[]

    Returns string | boolean

  • Parameters

    • encodings: string[]

    Returns string | boolean

acceptsLanguages

  • acceptsLanguages(): string[] | boolean
  • acceptsLanguages(...langs: string[]): string | boolean
  • acceptsLanguages(langs: string[]): string | boolean
  • Return accepted languages or best fit based on langs.

    Given Accept-Language: en;q=0.8, es, pt an array sorted by quality is returned:

    ['es', 'pt', 'en']

    Returns string[] | boolean

  • Parameters

    • Rest ...langs: string[]

    Returns string | boolean

  • Parameters

    • langs: string[]

    Returns string | boolean

append

  • append(field: string, val: string | string[]): void
  • Append additional header field with value val.

    Examples:

    this.append('Link', ['<http://localhost/>', '<http://localhost:3000/>']);
    this.append('Set-Cookie', 'foo=bar; Path=/; HttpOnly');
    this.append('Warning', '199 Miscellaneous warning');

    Parameters

    • field: string
    • val: string | string[]

    Returns void

attachment

  • attachment(filename: string): void
  • Set Content-Disposition header to "attachment" with optional filename.

    Parameters

    • filename: string

    Returns void

flushHeaders

  • flushHeaders(): void
  • Flush any set headers, and begin the body

    Returns void

get

  • get(field: string): string
  • Return request header.

    The Referrer header field is special-cased, both Referrer and Referer are interchangeable.

    Examples:

    this.get('Content-Type');
    // => "text/plain"
    
    this.get('content-type');
    // => "text/plain"
    
    this.get('Something');
    // => undefined

    Parameters

    • field: string

    Returns string

inspect

  • inspect(): any
  • util.inspect() implementation, which just returns the JSON output.

    Returns any

is

  • is(...types: string[]): string | boolean
  • is(types: string[]): string | boolean
  • Check if the incoming request contains the "Content-Type" header field, and it contains any of the give mime types. If there is no request body, null is returned. If there is no content type, false is returned. Otherwise, it returns the first type that matches.

    Examples:

    // With Content-Type: text/html; charset=utf-8
    this.is('html'); // => 'html'
    this.is('text/html'); // => 'text/html'
    this.is('text/*', 'application/json'); // => 'text/html'
    
    // When Content-Type is application/json
    this.is('json', 'urlencoded'); // => 'json'
    this.is('application/json'); // => 'application/json'
    this.is('html', 'application/*'); // => 'application/json'
    
    this.is('html'); // => false

    Parameters

    • Rest ...types: string[]

    Returns string | boolean

  • Parameters

    • types: string[]

    Returns string | boolean

onerror

  • onerror(err: Error): void
  • Default error handling.

    Parameters

    • err: Error

    Returns void

redirect

  • redirect(url: string, alt?: undefined | string): void
  • Perform a 302 redirect to url.

    The string "back" is special-cased to provide Referrer support, when Referrer is not present alt or "/" is used.

    Examples:

    this.redirect('back'); this.redirect('back', '/index.html'); this.redirect('/login'); this.redirect('http://google.com');

    Parameters

    • url: string
    • Optional alt: undefined | string

    Returns void

remove

  • remove(field: string): void
  • Remove header field.

    Parameters

    • field: string

    Returns void

set

  • set(field: {}): void
  • set(field: string, val: string | string[]): void
  • Set header field to val, or pass an object of header fields.

    Examples:

    this.set('Foo', ['bar', 'baz']); this.set('Accept', 'application/json'); this.set({ Accept: 'text/plain', 'X-API-Key': 'tobi' });

    Parameters

    • field: {}
      • [key: string]: string

    Returns void

  • Parameters

    • field: string
    • val: string | string[]

    Returns void

throw

  • throw(message: string, code?: undefined | number, properties?: undefined | {}): never
  • throw(status: number): never
  • throw(...properties: Array<number | string | {}>): never
  • Throw an error with msg and optional status defaulting to 500. Note that these are user-level errors, and the message may be exposed to the client.

    this.throw(403) this.throw('name required', 400) this.throw(400, 'name required') this.throw('something exploded') this.throw(new Error('invalid'), 400); this.throw(400, new Error('invalid'));

    See: https://github.com/jshttp/http-errors

    Parameters

    • message: string
    • Optional code: undefined | number
    • Optional properties: undefined | {}

    Returns never

  • Parameters

    • status: number

    Returns never

  • Parameters

    • Rest ...properties: Array<number | string | {}>

    Returns never

toJSON

  • toJSON(): any
  • Return JSON representation.

    Here we explicitly invoke .toJSON() on each object, as iteration will otherwise fail due to the getters and cause utilities such as clone() to fail.

    Returns any

vary

  • vary(field: string): void
  • Vary on field.

    Parameters

    • field: string

    Returns void

Generated using TypeDoc