UNPKG

@fmal/http-service

Version:

A HTTP service - orignally @cerebral/http

122 lines (108 loc) 2.7 kB
export enum HttpServiceErrorTypes { Http = 'http', Abort = 'abort', Timeout = 'timeout' } export class HttpServiceError extends Error { constructor( type: HttpServiceErrorTypes, status: number, headers: any, body: any, message?: string, isAborted?: boolean ); type: HttpServiceErrorTypes; response: { status: number; headers: any; result: any; isAborted: boolean; }; toJSON(): any; } export default function HttpService( moduleOptions: HttpModuleOptions ): HttpService; export interface HttpModuleOptions { method?: string; baseUrl?: string; headers?: { [id: string]: string }; onRequest?: (xhr: XMLHttpRequest, options: HttpResponseOptions) => void; onResponse?: ( response: XMLHttpRequest, resolve: Function, reject: Function, options?: HttpResponseOptions ) => void; onRequestCallback?: (xhr: XMLHttpRequest) => void; onResponseCallback?: (response: XMLHttpRequest) => void; } export interface HttpRequestOptions { query?: { [id: string]: any }; headers?: { [id: string]: string }; } export interface HttpResponseOptions extends HttpRequestOptions, HttpModuleOptions { body: string; } export interface HttpRequestResponse<T> { result: T; status: string; } export interface HttpService { request: any; get<T>( url: string, passedQuery?: { [id: string]: any }, options?: HttpRequestOptions ): Promise<HttpRequestResponse<T>>; post<T>( url: string, body: any, options?: HttpRequestOptions ): Promise<HttpRequestResponse<T>>; put<T>( url: string, body: any, options?: HttpRequestOptions ): Promise<HttpRequestResponse<T>>; patch<T>( url: string, body: any, options?: HttpRequestOptions ): Promise<HttpRequestResponse<T>>; delete<T>( url: string, passedQuery: { [id: string]: any }, options?: HttpRequestOptions ): Promise<HttpRequestResponse<T>>; uploadFile<T>( url: string, files: FileList | File, options?: FileUploadOptions ): FileUpload<T>; updateOptions(newOptions: HttpModuleOptions): void; abort(regexp: string): boolean; } export interface FileUploadProgress { progress: number; } export interface FileUploadOptions { name?: string; data?: { [id: string]: any }; headers?: { [id: string]: string }; onProgress?: (progress: FileUploadProgress) => void | string; } export interface FileUploadResult<T> { result?: T; status: string; } export class FileUpload<TResponse> { constructor(options: FileUploadOptions); xhr: XMLHttpRequest; isAborted: boolean; send: (files: FileList | File[]) => Promise<FileUploadResult<TResponse>>; abort: () => void; }