Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @Injectable()
- export class NewProviderService {
- private serviceSubject: BehaviorSubject<HttpResponseModel[]>;
- // this is the variable that should be exposed. make the subject as private
- // this allows the service to be the sole propertier to modify the stream and
- // not the controller or components
- serviceSubject$: Observable<HttpResponseModel[]>;
- private serviceErrorSubject: BehaviorSubject<any>;
- serviceErrorSubject$: Observable<any>;
- filePath: string;
- httpResponseObjectArray: HttpResponseModel[];
- constructor() {
- this.serviceSubject = new BehaviorSubject<HttpResponseModel[]>([]);
- this.serviceSubject$ = this.serviceSubject.asObservable();
- this.serviceErrorSubject = new BehaviorSubject<any>(null);
- this.serviceErrorSubject$ = this.serviceErrorSubject.asObservable();
- this.filePath = path.resolve(__dirname, './../../shared/assets/httpTest.json');
- }
- readFileFromJson() {
- return new Promise((resolve, reject) => {
- fs.exists(this.filePath.toString(), exists => {
- if (exists) {
- fs.readFile(this.filePath.toString(), 'utf-8' , (err, data) => {
- if (err) {
- logger.info('error in reading file', err);
- return reject('Error in reading the file' + err.message);
- }
- logger.info('file read without parsing fg', data.length);
- if ((data.length !== 0) && !isNullOrUndefined(data) && data !== null) {
- // this.httpResponseObjectArray = JSON.parse(data).HttpTestResponse;
- // logger.info('array obj is:', this.httpResponseObjectArray);
- logger.info('file read after parsing new', JSON.parse(data));
- return resolve(JSON.parse(data).HttpTestResponse);
- } else {
- return reject(new FileExceptionHandler('no data in file'));
- }
- });
- } else {
- return reject(new FileExceptionHandler('file cannot be read at the moment'));
- }
- });
- });
- }
- getData() {
- from(this.readFileFromJson()).pipe(map(data => {
- logger.info('data in obs', data);
- this.httpResponseObjectArray = data as HttpResponseModel[];
- return this.httpResponseObjectArray;
- }), catchError(error => {
- return Observable.throw(error);
- }))
- .subscribe(actualData => {
- this.serviceSubject.next(actualData);
- }, err => {
- logger.info('err in sub', typeof err, err);
- this.serviceErrorSubject.next(err);
- });
- }
- @Get('/getJsonData')
- public async getJsonData(@Req() requestAnimationFrame,@Req() req, @Res() res) {
- await this.newService.getData();
- this.newService.serviceSubject$.subscribe(data => {
- logger.info('data subscribed', data, _.isEmpty(data));
- if (!isNullOrUndefined(data) && !_.isEmpty(data)) {
- logger.info('coming in');
- res.status(HttpStatus.OK).send(data);
- res.end();
- }
- });
- }
- Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
- at ServerResponse.setHeader (_http_outgoing.js:470:11)
- at ServerResponse.header (C:personalNodetest-nest.jsprj-samplenode_modulesexpresslibresponse.js:767:10)
- at Ser
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement