-
Notifications
You must be signed in to change notification settings - Fork 4
/
get_kraken_open_orders_stream.ts
37 lines (34 loc) 路 1.32 KB
/
get_kraken_open_orders_stream.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import { Observable } from 'rxjs'
import { map } from 'rxjs/operators'
import { getKrakenPrivateObservableFromWS } from '../ws_clients/private_ws_handler'
import { InjectedApiKeys } from '../../types/injected_api_keys'
import { KrakenOrderSnapshot } from '../types/kraken_order_snapshot'
const getKrakenOpenOrdersStream = async (lastToken?: string, injectedApiKeys?: InjectedApiKeys): Promise<Observable<KrakenOrderSnapshot[]>> => {
const subscribeData = {
event: 'subscribe',
subscription: {
name: 'openOrders'
}
}
const unsubscribeData = {
event: 'unsubscribe',
subscription: {
name: 'openOrders'
}
}
const filterStream = (response): boolean => Array.isArray(response) && response.length > 1 && response[1] === 'openOrders'
const { privateObservable$ } = await getKrakenPrivateObservableFromWS(lastToken, subscribeData, filterStream, unsubscribeData, injectedApiKeys)
return privateObservable$.pipe(
map(([ordersSnapshot]) => ordersSnapshot.map(krakenOrder => {
const [orderid] = Object.keys(krakenOrder)
return {
orderid,
...krakenOrder[orderid]
} as KrakenOrderSnapshot
})
)
)
}
export {
getKrakenOpenOrdersStream
}