mirror of https://github.com/ghostfolio/ghostfolio
Thomas Kaul
2 years ago
committed by
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