import { Injectable } from '@angular/core'; import { HttpClient, HttpResponse, HttpParams } from '@angular/common/http'; import { Observable } from 'rxjs'; import { BisqTransaction, BisqBlock, BisqStats } from './bisq.interfaces'; const API_BASE_URL = '/bisq/api'; @Injectable({ providedIn: 'root' }) export class BisqApiService { apiBaseUrl: string; constructor( private httpClient: HttpClient, ) { } getStats$(): Observable { return this.httpClient.get(API_BASE_URL + '/stats'); } getTransaction$(txId: string): Observable { return this.httpClient.get(API_BASE_URL + '/tx/' + txId); } listTransactions$(start: number, length: number, types: string[]): Observable> { let params = new HttpParams(); types.forEach((t: string) => { params = params.append('types[]', t); }); return this.httpClient.get(API_BASE_URL + `/txs/${start}/${length}`, { params, observe: 'response' }); } getBlock$(hash: string): Observable { return this.httpClient.get(API_BASE_URL + '/block/' + hash); } listBlocks$(start: number, length: number): Observable> { return this.httpClient.get(API_BASE_URL + `/blocks/${start}/${length}`, { observe: 'response' }); } getAddress$(address: string): Observable { return this.httpClient.get(API_BASE_URL + '/address/' + address); } getMarkets$(): Observable { return this.httpClient.get(API_BASE_URL + '/markets/markets'); } getMarketsTicker$(): Observable { return this.httpClient.get(API_BASE_URL + '/markets/ticker'); } getMarketsCurrencies$(): Observable { return this.httpClient.get(API_BASE_URL + '/markets/currencies'); } getMarketsHloc$(market: string, interval: 'minute' | 'half_hour' | 'hour' | 'half_day' | 'day' | 'week' | 'month' | 'year' | 'auto'): Observable { return this.httpClient.get(API_BASE_URL + '/markets/hloc?market=' + market + '&interval=' + interval); } getMarketOffers$(market: string): Observable { return this.httpClient.get(API_BASE_URL + '/markets/offers?market=' + market); } getMarket24hVolumes$(): Observable { return this.httpClient.get(API_BASE_URL + '/markets/24hvolumes'); } }