Skip to content

Commit 0ecc928

Browse files
committed
Added model files and worked on responses
1 parent b6920a5 commit 0ecc928

15 files changed

+314
-88
lines changed

src/bitpay_sdk/client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ def update_refund(self, refund_id, status):
267267
response_json = self.__restcli.update("refunds/%s" % refund_id, params)
268268
except Exception as e:
269269
print(e)
270-
270+
271271
def cancel_refund(self, refund_id):
272272
pass
273273

src/bitpay_sdk/models/invoice/buyer.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
class Buyer:
1+
from src.bitpay_sdk.utils.key_utils import change_camel_case_to_snake_case
2+
3+
4+
class Buyer(object):
25
__name = ""
36
__address1 = ""
47
__address2 = ""
@@ -10,8 +13,12 @@ class Buyer:
1013
__phone = ""
1114
__notify = ""
1215

13-
def __init__(self):
14-
pass
16+
def __init__(self, **kwargs):
17+
for key, value in kwargs.items():
18+
try:
19+
getattr(self, 'set_%s' % change_camel_case_to_snake_case(key))(value)
20+
except AttributeError as e:
21+
print(e)
1522

1623
def get_name(self):
1724
return self.__name

src/bitpay_sdk/models/invoice/buyer_provided_info.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,20 @@
1-
class BuyerProvidedInfo:
1+
from src.bitpay_sdk.utils.key_utils import change_camel_case_to_snake_case
2+
3+
4+
class BuyerProvidedInfo(object):
25

36
__name = ""
47
__phone_number = ""
58
__selected_wallet = ""
69
__email_address = ""
710
__selected_transaction_currency = ""
811

9-
def __init__(self):
10-
pass
12+
def __init__(self, **kwargs):
13+
for key, value in kwargs.items():
14+
try:
15+
getattr(self, 'set_%s' % change_camel_case_to_snake_case(key))(value)
16+
except AttributeError as e:
17+
print(e)
1118

1219
def get_name(self):
1320
return self.__name

src/bitpay_sdk/models/invoice/invoice.py

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,9 @@
44
from .refund_info import RefundInfo
55
from .buyer_provided_info import BuyerProvidedInfo
66
from .supported_transaction_currencies import SupportedTransactionCurrencies
7+
from src.bitpay_sdk.utils.key_utils import change_camel_case_to_snake_case
78

8-
9-
def change_camel_case_to_snake_case(string):
10-
return ''.join(['_' + i.lower() if i.isupper()
11-
else i for i in string]).lstrip('_')
12-
13-
14-
class Invoice:
9+
class Invoice(object):
1510
__currency = ""
1611

1712
__guid = ""
@@ -35,7 +30,7 @@ class Invoice:
3530
__payment_display_subtotals = None
3631
__payment_codes = None
3732
__acceptance_window = None
38-
__buyer = None
33+
__buyer = Buyer()
3934
__refund_addresses = None
4035
__close_url = ""
4136
__auto_redirect = False
@@ -53,13 +48,13 @@ class Invoice:
5348
__target_confirmations = None
5449
__refund_address_request_pending = None
5550
__buyer_provided_email = None
56-
__buyer_provided_info = None
57-
__supported_transaction_currencies = None
58-
__miner_fees = None
51+
__buyer_provided_info = BuyerProvidedInfo()
52+
__supported_transaction_currencies = SupportedTransactionCurrencies()
53+
__miner_fees = MinerFees()
5954
__non_paypro_payment_received = None
60-
__shopper = None
55+
__shopper = Shopper()
6156
__bill_id = None
62-
__refund_info = None
57+
__refund_info = RefundInfo()
6358
__extended_notifications = False
6459

6560
__transaction_currency = None
@@ -70,21 +65,18 @@ class Invoice:
7065
__exchange_rates = None
7166

7267
def __init__(self, price=None, currency=None, **kwargs):
68+
7369
self.__price = kwargs.get('price', "") if not price else price
7470
self.__currency = kwargs.get('currency', "") if not currency else currency
7571

