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