Skip to content

Commit bedaaac

Browse files
committed
feat: support for marketboard api
1 parent 55eff9d commit bedaaac

File tree

4 files changed

+88
-0
lines changed

4 files changed

+88
-0
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
export interface MarketboardItemHistory {
2+
Item: {
3+
ID: number;
4+
Icon: string;
5+
Name: string;
6+
Name_de: string;
7+
Name_fr: string;
8+
Name_en: string;
9+
Name_ja: string;
10+
Rarity: number;
11+
Url: string;
12+
};
13+
History: {
14+
CharacterName: string;
15+
IsHQ: number;
16+
PricePerUnit: number;
17+
PriceTotal: number;
18+
PurchaseDate: string;
19+
Quantity: number;
20+
}[];
21+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { MarketboardPrice } from './marketboard-price';
2+
3+
export interface MarketboardItem {
4+
Item: {
5+
ID: number;
6+
Icon: string;
7+
Name: string;
8+
Name_de: string;
9+
Name_fr: string;
10+
Name_en: string;
11+
Name_ja: string;
12+
Rarity: number;
13+
Url: string;
14+
};
15+
Lodestone: {
16+
Icon: string;
17+
IconHq: string;
18+
LodestoneId: string;
19+
};
20+
Prices: MarketboardPrice[];
21+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
export interface MarketboardPrice {
2+
CraftSignature: string;
3+
ID: number;
4+
IsCrafted: false;
5+
IsHQ: number;
6+
Materia: any[];
7+
PricePerUnit: number;
8+
PriceTotal: number;
9+
Quantity: number;
10+
RetainerName: string;
11+
Stain: number;
12+
Town: {
13+
ID: number;
14+
Icon: string;
15+
Name: string;
16+
Name_de: string;
17+
Name_fr: string;
18+
Name_en: string;
19+
Name_ja: string;
20+
Url: string;
21+
};
22+
}

src/xivapi.service.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import {
1414
} from './model';
1515
import { CharacterResponse, CharacterVerification } from './model/schema/character';
1616
import { XIVAPI_KEY } from './xivapi-client.module';
17+
import { MarketboardItem } from './model/schema/market/marketboard-item';
18+
import { MarketboardItemHistory } from './model/schema/market/marketboard-item-history';
1719

1820
@Injectable()
1921
export class XivapiService {
@@ -190,6 +192,28 @@ export class XivapiService {
190192
return this.request<any>(`/PatchList`, options);
191193
}
192194

195+
/**
196+
* Gets marketboard informations for a given item.
197+
*
198+
* @param server The server to use for marketboard informations.
199+
* @param itemId The item you want informations on.
200+
* @param options Options of the request.
201+
*/
202+
public getMarketBoardItem(server: string, itemId: number, options?: XivapiOptions): Observable<MarketboardItem> {
203+
return this.request<MarketboardItem>(`/market/${server}/items/${itemId}`, options);
204+
}
205+
206+
/**
207+
* Gets marketboard history for a given item.
208+
*
209+
* @param server The server to use for marketboard informations.
210+
* @param itemId The item you want informations on.
211+
* @param options Options of the request.
212+
*/
213+
public getMarketBoardItemHistory(server: string, itemId: number, options?: XivapiOptions): Observable<MarketboardItemHistory> {
214+
return this.request<MarketboardItemHistory>(`/market/${server}/items/${itemId}/history`, options);
215+
}
216+
193217
protected request<T>(endpoint: string, params?: XivapiOptions): Observable<T> {
194218
let queryParams: HttpParams = this.prepareQueryString(params);
195219
let baseUrl: string;

0 commit comments

Comments
 (0)