7672
for key, value in kwargs.items():
7773
try:
74+
if key in ["buyer", "buyerProvidedInfo", "shopper", "supportedTransactionCurrencies", "minerFees", "refundInfo"]:
75+
klass = globals()[key[0].upper() + key[1:]]
76+
value = klass(**value)
7877
getattr(self, 'set_%s' % change_camel_case_to_snake_case(key))(value)
7978
except AttributeError as e:
80-
pass
81-
82-
self.__buyer = Buyer()
83-
self.__buyer_provided_info = BuyerProvidedInfo()
84-
self.__supported_transaction_currencies = SupportedTransactionCurrencies()
85-
self.__miner_fees = MinerFees()
86-
self.__shopper = Shopper()
87-
self.__refund_info = RefundInfo()
79+
print(e)
8880

8981
def get_guid(self):
9082
return self.__guid
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
class InvoiceStatus(object):
2+
3+
__new = "new"
4+
__paid = "paid"
5+
__confirmed = "confirmed"
6+
__complete = "complete"
7+
__expired = "expired"
8+
__invalid = "invalid"
Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,25 @@
11
from .miner_fees_item import MinerFeesItem
22

33

4-
def change_camel_case_to_snake_case(string):
5-
return ''.join(['_' + i.lower() if i.isupper()
6-
else i for i in string]).lstrip('_')
7-
8-
9-
class MinerFees:
10-
__btc = None
11-
__bch = None
12-
__eth = None
13-
__usdc = None
14-
__gusd = None
15-
__pax = None
4+
class MinerFees(object):
5+
__btc = MinerFeesItem()
6+
__bch = MinerFeesItem()
7+
__eth = MinerFeesItem()
8+
__usdc = MinerFeesItem()
9+
__gusd = MinerFeesItem()
10+
__pax = MinerFeesItem()
11+
__doge = MinerFeesItem()
12+
__ltc = MinerFeesItem()
1613

1714
def __init__(self, **kwargs):
18-
self.__btc = MinerFeesItem()
19-
self.__bch = MinerFeesItem()
20-
self.__eth = MinerFeesItem()
21-
self.__usdc = MinerFeesItem()
22-
self.__gusd = MinerFeesItem()
23-
self.__pax = MinerFeesItem()
15+
2416
for key, value in kwargs.items():
2517
try:
26-
getattr(self, 'set_%s' % change_camel_case_to_snake_case(key))(value)
18+
if key in ["BTC", "BCH", "ETH", "USDC", "GUSD", "PAX"]:
19+
value = MinerFeesItem(**value)
20+
getattr(self, 'set_%s' % key.lower())(value)
2721
except AttributeError as e:
28-
pass
22+
print(e)
2923

3024
def get_btc(self):
3125
return self.__btc
@@ -57,11 +51,17 @@ def get_gusd(self):
5751
def set_gusd(self, gusd: MinerFeesItem):
5852
self.__gusd = gusd
5953

60-
def get_pax(self):
61-
return self.__pax
54+
def get_doge(self):
55+
return self.__doge
56+
57+
def set_doge(self, doge: MinerFeesItem):
58+
self.__doge = doge
59+
60+
def get_ltc(self):
61+
return self.__ltc
6262

63-
def set_pax(self, pax: MinerFeesItem):
64-
self.__pax = pax
63+
def set_pax(self, ltc: MinerFeesItem):
64+
self.__ltc = ltc
6565

6666
def to_json(self):
6767
data = {
@@ -70,6 +70,8 @@ def to_json(self):
7070
"eth": self.get_eth(),
7171
"usdc": self.get_usdc(),
7272
"gusd": self.get_gusd(),
73-
"pax": self.get_pax()
73+
"pax": self.get_pax(),
74+
"doge": self.get_doge(),
75+
"ltc": self.get_ltc()
7476
}
7577
return data

