restify.d.ts 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. // Type definitions for node.js REST framework 2.0
  2. // Project: https://github.com/mcavage/node-restify
  3. // Definitions by: Bret Little <https://github.com/blittle>
  4. // Definitions: https://github.com/borisyankov/DefinitelyTyped
  5. /// <reference path="../node/node.d.ts" />
  6. /// <reference path="../bunyan/bunyan.d.ts" />
  7. declare module "restify" {
  8. import http = require('http');
  9. import bunyan = require('bunyan');
  10. interface addressInterface {
  11. port: number;
  12. family: string;
  13. address: string;
  14. }
  15. interface Request extends http.ServerRequest {
  16. header: (key: string, defaultValue?: string) => any;
  17. accepts: (type: string) => boolean;
  18. is: (type: string) => boolean;
  19. getLogger: (component: string) => any;
  20. contentLength: number;
  21. contentType: string;
  22. href: () => string;
  23. log: bunyan.Logger;
  24. id: string;
  25. path: () => string;
  26. query: any;
  27. secure: boolean;
  28. time: number;
  29. params: any;
  30. body?: any; //available when bodyParser plugin is used
  31. isSecure: () => boolean;
  32. }
  33. interface Response extends http.ServerResponse {
  34. header: (key: string, value ?: any) => any;
  35. cache: (type?: any, options?: Object) => any;
  36. status: (code: number) => any;
  37. send: (status?: any, body?: any) => any;
  38. json: (status?: any, body?: any) => any;
  39. code: number;
  40. contentLength: number;
  41. charSet(value: string): void;
  42. contentType: string;
  43. headers: Object;
  44. id: string;
  45. }
  46. interface Server extends http.Server {
  47. use(handler: RequestHandler, ...handlers: RequestHandler[]): any;
  48. use(handler: RequestHandler[], ...handlers: RequestHandler[]): any;
  49. use(handler: RequestHandler, ...handlers: RequestHandler[][]): any;
  50. use(handler: RequestHandler[], ...handlers: RequestHandler[][]): any;
  51. post(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[]): any;
  52. post(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[]): any;
  53. post(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[][]): any;
  54. post(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[][]): any;
  55. patch(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[]): any;
  56. patch(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[]): any;
  57. patch(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[][]): any;
  58. patch(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[][]): any;
  59. put(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[]): any;
  60. put(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[]): any;
  61. put(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[][]): any;
  62. put(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[][]): any;
  63. del(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[]): any;
  64. del(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[]): any;
  65. del(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[][]): any;
  66. del(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[][]): any;
  67. get(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[]): any;
  68. get(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[]): any;
  69. get(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[][]): any;
  70. get(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[][]): any;
  71. head(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[]): any;
  72. head(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[]): any;
  73. head(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[][]): any;
  74. head(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[][]): any;
  75. name: string;
  76. version: string;
  77. log: Object;
  78. acceptable: string[];
  79. url: string;
  80. address: () => addressInterface;
  81. listen(... args: any[]): any;
  82. close(... args: any[]): any;
  83. pre(routeCallBack: RequestHandler): any;
  84. server: http.Server;
  85. }
  86. interface ServerOptions {
  87. certificate ?: string;
  88. key ?: string;
  89. formatters ?: Object;
  90. log ?: Object;
  91. name ?: string;
  92. spdy ?: Object;
  93. version ?: string;
  94. responseTimeHeader ?: string;
  95. responseTimeFormatter ?: (durationInMilliseconds: number) => any;
  96. }
  97. interface ClientOptions {
  98. accept?: string;
  99. connectTimeout?: number;
  100. dtrace?: Object;
  101. gzip?: Object;
  102. headers?: Object;
  103. log?: Object;
  104. retry?: Object;
  105. signRequest?: Function;
  106. url?: string;
  107. userAgent?: string;
  108. version?: string;
  109. }
  110. interface Client {
  111. get: (path: string, callback?: (err: any, req: Request, res: Response, obj: any) => any) => any;
  112. head: (path: string, callback?: (err: any, req: Request, res: Response) => any) => any;
  113. post: (path: string, object: any, callback?: (err: any, req: Request, res: Response, obj: any) => any) => any;
  114. put: (path: string, object: any, callback?: (err: any, req: Request, res: Response, obj: any) => any) => any;
  115. del: (path: string, callback?: (err: any, req: Request, res: Response) => any) => any;
  116. basicAuth: (username: string, password: string) => any;
  117. }
  118. interface HttpClient extends Client {
  119. get: (path?: any, callback?: Function) => any;
  120. head: (path?:any, callback?: Function) => any;
  121. post: (opts?: any, callback?: Function) => any;
  122. put: (opts?: any, callback?: Function) => any;
  123. del: (opts?: any, callback?: Function) => any;
  124. }
  125. interface ThrottleOptions {
  126. burst?: number;
  127. rate?: number;
  128. ip?: boolean;
  129. xff?: boolean;
  130. username?: boolean;
  131. tokensTable?: Object;
  132. maxKeys?: number;
  133. overrides?: Object;
  134. }
  135. interface Next {
  136. (err?: any): any;
  137. }
  138. interface RequestHandler {
  139. (req: Request, res: Response, next: Next): any;
  140. }
  141. interface CORS {
  142. (cors?: {
  143. origins?: string[];
  144. credentials?: boolean;
  145. headers?: string[];
  146. }): RequestHandler;
  147. origins: string[];
  148. ALLOW_HEADERS: string[];
  149. credentials: boolean;
  150. }
  151. export function createServer(options?: ServerOptions): Server;
  152. export function createJsonClient(options?: ClientOptions): Client;
  153. export function createStringClient(options?: ClientOptions): Client;
  154. export function createClient(options?: ClientOptions): HttpClient;
  155. export class HttpError { constructor(cause: any, message?: any); }
  156. class DefiniteHttpError {
  157. constructor(message?: any);
  158. constructor(cause: any, message?: any);
  159. }
  160. export class BadRequestError extends DefiniteHttpError {}
  161. export class UnauthorizedError extends DefiniteHttpError {}
  162. export class PaymentRequiredError extends DefiniteHttpError {}
  163. export class ForbiddenError extends DefiniteHttpError {}
  164. export class NotFoundError extends DefiniteHttpError {}
  165. export class MethodNotAllowedError extends DefiniteHttpError {}
  166. export class NotAcceptableError extends DefiniteHttpError {}
  167. export class ProxyAuthenticationRequiredError extends DefiniteHttpError {}
  168. export class RequestTimeoutError extends DefiniteHttpError {}
  169. export class ConflictError extends DefiniteHttpError {}
  170. export class GoneError extends DefiniteHttpError {}
  171. export class LengthRequiredError extends DefiniteHttpError {}
  172. export class RequestEntityTooLargeError extends DefiniteHttpError {}
  173. export class RequesturiTooLargeError extends DefiniteHttpError {}
  174. export class UnsupportedMediaTypeError extends DefiniteHttpError {}
  175. export class RequestedRangeNotSatisfiableError extends DefiniteHttpError {}
  176. export class ExpectationFailedError extends DefiniteHttpError {}
  177. export class ImATeapotError extends DefiniteHttpError {}
  178. export class UnprocessableEntityError extends DefiniteHttpError {}
  179. export class LockedError extends DefiniteHttpError {}
  180. export class FailedDependencyError extends DefiniteHttpError {}
  181. export class UnorderedCollectionError extends DefiniteHttpError {}
  182. export class UpgradeRequiredError extends DefiniteHttpError {}
  183. export class PreconditionRequiredError extends DefiniteHttpError {}
  184. export class TooManyRequestsError extends DefiniteHttpError {}
  185. export class RequestHeaderFieldsTooLargeError extends DefiniteHttpError {}
  186. export class InternalServerError extends DefiniteHttpError {}
  187. export class NotImplementedError extends DefiniteHttpError {}
  188. export class BadGatewayError extends DefiniteHttpError {}
  189. export class ServiceUnavailableError extends DefiniteHttpError {}
  190. export class GatewayTimeoutError extends DefiniteHttpError {}
  191. export class HttpVersionNotSupportedError extends DefiniteHttpError {}
  192. export class VariantAlsoNegotiatesError extends DefiniteHttpError {}
  193. export class InsufficientStorageError extends DefiniteHttpError {}
  194. export class BandwidthLimitExceededError extends DefiniteHttpError {}
  195. export class NotExtendedError extends DefiniteHttpError {}
  196. export class NetworkAuthenticationRequiredError extends DefiniteHttpError {}
  197. export class RestError extends DefiniteHttpError {}
  198. export class PreconditionFailedError extends RestError {}
  199. export class BadDigestError extends RestError {}
  200. export class BadMethodError extends RestError {}
  201. export class InternalError extends RestError {}
  202. export class InvalidArgumentError extends RestError {}
  203. export class InvalidContentError extends RestError {}
  204. export class InvalidCredentialsError extends RestError {}
  205. export class InvalidHeaderError extends RestError {}
  206. export class InvalidVersionError extends RestError {}
  207. export class MissingParameterError extends RestError {}
  208. export class NotAuthorizedError extends RestError {}
  209. export class RequestExpiredError extends RestError {}
  210. export class RequestThrottledError extends RestError {}
  211. export class ResourceNotFoundError extends RestError {}
  212. export class WrongAcceptError extends RestError {}
  213. export function acceptParser(parser: any): RequestHandler;
  214. export function authorizationParser(): RequestHandler;
  215. export function dateParser(skew?: number): RequestHandler;
  216. export function queryParser(options?: Object): RequestHandler;
  217. export function urlEncodedBodyParser(options?: Object): RequestHandler[];
  218. export function jsonp(): RequestHandler;
  219. export function gzipResponse(options?: Object): RequestHandler;
  220. export function bodyParser(options?: Object): RequestHandler[];
  221. export function requestLogger(options?: Object): RequestHandler;
  222. export function serveStatic(options?: Object): RequestHandler;
  223. export function throttle(options?: ThrottleOptions): RequestHandler;
  224. export function conditionalRequest(): RequestHandler[];
  225. export function auditLogger(options?: Object): Function;
  226. export function fullResponse(): RequestHandler;
  227. export var defaultResponseHeaders : any;
  228. export var CORS: CORS;
  229. export module pre {
  230. export function pause(): RequestHandler;
  231. export function sanitizePath(options?: any): RequestHandler;
  232. export function userAgentConnection(options?: any): RequestHandler;
  233. }
  234. }