|
| 1 | +/// <reference types="node" /> |
| 2 | + |
| 3 | +import EventEmitter from 'events'; |
| 4 | +import {FutureInstance} from 'fluture'; |
| 5 | +import {RequestOptions, IncomingMessage} from 'http'; |
| 6 | +import {ParsedUrlQueryInput} from 'querystring'; |
| 7 | +import {Readable} from 'stream'; |
| 8 | + |
| 9 | +export const once: <T = unknown>(event: string) => (emitter: EventEmitter) => FutureInstance<Error, T> |
| 10 | + |
| 11 | +export const encode: (encoding: BufferEncoding) => (buffer: Buffer) => FutureInstance<Error, string> |
| 12 | + |
| 13 | +export const streamOf: (buffer: Buffer) => FutureInstance<never, Readable> |
| 14 | + |
| 15 | +export const emptyStream: FutureInstance<never, Readable> |
| 16 | + |
| 17 | +export const buffer: <T = unknown>(stream: Readable) => FutureInstance<Error, T[]> |
| 18 | + |
| 19 | +export const bufferString: (encoding: BufferEncoding) => (stream: Readable) => FutureInstance<Error, string> |
| 20 | + |
| 21 | +export const instant: <T>(value: T) => FutureInstance<never, T> |
| 22 | + |
| 23 | +export const immediate: <T>(value: T) => FutureInstance<never, T> |
| 24 | + |
| 25 | +export interface Request { |
| 26 | + options: Omit<RequestOptions, 'auth' | 'host' | 'hostname' | 'path' | 'port' | 'protocol' | 'signal'> |
| 27 | + url: string |
| 28 | + body: FutureInstance<Error, Readable> |
| 29 | +} |
| 30 | + |
| 31 | +export const Request: { |
| 32 | + (options: Request['options']): (url: Request['url']) => (body: Request['body']) => Request |
| 33 | + options: (request: Request) => Request['options'] |
| 34 | + url: (request: Request) => Request['url'] |
| 35 | + body: (request: Request) => Request['body'] |
| 36 | +} |
| 37 | + |
| 38 | +export interface Response { |
| 39 | + request: Request |
| 40 | + message: IncomingMessage |
| 41 | +} |
| 42 | + |
| 43 | +export const Response: { |
| 44 | + (request: Response['request']): (message: Response['message']) => Response |
| 45 | + request: (request: Response) => Response['request'] |
| 46 | + message: (request: Response) => Response['message'] |
| 47 | +} |
| 48 | + |
| 49 | +export const sendRequest: (request: Request) => FutureInstance<Error, Response> |
| 50 | + |
| 51 | +export type Headers = Record<string, string> |
| 52 | + |
| 53 | +export const retrieve: (url: Request['url']) => (headers: Headers) => FutureInstance<Error, Response> |
| 54 | + |
| 55 | +export const send: (mime: string) => (method: Request['options']['method']) => (url: Request['url']) => (headers: Headers) => (buffer: Buffer) => FutureInstance<Error, Response> |
| 56 | + |
| 57 | +export const sendJson: (method: Request['options']['method']) => (url: Request['url']) => (headers: Headers) => (json: any) => FutureInstance<Error, Response> |
| 58 | + |
| 59 | +export const sendForm: (method: Request['options']['method']) => (url: Request['url']) => (headers: Headers) => (form: ParsedUrlQueryInput) => FutureInstance<Error, Response> |
| 60 | + |
| 61 | +export type StatusCode = number |
| 62 | + |
| 63 | +export const matchStatus: <T>(onMismatch: (response: Response) => T) => (matches: Record<StatusCode, (response: Response) => T>) => (response: Response) => T |
| 64 | + |
| 65 | +export interface RedirectionStrategy { |
| 66 | + (response: Response): Request |
| 67 | +} |
| 68 | + |
| 69 | +export const redirectAnyRequest: RedirectionStrategy |
| 70 | + |
| 71 | +export const redirectIfGetMethod: RedirectionStrategy |
| 72 | + |
| 73 | +export const redirectUsingGetMethod: RedirectionStrategy |
| 74 | + |
| 75 | +export const retryWithoutCondition: RedirectionStrategy |
| 76 | + |
| 77 | +export const defaultRedirectionPolicy: RedirectionStrategy |
| 78 | + |
| 79 | +export const aggressiveRedirectionPolicy: RedirectionStrategy |
| 80 | + |
| 81 | +export const followRedirectsWith: (strategy: RedirectionStrategy) => (max: number) => (response: Response) => FutureInstance<Error, Response> |
| 82 | + |
| 83 | +export const followRedirects: (max: number) => (response: Response) => FutureInstance<Error, Response> |
| 84 | + |
| 85 | +export const acceptStatus: (code: StatusCode) => (response: Response) => FutureInstance<Response, Response> |
| 86 | + |
| 87 | +export const bufferMessage: (encoding: BufferEncoding) => (message: IncomingMessage) => FutureInstance<Error, String> |
| 88 | + |
| 89 | +export const bufferResponse: (encoding: BufferEncoding) => (response: Response) => FutureInstance<Error, String> |
| 90 | + |
| 91 | +export const autoBufferMessage: (message: IncomingMessage) => FutureInstance<Error, String> |
| 92 | + |
| 93 | +export const autoBufferResponse: (response: Response) => FutureInstance<Error, String> |
| 94 | + |
| 95 | +export const responseToError: (response: Response) => FutureInstance<Error, never> |
0 commit comments