src/bitpay_sdk/models/invoice/miner_fees_item.py

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,17 @@
1-
class MinerFeesItem:
1+
from src.bitpay_sdk.utils.key_utils import change_camel_case_to_snake_case
2+
3+
4+
class MinerFeesItem(object):
25
__satoshis_per_byte = None
36
__total_fee = None
7+
__fiat_amount = None
48

5-
def __init__(self):
6-
pass
9+
def __init__(self, **kwargs):
10+
for key, value in kwargs.items():
11+
try:
12+
getattr(self, 'set_%s' % change_camel_case_to_snake_case(key))(value)
13+
except AttributeError as e:
14+
print(e)
715

816
def get_satoshis_per_byte(self):
917
return self.__satoshis_per_byte
@@ -17,9 +25,16 @@ def get_total_fee(self):
1725
def set_total_fee(self, total_fee):
1826
self.__total_fee = total_fee
1927

28+
def get_fiat_amount(self):
29+
return self.__fiat_amount
30+
31+
def set_fiat_amount(self, fiat_amount):
32+
self.__fiat_amount = fiat_amount
33+
2034
def to_json(self):
2135
data = {
2236
"satoshisPerByte": self.get_satoshis_per_byte(),
23-
"totalFee": self.get_total_fee()
37+
"totalFee": self.get_total_fee(),
38+
"fiatAmount": self.get_fiat_amount()
2439
}
2540
return data
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
from .refund_params import RefundParams
2+
3+
4+
class Refund(object):
5+
6+
__guid = None
7+
__refund_email = None
8+
__amount = None
9+
__currency = None
10+
__token = None
11+
__id = None
12+
__request_data = None
13+
__status = None
14+
__params = None
15+
16+
def __init__(self, refund_email: str = "", amount: float = 0.0, currency: str = "", token: str = ""):
17+
self.__refund_email = refund_email
18+
self.__amount = amount
19+
self.__currency = currency
20+
self.__token = token
21+
self.__params = RefundParams()
22+
23+
def get_guid(self):
24+
return self.__guid
25+
26+
def set_guid(self, guid):
27+
self.__guid = guid
28+
29+
def get_amount(self):
30+
return self.__amount
31+
32+
def set_amount(self, amount):
33+
self.__amount = amount
34+
35+
def get_amount(self):
36+
return self.__amount
37+
38+
def set_amount(self, amount):
39+
self.__amount = amount
40+
41+
def get_amount(self):
42+
return self.__amount
43+
44+
def set_amount(self, amount):
45+
self.__amount = amount
46+
47+
def get_amount(self):
48+
return self.__amount
49+
50+
def set_amount(self, amount):
51+
self.__amount = amount
52+
53+
def get_amount(self):
54+
return self.__amount
55+
56+
def set_amount(self, amount):
57+
self.__amount = amount
58+
59+
def get_amount(self):
60+
return self.__amount
61+
62+
def set_amount(self, amount):
63+
self.__amount = amount
64+
65+
def get_amount(self):
66+
return self.__amount
67+
68+
def set_amount(self, amount):
69+
self.__amount = amount
70+
71+
def get_amount(self):
72+
return self.__amount
73+
74+
def set_amount(self, amount):
75+
self.__amount = amount

src/bitpay_sdk/models/invoice/refund_info.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,17 @@
1-
class RefundInfo:
1+
from src.bitpay_sdk.utils.key_utils import change_camel_case_to_snake_case
2+
3+
4+
class RefundInfo(object):
25
__support_request = None
36
__currency = None
47
__amounts = None
58

6-
def __init__(self):
7-
pass
9+
def __init__(self, **kwargs):
10+
for key, value in kwargs.items():
11+
try:
12+
getattr(self, 'set_%s' % change_camel_case_to_snake_case(key))(value)
13+
except AttributeError as e:
14+
print(e)
815

916
def get_support_request(self):
1017
return self.__support_request

0 commit comments

Comments
 (0)