Skip to content

Commit 6c60f8a

Browse files
authored
Merge pull request #357 from csfloat/feature/trade-history-params
Adds Additional Trade History Params
2 parents 5e66fa4 + 4080066 commit 6c60f8a

File tree

3 files changed

+65
-8
lines changed

3 files changed

+65
-8
lines changed

src/lib/alarms/trade_history.ts

Lines changed: 48 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -78,23 +78,62 @@ interface TradeHistoryAPIResponse {
7878
status: number;
7979
assets_given?: HistoryAsset[];
8080
assets_received?: HistoryAsset[];
81+
time_init: number;
8182
time_escrow_end?: string;
8283
time_settlement?: number;
8384
rollback_trade?: string;
8485
}[];
8586
};
8687
}
8788

88-
export async function getTradeHistoryFromAPI(maxTrades: number): Promise<TradeHistoryStatus[]> {
89+
export async function getTradeHistoryFromAPI(
90+
maxTrades: number,
91+
opts?: {
92+
startAfterTime?: number;
93+
startAfterTradeID?: string;
94+
navigatingBack?: boolean;
95+
getDescriptions?: boolean;
96+
includeFailed?: boolean;
97+
includeTotal?: boolean;
98+
language?: string;
99+
}
100+
): Promise<TradeHistoryStatus[]> {
89101
const access = await getAccessToken();
90102

103+
let url = `https://api.steampowered.com/IEconService/GetTradeHistory/v1/?access_token=${access.token}&max_trades=${maxTrades}`;
104+
105+
if (opts?.startAfterTime) {
106+
url += `&start_after_time=${opts.startAfterTime}`;
107+
}
108+
109+
if (opts?.startAfterTradeID) {
110+
url += `&start_after_tradeid=${opts.startAfterTradeID}`;
111+
}
112+
113+
if (opts?.navigatingBack !== undefined) {
114+
url += `&navigating_back=${opts.navigatingBack}`;
115+
}
116+
117+
if (opts?.getDescriptions !== undefined) {
118+
url += `&get_descriptions=${opts.getDescriptions}`;
119+
}
120+
121+
if (opts?.includeFailed !== undefined) {
122+
url += `&include_failed=${opts.includeFailed}`;
123+
}
124+
125+
if (opts?.includeTotal !== undefined) {
126+
url += `&include_total=${opts.includeTotal}`;
127+
}
128+
129+
if (opts?.language) {
130+
url += `&language=${opts.language}`;
131+
}
132+
91133
// This only works if they have granted permission for https://api.steampowered.com
92-
const resp = await fetch(
93-
`https://api.steampowered.com/IEconService/GetTradeHistory/v1/?access_token=${access.token}&max_trades=${maxTrades}`,
94-
{
95-
credentials: 'include',
96-
}
97-
);
134+
const resp = await fetch(url, {
135+
credentials: 'include',
136+
});
98137

99138
if (resp.status !== 200) {
100139
throw new Error('invalid status');
@@ -119,6 +158,7 @@ export async function getTradeHistoryFromAPI(maxTrades: number): Promise<TradeHi
119158
}),
120159
trade_id: e.tradeid,
121160
time_settlement: e.time_settlement,
161+
time_init: e.time_init,
122162
status: e.status,
123163
rollback_trade: e.rollback_trade,
124164
} as TradeHistoryStatus;
@@ -156,6 +196,7 @@ function parseTradeHistoryHTML(body: string): TradeHistoryStatus[] {
156196
given_assets: [],
157197
trade_id: '',
158198
time_settlement: 0,
199+
time_init: 0,
159200
status: 0,
160201
rollback_trade: '',
161202
} as TradeHistoryStatus;

src/lib/bridge/handlers/fetch_trade_history.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,13 @@ import {getTradeHistoryFromAPI} from '../../alarms/trade_history';
55

66
export interface FetchTradeHistoryRequest {
77
max_trades: number;
8+
start_after_time?: number;
9+
start_after_tradeid?: string;
10+
navigating_back?: boolean;
11+
get_descriptions?: boolean;
12+
include_failed?: boolean;
13+
include_total?: boolean;
14+
language?: string;
815
}
916

1017
export interface FetchTradeHistoryResponse {
@@ -14,7 +21,15 @@ export interface FetchTradeHistoryResponse {
1421
export const FetchTradeHistory = new SimpleHandler<FetchTradeHistoryRequest, FetchTradeHistoryResponse>(
1522
RequestType.FETCH_TRADE_HISTORY,
1623
async (req) => {
17-
const trades = await getTradeHistoryFromAPI(req.max_trades);
24+
const trades = await getTradeHistoryFromAPI(req.max_trades, {
25+
startAfterTime: req.start_after_time,
26+
startAfterTradeID: req.start_after_tradeid,
27+
navigatingBack: req.navigating_back,
28+
getDescriptions: req.get_descriptions,
29+
includeFailed: req.include_failed,
30+
includeTotal: req.include_total,
31+
language: req.language,
32+
});
1833
return {
1934
trades,
2035
};

src/lib/bridge/handlers/trade_history_status.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export interface TradeHistoryStatus {
1313
other_party_url: string;
1414
received_assets: TradeHistoryAsset[];
1515
given_assets: TradeHistoryAsset[];
16+
time_init: number;
1617
time_settlement?: number;
1718
rollback_trade?: string;
1819
}

0 commit comments

Comments
 (0)