shrimpy-node
Version:
Client for the Shrimpy API
59 lines (46 loc) • 2.32 kB
text/typescript
import { IDtoConverter } from "../interfaces";
import { IHistoricalTradeDto } from "../dtos";
import { IHistoricalTrade } from "../models";
import { DateDtoConverter } from "./date-dto-converter";
import { DecimalDtoConverter } from "./decimal-dto-converter";
export class TakerSideDtoConverter implements IDtoConverter<string, "buyer" | "seller" | "unknown"> {
public convertFromDto(dto: string): "buyer" | "seller" | "unknown" {
if (dto == "buyer") {
return "buyer";
}
else if(dto == "seller") {
return "seller";
}
return "unknown";
}
public convertToDto(model: "buyer" | "seller" | "unknown"): string {
return model.toString();
}
}
export class HistoricalTradesDtoConverter implements IDtoConverter<IHistoricalTradeDto[], IHistoricalTrade[]> {
private _dateDtoConverter = new DateDtoConverter();
private _decimalDtoConverter = new DecimalDtoConverter();
private _takerSideDtoConverter = new TakerSideDtoConverter();
public convertFromDto(dto: IHistoricalTradeDto[]): IHistoricalTrade[] {
return dto.map((historicalTradeDto) => {
const historicalTrade: IHistoricalTrade = {
time: this._dateDtoConverter.convertFromDto(historicalTradeDto.time),
price: this._decimalDtoConverter.convertFromDto(historicalTradeDto.price),
size: this._decimalDtoConverter.convertFromDto(historicalTradeDto.size),
takerSide: this._takerSideDtoConverter.convertFromDto(historicalTradeDto.takerSide)
}
return historicalTrade;
});
}
public convertToDto(model: IHistoricalTrade[]): IHistoricalTradeDto[] {
return model.map((historicalTrade) => {
const historicalTradeDto: IHistoricalTradeDto = {
time: this._dateDtoConverter.convertToDto(historicalTrade.time),
price: this._decimalDtoConverter.convertToDto(historicalTrade.price),
size: this._decimalDtoConverter.convertToDto(historicalTrade.size),
takerSide: this._takerSideDtoConverter.convertToDto(historicalTrade.takerSide)
}
return historicalTradeDto;
});
}
}