File

libs/eventing/src/lib/eventing-impl-api-interface.service.ts

Extends

EventingApiService

Index

Methods

Constructor

constructor(httpService: HttpService)
Parameters :
Name Type Optional
httpService HttpService No

Methods

Private addParameterFilter
addParameterFilter(params: EventingFilter, key: string, httpParams: HttpParams)
Parameters :
Name Type Optional
params EventingFilter No
key string No
httpParams HttpParams No
Returns : HttpParams
Private addTimespan
addTimespan(timespan: Timespan, httpParams: HttpParams)
Parameters :
Name Type Optional
timespan Timespan No
httpParams HttpParams No
Returns : HttpParams
Public getEvent
getEvent(id: string, apiUrl: string, options: HttpRequestOptions)
Parameters :
Name Type Optional Default value
id string No
apiUrl string No
options HttpRequestOptions No {}
Returns : Observable<Event>
Public getEvents
getEvents(apiUrl: string, filterParameter: EventFilter, options: HttpRequestOptions)
Parameters :
Name Type Optional Default value
apiUrl string No
filterParameter EventFilter No {}
options HttpRequestOptions No {}
Public getNotification
getNotification(id: string, apiUrl: string, options?: HttpRequestOptions)
Parameters :
Name Type Optional
id string No
apiUrl string No
options HttpRequestOptions Yes
Public getNotifications
getNotifications(apiUrl: string, filterParameter: NotificationFilter, options?: HttpRequestOptions)
Parameters :
Name Type Optional Default value
apiUrl string No
filterParameter NotificationFilter No {}
options HttpRequestOptions Yes
Returns : Observable<NotificationResults>
Public getPublication
getPublication(id: string, apiUrl: string, options: HttpRequestOptions)
Parameters :
Name Type Optional Default value
id string No
apiUrl string No
options HttpRequestOptions No {}
Public getPublications
getPublications(apiUrl: string, filterParameter: PublicationFilter, options?: HttpRequestOptions)
Parameters :
Name Type Optional Default value
apiUrl string No
filterParameter PublicationFilter No {}
options HttpRequestOptions Yes
Returns : Observable<PublicationResults>
Public getSubscription
getSubscription(id: string, apiUrl: string, options: HttpRequestOptions)
Parameters :
Name Type Optional Default value
id string No
apiUrl string No
options HttpRequestOptions No {}
Public getSubscriptions
getSubscriptions(apiUrl: string, filterParameter: SubscriptionFilter, options: HttpRequestOptions)
Parameters :
Name Type Optional Default value
apiUrl string No
filterParameter SubscriptionFilter No {}
options HttpRequestOptions No {}
Returns : Observable<SubscriptionResults>
Protected prepareFilterParams
prepareFilterParams(params: EventingFilter)
Parameters :
Name Type Optional
params EventingFilter No
Returns : HttpParams
Protected requestApi
requestApi(url: string, params: HttpParams, options: HttpRequestOptions)
Type parameters :
  • T
Parameters :
Name Type Optional Default value
url string No
params HttpParams No new HttpParams()
options HttpRequestOptions No {}
Returns : Observable<T>
Public Abstract getEvent
getEvent(id: string, apiUrl: string, options?: HttpRequestOptions)
Inherited from EventingApiService
Parameters :
Name Type Optional
id string No
apiUrl string No
options HttpRequestOptions Yes
Returns : Observable<Event>
Public Abstract getEvents
getEvents(apiUrl: string, params?: EventFilter, options?: HttpRequestOptions)
Inherited from EventingApiService
Parameters :
Name Type Optional
apiUrl string No
params EventFilter Yes
options HttpRequestOptions Yes
Public Abstract getNotification
getNotification(id: string, apiUrl: string, options?: HttpRequestOptions)
Inherited from EventingApiService
Parameters :
Name Type Optional
id string No
apiUrl string No
options HttpRequestOptions Yes
Public Abstract getNotifications
getNotifications(apiUrl: string, params?: NotificationFilter, options?: HttpRequestOptions)
Inherited from EventingApiService
Parameters :
Name Type Optional
apiUrl string No
params NotificationFilter Yes
options HttpRequestOptions Yes
Returns : Observable<NotificationResults>
Public Abstract getPublication
getPublication(id: string, apiUrl: string, options?: HttpRequestOptions)
Inherited from EventingApiService
Parameters :
Name Type Optional
id string No
apiUrl string No
options HttpRequestOptions Yes
Public Abstract getPublications
getPublications(apiUrl: string, params?: PublicationFilter, options?: HttpRequestOptions)
Inherited from EventingApiService
Parameters :
Name Type Optional
apiUrl string No
params PublicationFilter Yes
options HttpRequestOptions Yes
Returns : Observable<PublicationResults>
Public Abstract getSubscription
getSubscription(id: string, apiUrl: string, options?: HttpRequestOptions)
Inherited from EventingApiService
Parameters :
Name Type Optional
id string No
apiUrl string No
options HttpRequestOptions Yes
Public Abstract getSubscriptions
getSubscriptions(apiUrl: string, params?: SubscriptionFilter, options?: HttpRequestOptions)
Inherited from EventingApiService
Parameters :
Name Type Optional
apiUrl string No
params SubscriptionFilter Yes
options HttpRequestOptions Yes
Returns : Observable<SubscriptionResults>
Protected createBasicAuthHeader
createBasicAuthHeader(token: string)
Inherited from EventingApiService
Parameters :
Name Type Optional
token string No
Returns : HttpHeaders
Protected createRequestTimespan
createRequestTimespan(timespan: Timespan)
Inherited from EventingApiService
Parameters :
Name Type Optional
timespan Timespan No
Returns : string
Protected createRequestUrl
createRequestUrl(apiUrl: string, endpoint: string, id?: string)
Inherited from EventingApiService
Parameters :
Name Type Optional
apiUrl string No
endpoint string No
id string Yes
Returns : string
Protected createBasicAuthHeader
createBasicAuthHeader(token: string)
Inherited from ApiInterface
Defined in ApiInterface:19
Parameters :
Name Type Optional
token string No
Returns : HttpHeaders
Protected createRequestTimespan
createRequestTimespan(timespan: Timespan)
Inherited from ApiInterface
Defined in ApiInterface:15
Parameters :
Name Type Optional
timespan Timespan No
Returns : string
Protected createRequestUrl
createRequestUrl(apiUrl: string, endpoint: string, id?: string)
Inherited from ApiInterface
Defined in ApiInterface:8
Parameters :
Name Type Optional
apiUrl string No
endpoint string No
id string Yes
Returns : string
import { HttpParams } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { HttpRequestOptions, HttpService, Timespan, UriParameterCoder } from '@helgoland/core';
import { Observable } from 'rxjs';

