File

projects/ngrx-data-lib/src/lib/services/entity-data.service.ts

Description

Provide communication with extern resources providing support for multiple formats and a fluent api.

Index

Properties
Methods
Accessors

Constructor

constructor(http: HttpClient, configurationService: NgrxDataConfigurationService)

create a new instance of data service.

Parameters :
Name Type Optional Description
http HttpClient No

the http client to use.

configurationService NgrxDataConfigurationService No

the configuration service.

Methods

makeRequest
makeRequest(baseUrl: string, provider: RequestProvider)

make a http request with a given base url and a request provider.

Parameters :
Name Type Optional Description
baseUrl string No

the base url of the request.

provider RequestProvider No

the request provider.

Returns : Observable<any>

returns an observable containing the data returned by the server.

Properties

Private _deleteProvider
Type : RequestProvider
Private _getProvider
Type : RequestProvider
Private _postProvider
Type : RequestProvider
Private _putProvider
Type : RequestProvider
Private deafaultRequestFormat
Type : IFormatConverter
Private deafaultResponseFormats
Type : IFormatConverter[]

Accessors

GET
getGET()

get the get request provider.

POST
getPOST()

get the post request provider.

DELETE
getDELETE()

get the delete request provider.

PUT
getPUT()

get ht put request provider.

import { RequestProvider } from '../http/request-provider';
import { HttpMethod } from '../http/http-method';
import { IFormatConverter } from '../data-format/format-converter';
import { Observable } from 'rxjs';
import { makeRequest } from '../http/http-communication';
import { HttpClient } from '@angular/common/http';
import { NgrxDataConfigurationService } from './configuaration.service';
import { Injectable } from '@angular/core';

/**
 * Provide communication with extern resources providing support for multiple formats and a fluent api.
 */
@Injectable({
   providedIn: 'root'
})
export class DataService
{
    private _getProvider : RequestProvider;
    private _postProvider : RequestProvider;
    private _deleteProvider : RequestProvider;
    private _putProvider : RequestProvider;

    private deafaultRequestFormat: IFormatConverter;
    private deafaultResponseFormats: IFormatConverter[];

    /**
     * get the get request provider.
     */
    get GET(){ return this._getProvider; }
    
    /**
     * get the post request provider.
     */
    get POST(){ return this._postProvider; } 

    /**
     * get the delete request provider.
     */
    get DELETE(){ return this._deleteProvider; } 

    /**
     * get ht put request provider.
     */
    get PUT(){ return this._putProvider; } 
        
    /**
     * create a new instance of data service.
     * @param http the http client to use.
     * @param configurationService the configuration service.
     */
    constructor(private http: HttpClient, private configurationService: NgrxDataConfigurationService)
    {
       //Get the configuration parameters needed
       this.deafaultRequestFormat = this.configurationService.configuration.deafaultRequestFormat;
       this.deafaultResponseFormats = this.configurationService.configuration.deafaultResponseFormats;

       //get the default data mapper
       let defaultMapper = configurationService.configuration.dataMapper;

       //create the requests starting points
       this._getProvider = new RequestProvider([], [], HttpMethod.get, null, this.deafaultResponseFormats, null, defaultMapper);
       this._postProvider = new RequestProvider([], [], HttpMethod.post, null, this.deafaultResponseFormats, this.deafaultRequestFormat, defaultMapper);
       this._deleteProvider = new RequestProvider([], [], HttpMethod.delete, null, this.deafaultResponseFormats, null, defaultMapper);
       this._putProvider = new RequestProvider([], [], HttpMethod.put, null, this.deafaultResponseFormats, this.deafaultRequestFormat, defaultMapper);           
    }

    /**
     * make a http request with a given base url and a request provider.
     * @param baseUrl the base url of the request.
     * @param provider the request provider.
     * @returns returns an observable containing the data returned by the server.
     */
    makeRequest(baseUrl:string, provider: RequestProvider) : Observable<any>
    {
       let result = makeRequest(this.http, baseUrl, provider);
       return result;
    }
}

result-matching ""

    No results matching ""