UNPKG

@rxx/http

Version:
104 lines (103 loc) 3.47 kB
/** * The MIT License (MIT) * Copyright (c) Taketoshi Aono * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * @fileoverview * @author Taketoshi Aono */ import { StateHandler, Advices } from '@rxx/core'; import { Observable, Subscription, ConnectableObservable } from 'rxjs'; import { HttpConfig, Fetch } from './types'; /** * Http request sender. */ export declare class HttpHandler extends StateHandler { static displayName: string; private static _maxHistoryLength; static maxHistoryLength: number; static readonly maxHistoryLenght: number; private history; constructor(a?: Advices); clone(): HttpHandler; /** * Wait for request from observables. * @override * @param request Observable that send request. */ subscribe(props: { http: Observable<{ type: string; request: HttpConfig; } | { type: string; request: HttpConfig; }[]> | { [key: string]: Observable<HttpConfig> | ConnectableObservable<HttpConfig>; }; }): Subscription; /** * @inheritDoc */ push(key: string, args?: any): Promise<any>; private handleUploadResonse; private notifyUploading; private notifyResponse; private handleResponse; private processHeaders; protected getFetcher(): Fetch; /** * Send GET request. * @data url Target url. * @data data GET parameters. * @returns Promise that return response. */ private get; /** * Send POST request. * @data url Target url. * @data data POST body. * @returns Promise that return response. */ private post; /** * Send PUT request. * @data url Target url. * @data data PUT body. * @returns Promise that return response. */ private put; /** * Send PATCH request. * @data url Target url. * @data data PUT body. * @returns Promise that return response. */ private patch; /** * Send DELETE request. * @data url Target url. * @data data PUT body. * @returns Promise that return response. */ private delete; private upload; /** * Get proper response from fetch response body. * @param responseType The type of response. ex. ARRAY_BUFFER, BLOB, etc... * @param res Http response. * @returns */ private getResponse; private getResponseTypeFromHeader; }