import { EventingApiService } from './eventing-api.service';
import { EventingFilter } from './model/request/common';
import { EventFilter } from './model/request/events';
import { NotificationFilter } from './model/request/notifications';
import { PublicationFilter } from './model/request/publications';
import { SubscriptionFilter } from './model/request/subscriptions';
import { Event, EventResults } from './model/response/events';
import { Notification, NotificationResults } from './model/response/notifications';
import { Publication, PublicationResults } from './model/response/publications';
import { Subscription, SubscriptionResults } from './model/response/subscriptions';

@Injectable()
export class EventingImplApiInterface extends EventingApiService {

    constructor(
        private httpService: HttpService
    ) { super(); }

    public getEvents(apiUrl: string, filterParameter: EventFilter = {}, options: HttpRequestOptions = {}): Observable<EventResults> {
        const url = this.createRequestUrl(apiUrl, 'events');
        let httpParams = this.prepareFilterParams(filterParameter);
        httpParams = this.addParameterFilter(filterParameter, 'latest', httpParams);
        httpParams = this.addParameterFilter(filterParameter, 'subscriptions', httpParams);
        httpParams = this.addTimespan(filterParameter.timespan, httpParams);
        return this.requestApi<EventResults>(url, httpParams, options);
    }

    public getEvent(id: string, apiUrl: string, options: HttpRequestOptions = {}): Observable<Event> {
        const url = this.createRequestUrl(apiUrl, 'events', id);
        return this.requestApi<Event>(url, null, options);
    }

    public getSubscriptions(apiUrl: string, filterParameter: SubscriptionFilter = {}, options: HttpRequestOptions = {}): Observable<SubscriptionResults> {
        const url = this.createRequestUrl(apiUrl, 'subscriptions');
        const httpParams = this.prepareFilterParams(filterParameter);
        return this.requestApi<SubscriptionResults>(url, httpParams, options);
    }

    public getSubscription(id: string, apiUrl: string, options: HttpRequestOptions = {}): Observable<Subscription> {
        const url = this.createRequestUrl(apiUrl, 'subscriptions', id);
        return this.requestApi<Subscription>(url, null, options);
    }

    public getPublications(apiUrl: string, filterParameter: PublicationFilter = {}, options?: HttpRequestOptions): Observable<PublicationResults> {
        const url = this.createRequestUrl(apiUrl, 'publications');
        let httpParams = this.prepareFilterParams(filterParameter);
        httpParams = this.addParameterFilter(filterParameter, 'feature', httpParams);
        return this.requestApi<PublicationResults>(url, httpParams, options);
    }

    public getPublication(id: string, apiUrl: string, options: HttpRequestOptions = {}): Observable<Publication> {
        const url = this.createRequestUrl(apiUrl, 'publications', id);
        return this.requestApi<Publication>(url, null, options);
    }

    public getNotifications(apiUrl: string, filterParameter: NotificationFilter = {}, options?: HttpRequestOptions): Observable<NotificationResults> {
        const url = this.createRequestUrl(apiUrl, 'notifications');
        let httpParams = this.prepareFilterParams(filterParameter);
        httpParams = this.addParameterFilter(filterParameter, 'publications', httpParams);
        return this.requestApi<NotificationResults>(url, httpParams, options);
    }

    public getNotification(id: string, apiUrl: string, options?: HttpRequestOptions): Observable<Notification> {
        const url = this.createRequestUrl(apiUrl, 'notifications', id);
        return this.requestApi<Notification>(url, null, options);
    }

    protected requestApi<T>(url: string, params: HttpParams = new HttpParams(), options: HttpRequestOptions = {}): Observable<T> {
        const headers = this.createBasicAuthHeader(options.basicAuthToken);
        return this.httpService.client(options).get<T>(url, { params, headers });
    }

    protected prepareFilterParams(params: EventingFilter): HttpParams {
        let httpParams = new HttpParams({ encoder: new UriParameterCoder() });
        httpParams = this.addParameterFilter(params, 'expanded', httpParams);
        httpParams = this.addParameterFilter(params, 'offset', httpParams);
        httpParams = this.addParameterFilter(params, 'limit', httpParams);
        return httpParams;
    }

    private addTimespan(timespan: Timespan, httpParams: HttpParams): HttpParams {
        if (timespan !== undefined) {
            return httpParams.set('timespan', this.createRequestTimespan(timespan));
        }
        return httpParams;
    }

    private addParameterFilter(params: EventingFilter, key: string, httpParams: HttpParams): HttpParams {
        if (params && params[key] !== undefined) {
            if (params[key] instanceof Array) {
                return httpParams.set(key, params[key].join(','));
            }
            return httpParams.set(key, params[key]);
        }
        return httpParams;
    }
}

result-matching ""

    No results matching ""