import { ResponseContext, RequestContext, HttpFile } from '../http/http'; import * as models from '../models/all'; import { Configuration} from '../configuration' import { Observable, of, from } from '../rxjsStub'; import {mergeMap, map} from '../rxjsStub'; import { BaseUser } from '../models/BaseUser'; import { CreateAccountRequest } from '../models/CreateAccountRequest'; import { CreateAccountRequestAllOf } from '../models/CreateAccountRequestAllOf'; import { ErrorDetails } from '../models/ErrorDetails'; import { ErrorResponse } from '../models/ErrorResponse'; import { ErrorResponses } from '../models/ErrorResponses'; import { LoginRequest } from '../models/LoginRequest'; import { PageProperties } from '../models/PageProperties'; import { Role } from '../models/Role'; import { TokenResponse } from '../models/TokenResponse'; import { AuthApiRequestFactory, AuthApiResponseProcessor} from "../apis/AuthApi"; export class ObservableAuthApi { private requestFactory: AuthApiRequestFactory; private responseProcessor: AuthApiResponseProcessor; private configuration: Configuration; public constructor( configuration: Configuration, requestFactory?: AuthApiRequestFactory, responseProcessor?: AuthApiResponseProcessor ) { this.configuration = configuration; this.requestFactory = requestFactory || new AuthApiRequestFactory(configuration); this.responseProcessor = responseProcessor || new AuthApiResponseProcessor(); } /** * User Account Login * Login to an existing user account. * @param loginRequest */ public accountLogin(loginRequest?: LoginRequest, _options?: Configuration): Observable { const requestContextPromise = this.requestFactory.accountLogin(loginRequest, _options); // build promise chain let middlewarePreObservable = from(requestContextPromise); for (let middleware of this.configuration.middleware) { middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); } return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). pipe(mergeMap((response: ResponseContext) => { let middlewarePostObservable = of(response); for (let middleware of this.configuration.middleware) { middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); } return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.accountLogin(rsp))); })); } /** * Email address must be unique. After successful registration, an email is sent to verify the account. * Creates a new user account. * @param createAccountRequest */ public createAccount(createAccountRequest?: CreateAccountRequest, _options?: Configuration): Observable { const requestContextPromise = this.requestFactory.createAccount(createAccountRequest, _options); // build promise chain let middlewarePreObservable = from(requestContextPromise); for (let middleware of this.configuration.middleware) { middlewarePreObservable = middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => middleware.pre(ctx))); } return middlewarePreObservable.pipe(mergeMap((ctx: RequestContext) => this.configuration.httpApi.send(ctx))). pipe(mergeMap((response: ResponseContext) => { let middlewarePostObservable = of(response); for (let middleware of this.configuration.middleware) { middlewarePostObservable = middlewarePostObservable.pipe(mergeMap((rsp: ResponseContext) => middleware.post(rsp))); } return middlewarePostObservable.pipe(map((rsp: ResponseContext) => this.responseProcessor.createAccount(rsp))); })); } }