mirror of https://github.com/ghostfolio/ghostfolio
				
				
			
							committed by
							
								 GitHub
								GitHub
							
						
					
				
				 16 changed files with 231 additions and 30 deletions
			
			
		| @ -0,0 +1,26 @@ | |||
| import { IDataProviderHistoricalResponse } from '@ghostfolio/api/services/interfaces/interfaces'; | |||
| import { Controller, Get, Param, UseGuards } from '@nestjs/common'; | |||
| import { AuthGuard } from '@nestjs/passport'; | |||
| 
 | |||
| import { ExchangeRateService } from './exchange-rate.service'; | |||
| 
 | |||
| @Controller('exchange-rate') | |||
| export class ExchangeRateController { | |||
|   public constructor( | |||
|     private readonly exchangeRateService: ExchangeRateService | |||
|   ) {} | |||
| 
 | |||
|   @Get(':symbol/:dateString') | |||
|   @UseGuards(AuthGuard('jwt')) | |||
|   public async getExchangeRate( | |||
|     @Param('dateString') dateString: string, | |||
|     @Param('symbol') symbol: string | |||
|   ): Promise<IDataProviderHistoricalResponse> { | |||
|     const date = new Date(dateString); | |||
| 
 | |||
|     return this.exchangeRateService.getExchangeRate({ | |||
|       date, | |||
|       symbol | |||
|     }); | |||
|   } | |||
| } | |||
| @ -0,0 +1,13 @@ | |||
| import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-data.module'; | |||
| import { Module } from '@nestjs/common'; | |||
| 
 | |||
| import { ExchangeRateController } from './exchange-rate.controller'; | |||
| import { ExchangeRateService } from './exchange-rate.service'; | |||
| 
 | |||
| @Module({ | |||
|   controllers: [ExchangeRateController], | |||
|   exports: [ExchangeRateService], | |||
|   imports: [ExchangeRateDataModule], | |||
|   providers: [ExchangeRateService] | |||
| }) | |||
| export class ExchangeRateModule {} | |||
| @ -0,0 +1,29 @@ | |||
| import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data.service'; | |||
| import { IDataProviderHistoricalResponse } from '@ghostfolio/api/services/interfaces/interfaces'; | |||
| import { Injectable } from '@nestjs/common'; | |||
| 
 | |||
| @Injectable() | |||
| export class ExchangeRateService { | |||
|   public constructor( | |||
|     private readonly exchangeRateDataService: ExchangeRateDataService | |||
|   ) {} | |||
| 
 | |||
|   public async getExchangeRate({ | |||
|     date, | |||
|     symbol | |||
|   }: { | |||
|     date: Date; | |||
|     symbol: string; | |||
|   }): Promise<IDataProviderHistoricalResponse> { | |||
|     const [currency1, currency2] = symbol.split('-'); | |||
| 
 | |||
|     const marketPrice = await this.exchangeRateDataService.toCurrencyAtDate( | |||
|       1, | |||
|       currency1, | |||
|       currency2, | |||
|       date | |||
|     ); | |||
| 
 | |||
|     return { marketPrice }; | |||
|   } | |||
| } | |||
					Loading…
					
					
				
		Reference in new issue