All Downloads are FREE. Search and download functionalities are using the official Maven repository.

typescript.api.middleware.mustache Maven / Gradle / Ivy

There is a newer version: 7.7.0
Show newest version
import {RequestContext, ResponseContext} from './http/http{{importFileExtension}}';
import { Observable, from } from {{#useRxJS}}'rxjs'{{/useRxJS}}{{^useRxJS}}'./rxjsStub{{importFileExtension}}'{{/useRxJS}};

/**
 * Defines the contract for a middleware intercepting requests before
 * they are sent (but after the RequestContext was created)
 * and before the ResponseContext is unwrapped.
 *
 */
export interface Middleware {
    /**
     * Modifies the request before the request is sent.
     *
     * @param context RequestContext of a request which is about to be sent to the server
     * @returns an observable of the updated request context
     *
     */
    pre(context: RequestContext): Observable;
    /**
     * Modifies the returned response before it is deserialized.
     *
     * @param context ResponseContext of a sent request
     * @returns an observable of the modified response context
     */
    post(context: ResponseContext): Observable;
}

export class PromiseMiddlewareWrapper implements Middleware {

    public constructor(private middleware: PromiseMiddleware) {

    }

    pre(context: RequestContext): Observable {
        return from(this.middleware.pre(context));
    }

    post(context: ResponseContext): Observable {
        return from(this.middleware.post(context));
    }

}

/**
 * Defines the contract for a middleware intercepting requests before
 * they are sent (but after the RequestContext was created)
 * and before the ResponseContext is unwrapped.
 *
 */
export interface PromiseMiddleware {
    /**
     * Modifies the request before the request is sent.
     *
     * @param context RequestContext of a request which is about to be sent to the server
     * @returns an observable of the updated request context
     *
     */
    pre(context: RequestContext): Promise;
        /**
     * Modifies the returned response before it is deserialized.
     *
     * @param context ResponseContext of a sent request
     * @returns an observable of the modified response context
     */
    post(context: ResponseContext): Promise;
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy