Completed
Push — master ( dd2f8f...d34d79 )
by Steffen
03:32
created

ISales.get_inventory_on_sale()   B

Complexity

Conditions 4

Size

Total Lines 34

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 4
c 1
b 0
f 0
dl 0
loc 34
rs 8.5806
1
#!/usr/bin/python
2
# -*- coding: utf-8 -*-
3
from kuon.api_response import APIResponse
4
from kuon.bitskins import BitSkins
5
from kuon.bitskins.common import *
6
from kuon.common import CommonSteamGames
7
8
9
class ISales(BitSkins):
10
    """Implementation of the API methods related to market sales of BitSkins
11
12
    common not self explanatory keys:
13
        app id:
14
            The Steam AppID of the game which owns this item (e.g. 730 for CS:GO, 440 for TF2, 570 for Dota 2)
15
        market hash name:
16
            The full market name of the item. For example: "AK-47 | Aquamarine Revenge (Field-Tested)"
17
    """
18
19
    def __init__(self, *args, **kwargs):
20
        """Initializing function"""
21
        super().__init__(*args, **kwargs)
22
23
    def get_inventory_on_sale(self, app_id=CommonSteamGames.APP_ID_CSGO, page=None, sort_by=Sorting.PRICE,
24
                              order=SortingDirection.ASCENDING, market_hash_name=None, min_price=None, max_price=None,
25
                              has_stickers=False, is_stattrak=False, is_souvenir=False, per_page=None) -> APIResponse:
26
        """GetInventoryOnSale v1 implementation
27
        https://bitskins.com/api/#get_inventory_on_sale
28
29
        :param app_id:
30
        :param page:
31
        :param sort_by:
32
        :param order:
33
        :param market_hash_name:
34
        :param min_price:
35
        :param max_price:
36
        :param has_stickers:
37
        :param is_stattrak:
38
        :param is_souvenir:
39
        :param per_page:
40
        :return:
41
        """
42
        arguments = locals()
43
        api_url = "https://bitskins.com/api/v1/get_inventory_on_sale/"
44
45
        payload = {
46
            'app_id': str(app_id)
47
        }
48
49
        for argument in arguments:
50
            if argument == 'self':
51
                continue
52
53
            if arguments[argument] is not None:
54
                payload[argument] = arguments[argument]
55
56
        return self.api_request(api_url=api_url, params=payload)
57
58
    def get_sales_info(self, market_hash_name: str, app_id=CommonSteamGames.APP_ID_CSGO, page=None) -> APIResponse:
59
        """GetRecentSaleInfo v1 implementation
60
        https://bitskins.com/api#get_sales_info
61
62
        :param market_hash_name:
63
        :param page:
64
        :param app_id:
65
        :return:
66
        """
67
        api_url = 'https://bitskins.com/api/v1/get_sales_info/'
68
69
        payload = {
70
            'app_id': app_id,
71
            'market_hash_name': market_hash_name
72
        }
73
74
        if page:
75
            payload['page'] = int(page)
76
77
        return self.api_request(api_url=api_url, params=payload)
78
79
    def buy_item(self, item_ids: list, prices: list, app_id=CommonSteamGames.APP_ID_CSGO,
80
                 auto_trade=True) -> APIResponse:
81
        """BuyItem v1 implementation
82
        https://bitskins.com/api#buy_item
83
84
        :param item_ids:
85
        :param prices:
86
        :param app_id:
87
        :param auto_trade:
88
        :return:
89
        """
90
        api_url = 'https://bitskins.com/api/v1/buy_item/'
91
92
        payload = {
93
            'app_id': app_id,
94
            'item_ids': ",".join(item_ids),
95
            'prices': ",".join(prices)
96
        }
97
98
        if not auto_trade:
99
            payload['auto_trade'] = 'false'
100
101
        return self.api_request(api_url=api_url, params=payload)
102
103
    def list_item_for_sale(self, item_ids: list, prices: list, app_id=CommonSteamGames.APP_ID_CSGO) -> APIResponse:
104
        """SellItem v1 implementation
105
        https://bitskins.com/api#list_item_for_sale
106
107
        :param item_ids:
108
        :param prices:
109
        :param app_id:
110
        :return:
111
        """
