123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- import { Observable } from '../../Observable';
- import { Subscriber } from '../../Subscriber';
- import { TeardownLogic } from '../../types';
- export interface AjaxRequest {
- url?: string;
- body?: any;
- user?: string;
- async?: boolean;
- method?: string;
- headers?: Object;
- timeout?: number;
- password?: string;
- hasContent?: boolean;
- crossDomain?: boolean;
- withCredentials?: boolean;
- createXHR?: () => XMLHttpRequest;
- progressSubscriber?: Subscriber<any>;
- responseType?: string;
- }
- export interface AjaxCreationMethod {
- (urlOrRequest: string | AjaxRequest): Observable<AjaxResponse>;
- get(url: string, headers?: Object): Observable<AjaxResponse>;
- post(url: string, body?: any, headers?: Object): Observable<AjaxResponse>;
- put(url: string, body?: any, headers?: Object): Observable<AjaxResponse>;
- patch(url: string, body?: any, headers?: Object): Observable<AjaxResponse>;
- delete(url: string, headers?: Object): Observable<AjaxResponse>;
- getJSON<T>(url: string, headers?: Object): Observable<T>;
- }
- export declare function ajaxGet(url: string, headers?: Object): AjaxObservable<AjaxResponse>;
- export declare function ajaxPost(url: string, body?: any, headers?: Object): Observable<AjaxResponse>;
- export declare function ajaxDelete(url: string, headers?: Object): Observable<AjaxResponse>;
- export declare function ajaxPut(url: string, body?: any, headers?: Object): Observable<AjaxResponse>;
- export declare function ajaxPatch(url: string, body?: any, headers?: Object): Observable<AjaxResponse>;
- export declare function ajaxGetJSON<T>(url: string, headers?: Object): Observable<T>;
- /**
- * We need this JSDoc comment for affecting ESDoc.
- * @extends {Ignored}
- * @hide true
- */
- export declare class AjaxObservable<T> extends Observable<T> {
- /**
- * Creates an observable for an Ajax request with either a request object with
- * url, headers, etc or a string for a URL.
- *
- * ## Example
- * ```javascript
- * source = Rx.Observable.ajax('/products');
- * source = Rx.Observable.ajax({ url: 'products', method: 'GET' });
- * ```
- *
- * @param {string|Object} request Can be one of the following:
- * A string of the URL to make the Ajax call.
- * An object with the following properties
- * - url: URL of the request
- * - body: The body of the request
- * - method: Method of the request, such as GET, POST, PUT, PATCH, DELETE
- * - async: Whether the request is async
- * - headers: Optional headers
- * - crossDomain: true if a cross domain request, else false
- * - createXHR: a function to override if you need to use an alternate
- * XMLHttpRequest implementation.
- * - resultSelector: a function to use to alter the output value type of
- * the Observable. Gets {@link AjaxResponse} as an argument.
- * @return {Observable} An observable sequence containing the XMLHttpRequest.
- * @static true
- * @name ajax
- * @owner Observable
- * @nocollapse
- */
- static create: AjaxCreationMethod;
- private request;
- constructor(urlOrRequest: string | AjaxRequest);
- /** @deprecated This is an internal implementation detail, do not use. */
- _subscribe(subscriber: Subscriber<T>): TeardownLogic;
- }
- /**
- * We need this JSDoc comment for affecting ESDoc.
- * @ignore
- * @extends {Ignored}
- */
- export declare class AjaxSubscriber<T> extends Subscriber<Event> {
- request: AjaxRequest;
- private xhr;
- private done;
- constructor(destination: Subscriber<T>, request: AjaxRequest);
- next(e: Event): void;
- private send;
- private serializeBody;
- private setHeaders;
- private setupEvents;
- unsubscribe(): void;
- }
- /**
- * A normalized AJAX response.
- *
- * @see {@link ajax}
- *
- * @class AjaxResponse
- */
- export declare class AjaxResponse {
- originalEvent: Event;
- xhr: XMLHttpRequest;
- request: AjaxRequest;
- /** @type {number} The HTTP status code */
- status: number;
- /** @type {string|ArrayBuffer|Document|object|any} The response data */
- response: any;
- /** @type {string} The raw responseText */
- responseText: string;
- /** @type {string} The responseType (e.g. 'json', 'arraybuffer', or 'xml') */
- responseType: string;
- constructor(originalEvent: Event, xhr: XMLHttpRequest, request: AjaxRequest);
- }
- export declare type AjaxErrorNames = 'AjaxError' | 'AjaxTimeoutError';
- /**
- * A normalized AJAX error.
- *
- * @see {@link ajax}
- *
- * @class AjaxError
- */
- export interface AjaxError extends Error {
- /** @type {XMLHttpRequest} The XHR instance associated with the error */
- xhr: XMLHttpRequest;
- /** @type {AjaxRequest} The AjaxRequest associated with the error */
- request: AjaxRequest;
- /** @type {number} The HTTP status code */
- status: number;
- /** @type {string} The responseType (e.g. 'json', 'arraybuffer', or 'xml') */
- responseType: string;
- /** @type {string|ArrayBuffer|Document|object|any} The response data */
- response: any;
- }
- export interface AjaxErrorCtor {
- new (message: string, xhr: XMLHttpRequest, request: AjaxRequest): AjaxError;
- }
- export declare const AjaxError: AjaxErrorCtor;
- export interface AjaxTimeoutError extends AjaxError {
- }
- export interface AjaxTimeoutErrorCtor {
- new (xhr: XMLHttpRequest, request: AjaxRequest): AjaxTimeoutError;
- }
- /**
- * @see {@link ajax}
- *
- * @class AjaxTimeoutError
- */
- export declare const AjaxTimeoutError: AjaxTimeoutErrorCtor;
|