import { Injectable } from '@nestjs/common'; import axios from 'axios'; import AppResponse from 'src/response/app-response'; import { Bid } from '../entities/bid.entity'; import { BidsService } from '../services/bids.service'; import * as _ from 'lodash'; @Injectable() export class AuctionHistoresApi { constructor(private readonly bidsService: BidsService) {} async getHistoriesBid(lot_id: Bid['lot_id']) { const bid = await this.bidsService.bidsRepo.findOne({ where: { lot_id }, relations: { web_bid: true, metadata: true }, }); try { switch (bid.web_bid.origin_url) { // GRAYS case 'https://www.grays.com': { const response = await axios({ url: `https://www.grays.com/api/LotInfo/GetBiddingHistory?lotId=${lot_id}¤cyCode=AUD`, }); if (response.data && response.data?.Bids) { return AppResponse.toResponse(response.data.Bids); } return AppResponse.toResponse([]); } // PICKLES case 'https://www.pickles.com.au': { const response = await axios({ url: `https://www.pickles.com.au/PWR-Web/services/api/bidHistoryService/bidHistory?item=${lot_id}`, }); if (response.data) { return AppResponse.toResponse(response.data.Bids); } return AppResponse.toResponse([]); } // ALLBIDS case 'https://www.allbids.com.au': { const data = bid.metadata.find( (meta) => meta.key_name === 'competor_histories', )?.value; const sorted = _.orderBy(data, ['amount'], ['desc']); return AppResponse.toResponse(sorted || []); } default: return AppResponse.toResponse([]); } } catch (error) { return AppResponse.toResponse([]); } } }