feat: update request-promise type definition to v3 (#9855)

This commit is contained in:
Horiuchi_H
2016-06-28 18:28:02 +09:00
committed by GitHub
parent 1a69f81b17
commit 3bbe35a4cf
2 changed files with 118 additions and 35 deletions

View File

@@ -1,13 +1,13 @@
/// <reference path="request-promise.d.ts" />
import rp = require('request-promise');
import nodeRequest = require('request');
import errors = require('request-promise/errors');
rp('http://www.google.com')
.then(console.dir)
.catch(console.error);
var options: nodeRequest.Options = {
var options: rp.Options = {
uri : 'http://posttestserver.com/post.php',
method : 'POST',
json: true,
@@ -18,7 +18,39 @@ rp(options)
.then(console.dir)
.catch(console.error);
// --> Displays length of response from server after post
rp('http://google.com').finally(() => {});
// This works:
rp('http://google.com').then(console.dir);
rp('http://google.com').catch(console.error);
rp('http://google.com').then(console.dir, console.error);
// This works as well since additional methods are only used AFTER the FIRST call in the chain:
rp('http://google.com').then(console.dir).spread(console.dir);
rp('http://google.com').catch(console.error).error(console.error);
// Use .promise() in these cases:
rp('http://google.com').promise().bind(this).then(console.dir);
rp({ uri: 'http://google.com', resolveWithFullResponse: true }).then((response) => {});
rp({ uri: 'http://google.com', simple: false }).catch((reason) => {});
rp({
uri: 'http://google.com',
transform: (body: any, response: http.IncomingMessage, resolveWithFullResponse: boolean): any => {
throw new Error('Transform failed!');
}
}).catch(errors.StatusCodeError, (reason: errors.StatusCodeError) => {
// The server responded with a status codes other than 2xx.
// Check reason.statusCode
}).catch(errors.RequestError, (reason: errors.RequestError) => {
// The request failed due to technical reasons.
// reason.cause is the Error object Request would pass into a callback.
}).catch(errors.TransformError, (reason: errors.TransformError) => {
console.log(reason.cause.message); // => Transform failed!
// reason.response is the original response for which the transform operation failed
});
//Defaults tests
(() => {
@@ -46,7 +78,7 @@ rp(options)
console.log("DELETE succeeded with status %d", response.statusCode);
})
.catch(console.error);
//The following examples from https://github.com/request/request
import fs = require('fs');
import http = require('http');
@@ -71,14 +103,14 @@ request
console.log(response.headers['content-type']); // 'image/png'
})
.pipe(request.put('http://mysite.com/img.png'));
request
.get('http://mysite.com/doodle.png')
.on('error', function(err: any) {
console.log(err);
})
.pipe(fs.createWriteStream('doodle.png'));
http.createServer(function (req, resp) {
if (req.url === '/doodle.png') {
if (req.method === 'PUT') {
@@ -98,7 +130,7 @@ http.createServer(function (req, resp) {
});
var resp: http.ServerResponse;
var req: nodeRequest.Request;
var req: rp.RequestPromise;
req.pipe(request('http://mysite.com/doodle.png')).pipe(resp);
var r = request;
@@ -192,7 +224,7 @@ request({
}
console.log('Upload successful! Server responded with:', body);
});
request.get('http://some.server.com/').auth('username', 'password', false);
// or
request.get('http://some.server.com/', {
@@ -282,8 +314,8 @@ request.post({url:url, oauth:oauth}, function (e, r, body) {
, token_secret: perm_data.oauth_token_secret
};
var url = 'https://api.twitter.com/1.1/users/show.json';
var query = {
screen_name: perm_data.screen_name,
var query = {
screen_name: perm_data.screen_name,
user_id: perm_data.user_id
};
request.get({url:url, oauth:oauth, qs:query, json:true}, function (e, r, user) {
@@ -370,7 +402,7 @@ request({
}
}
});
//requests using baseRequest() will set the 'x-token' header
var baseRequest = request.defaults({
headers: {'x-token': 'my-token'}
@@ -420,7 +452,7 @@ var rand = Math.floor(Math.random()*100000000).toString();
}
}
);
request(
{ method: 'GET'
, uri: 'http://www.google.com'
@@ -442,7 +474,7 @@ request(
console.log('received ' + data.length + ' bytes of compressed data')
})
});
var requestWithJar = request.defaults({jar: true})
requestWithJar('http://www.google.com', function () {
requestWithJar('http://images.google.com');

View File

@@ -1,33 +1,84 @@
// Type definitions for request-promise v0.4.2
// Project: https://www.npmjs.com/package/request-promise
// Definitions by: Christopher Glantschnig <https://github.com/cglantschnig/>, Joe Skeen <http://github.com/joeskeen>
// Type definitions for request-promise v3.0.0
// Project: https://github.com/request/request-promise
// Definitions by: Christopher Glantschnig <https://github.com/cglantschnig/>, Joe Skeen <http://github.com/joeskeen>, Aya Morisawa <https://github.com/AyaMorisawa>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// Change [0]: 2015/08/20 - Aya Morisawa <https://github.com/AyaMorisawa>
/// <reference path="../request/request.d.ts" />
/// <reference path="../bluebird/bluebird.d.ts" />
declare module 'request-promise' {
import request = require('request');
import http = require('http');
interface RequestPromise extends request.Request {
then<TResult>(onfulfilled?: (value: any) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>;
then<TResult>(onfulfilled?: (value: any) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => void): Promise<TResult>;
catch(onrejected?: (reason: any) => any | PromiseLike<any>): Promise<any>;
catch(onrejected?: (reason: any) => void): Promise<any>;
finally<TResult>(handler: () => PromiseLike<TResult>): Promise<any>;
finally<TResult>(handler: () => TResult): Promise<any>;
promise(): Promise<any>;
import errors = require('request-promise/errors');
namespace requestPromise {
interface RequestPromise extends request.Request {
then<TResult>(onfulfilled?: (value: any) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>;
then<TResult>(onfulfilled?: (value: any) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => void): Promise<TResult>;
catch(onrejected?: (reason: any) => any | PromiseLike<any>): Promise<any>;
catch(onrejected?: (reason: any) => void): Promise<any>;
catch(type: errors.RequestErrorConstructor, onrejected?: (reason: errors.RequestError) => void): Promise<any>;
catch(type: errors.StatusCodeErrorConstructor, onrejected?: (reason: errors.StatusCodeError) => void): Promise<any>;
catch(type: errors.TransformErrorConstructor, onrejected?: (reason: errors.TransformError) => void): Promise<any>;
finally<TResult>(handler: () => PromiseLike<TResult>): Promise<any>;
finally<TResult>(handler: () => TResult): Promise<any>;
promise(): Promise<any>;
}
interface RequestPromiseOptions extends request.CoreOptions {
simple?: boolean;
transform?: (body: any, response: http.IncomingMessage, resolveWithFullResponse?: boolean) => any;
resolveWithFullResponse?: boolean;
}
export type OptionsWithUri = request.UriOptions & RequestPromiseOptions;
export type OptionsWithUrl = request.UrlOptions & RequestPromiseOptions;
export type Options = OptionsWithUri | OptionsWithUrl;
}
interface RequestPromiseOptions extends request.CoreOptions {
simple?: boolean;
transform?: (body: any, response: http.IncomingMessage) => any;
resolveWithFullResponse?: boolean;
}
var requestPromise: request.RequestAPI<RequestPromise, RequestPromiseOptions, request.RequiredUriUrl>;
var requestPromise: request.RequestAPI<requestPromise.RequestPromise, requestPromise.RequestPromiseOptions, request.RequiredUriUrl>;
export = requestPromise;
}
declare module 'request-promise/errors' {
import rp = require('request-promise');
import http = require('http');
export interface RequestError extends Error {
cause: any;
error: any;
options: rp.Options;
response: http.IncomingMessage;
}
export interface RequestErrorConstructor {
new (cause: any, options: rp.Options, response: http.IncomingMessage): RequestError;
(cause: any, options: rp.Options, response: http.IncomingMessage): RequestError;
prototype: RequestError;
}
export const RequestError: RequestErrorConstructor;
export interface StatusCodeError extends Error {
statusCode: number;
error: any;
options: rp.Options;
response: http.IncomingMessage;
}
export interface StatusCodeErrorConstructor extends Error {
new (statusCode: number, body: any, options: rp.Options, response: http.IncomingMessage): StatusCodeError;
(statusCode: number, body: any, options: rp.Options, response: http.IncomingMessage): StatusCodeError;
prototype: StatusCodeError;
}
export const StatusCodeError: StatusCodeErrorConstructor;
export interface TransformError extends Error {
cause: any;
error: any;
options: rp.Options;
response: http.IncomingMessage;
}
export interface TransformErrorConstructor extends Error {
new (cause: any, options: rp.Options, response: http.IncomingMessage): TransformError;
(cause: any, options: rp.Options, response: http.IncomingMessage): TransformError;
prototype: TransformError;
}
export const TransformError: TransformErrorConstructor;
}