112
        api_url = 'https://bitskins.com/api/v1/list_item_for_sale/'
113
114
        payload = {
115
            'app_id': app_id,
116
            'item_ids': ",".join(item_ids),
117
            'prices': ",".join(prices)
118
        }
119
120
        return self.api_request(api_url=api_url, params=payload)
121
122
    def modify_sale_item(self, item_ids: list, prices: list, app_id=CommonSteamGames.APP_ID_CSGO) -> APIResponse:
123
        """ModifySale v1 implementation
124
        https://bitskins.com/api#modify_sale_item
125
126
        :param item_ids:
127
        :param prices:
128
        :param app_id:
129
        :return:
130
        """
131
        api_url = 'https://bitskins.com/api/v1/modify_sale_item/'
132
133
        payload = {
134
            'app_id': app_id,
135
            'item_ids': ",".join(item_ids),
136
            'prices': ",".join(prices)
137
        }
138
139
        return self.api_request(api_url=api_url, params=payload)
140
141
    def withdraw_item(self, item_ids: list, app_id=CommonSteamGames.APP_ID_CSGO) -> APIResponse:
142
        """WithdrawItem v1 implementation
143
        https://bitskins.com/api#withdraw_item
144
145
        :param item_ids:
146
        :param app_id:
147
        :return:
148
        """
149
        api_url = 'https://bitskins.com/api/v1/withdraw_item/'
150
151
        payload = {
152
            'app_id': app_id,
153
            'item_ids': ",".join(item_ids)
154
        }
155
156
        return self.api_request(api_url=api_url, params=payload)
157
158
    def bump_item(self, item_ids: list, app_id=CommonSteamGames.APP_ID_CSGO) -> APIResponse:
159
        """BumpItem v1 implementation
160
        https://bitskins.com/api#bump_item
161
162
        :param item_ids:
163
        :param app_id:
164
        :return:
165
        """
166
        api_url = 'https://bitskins.com/api/v1/bump_item/'
167
168
        payload = {
169
            'app_id': app_id,
170
            'item_ids': ",".join(item_ids)
171
        }
172
173
        return self.api_request(api_url=api_url, params=payload)
174
175
    def get_reset_price_items(self, app_id=CommonSteamGames.APP_ID_CSGO, page=None) -> APIResponse:
176
        """GetResetPriceItems v1 implementation
177
        https://bitskins.com/api#get_reset_price_items
178
179
        :param app_id:
180
        :param page:
181
        :return:
182
        """
183
        api_url = 'https://bitskins.com/api/v1/get_reset_price_items/'
184
185
        payload = {
186
            'app_id': app_id,
187
        }
188
189
        if page:
190
            payload['page'] = int(page)
191
192
        return self.api_request(api_url=api_url, params=payload)
193
194
    def get_steam_price_data(self, market_hash_name: str, app_id=CommonSteamGames.APP_ID_CSGO) -> APIResponse:
195
        """GetRawPriceData v1 implementation
196
        https://bitskins.com/api#get_steam_price_data
197
198
        Returns the cheapest steam market price
199
200
        :param market_hash_name:
201
        :param app_id:
202
        :return:
203
        """
204
        api_url = 'https://bitskins.com/api/v1/get_steam_price_data/'
205
206
        payload = {
207
            'app_id': app_id,
208
            'market_hash_name': market_hash_name
209
        }
210
211
        return self.api_request(api_url=api_url, params=payload)
212
213
    def get_specific_items_on_sale(self, item_ids: list, app_id=CommonSteamGames.APP_ID_CSGO) -> APIResponse:
214
        """GetSpecificItemsOnSale v1 implementation
215
        https://bitskins.com/api#get_specific_items_on_sale
216
217
        Returns detailed information of requested items currently on sale on BitSkins
218
219
        :param item_ids:
220
        :param app_id:
221
        :return:
222
        """
223
        api_url = 'https://bitskins.com/api/v1/get_specific_items_on_sale/'
224
225
        payload = {
226
            'app_id': app_id,
227
            'item_ids': ",".join(item_ids)
228
        }
229
230
        return self.api_request(api_url=api_url, params=payload)
231