Skip to content

Commit 4410a61

Browse files
authored
Merge pull request #105 from fintoc-com/master
Release 2.14.0
2 parents 3a670da + 40c2635 commit 4410a61

14 files changed

Lines changed: 125 additions & 7 deletions

fintoc/core.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
InvoicesManager,
1212
LinksManager,
1313
PaymentIntentsManager,
14+
PaymentLinksManager,
1415
RefreshIntentsManager,
1516
RefundsManager,
1617
SubscriptionIntentsManager,
@@ -50,6 +51,7 @@ def __init__(self, api_key, api_version=None, jws_private_key=None):
5051
self.payment_intents = PaymentIntentsManager(
5152
"/v1/payment_intents", self._client
5253
)
54+
self.payment_links = PaymentLinksManager("/v1/payment_links", self._client)
5355
self.refunds = RefundsManager("/v1/refunds", self._client)
5456
self.subscriptions = SubscriptionsManager("/v1/subscriptions", self._client)
5557
self.subscription_intents = SubscriptionIntentsManager(

fintoc/managers/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from .links_manager import LinksManager
88
from .movements_manager import MovementsManager
99
from .payment_intents_manager import PaymentIntentsManager
10+
from .payment_links_manager import PaymentLinksManager
1011
from .refresh_intents_manager import RefreshIntentsManager
1112
from .refunds_manager import RefundsManager
1213
from .subscription_intents_manager import SubscriptionIntentsManager

fintoc/managers/payment_intents_manager.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,14 @@ class PaymentIntentsManager(ManagerMixin):
88
"""Represents a payment_intents manager."""
99

1010
resource = "payment_intent"
11-
methods = ["list", "get", "create", "expire"]
11+
methods = ["list", "get", "create", "expire", "check_eligibility"]
1212

1313
def _expire(self, identifier, **kwargs):
1414
"""Expire a payment intent."""
1515
path = f"{self._build_path(**kwargs)}/{identifier}/expire"
1616
return self._create(path_=path, **kwargs)
17+
18+
def _check_eligibility(self, **kwargs):
19+
"""Check eligibility for a payment intent."""
20+
path = f"{self._build_path(**kwargs)}/check_eligibility"
21+
return self._create(path_=path, **kwargs)
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
"""Module to hold the payment_links manager."""
2+
3+
from fintoc.mixins import ManagerMixin
4+
5+
6+
class PaymentLinksManager(ManagerMixin):
7+
8+
"""Represents a payment_links manager."""
9+
10+
resource = "payment_link"
11+
methods = ["list", "get", "create", "cancel"]
12+
13+
def _cancel(self, identifier, **kwargs):
14+
"""Cancel a payment link."""
15+
path = f"{self._build_path(**kwargs)}/{identifier}/cancel"
16+
return self._update(identifier, path_=path, **kwargs)

fintoc/mixins/manager_mixin.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,13 +118,14 @@ def _create(self, idempotency_key=None, path_=None, **kwargs):
118118
return self.post_create_handler(object_, **kwargs)
119119

120120
@can_raise_fintoc_error
121-
def _update(self, identifier, **kwargs):
121+
def _update(self, identifier, path_=None, **kwargs):
122122
"""
123123
Update an instance of the resource being handled by the manager,
124124
identified by :identifier:. Data is passed using :kwargs:, as
125125
specified by the API.
126126
"""
127127
klass = get_resource_class(self.__class__.resource)
128+
custom_path = path_ if path_ else None
128129
object_ = resource_update(
129130
client=self._client,
130131
path=self._build_path(**kwargs),
@@ -133,6 +134,7 @@ def _update(self, identifier, **kwargs):
133134
handlers=self._handlers,
134135
methods=self.__class__.methods,
135136
params=kwargs,
137+
custom_path=custom_path,
136138
)
137139
return self.post_update_handler(object_, identifier, **kwargs)
138140

fintoc/mixins/resource_mixin.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,10 @@ def serialize(self):
6161
return serialized
6262

6363
@can_raise_fintoc_error
64-
def _update(self, **kwargs):
64+
def _update(self, path_=None, **kwargs):
65+
"""Update the resource."""
6566
id_ = getattr(self, self.__class__.resource_identifier)
67+
custom_path = path_ if path_ else None
6668
object_ = resource_update(
6769
client=self._client,
6870
path=self._path,
@@ -71,6 +73,7 @@ def _update(self, **kwargs):
7173
handlers=self._handlers,
7274
methods=self._methods,
7375
params=kwargs,
76+
custom_path=custom_path,
7477
)
7578
object_ = self._handlers.get("update")(object_, id_, **kwargs)
7679
self.__dict__.update(object_.__dict__)

fintoc/resource_handlers.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,12 @@ def resource_create(
5959
)
6060

6161

62-
def resource_update(client, path, id_, klass, handlers, methods, params):
62+
def resource_update(
63+
client, path, id_, klass, handlers, methods, params, custom_path=None
64+
):
6365
"""Update a specific instance of a resource."""
64-
data = client.request(f"{path}/{id_}", method="patch", json=params)
66+
update_path = custom_path if custom_path else f"{path}/{id_}"
67+
data = client.request(update_path, method="patch", json=params)
6568
return objetize(
6669
klass,
6770
client,

fintoc/resources/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from .movement import Movement
1515
from .other_taxes import OtherTaxes
1616
from .payment_intent import PaymentIntent
17+
from .payment_link import PaymentLink
1718
from .refresh_intent import RefreshIntent
1819
from .services_invoice import ServicesInvoice
1920
from .subscription import Subscription

fintoc/resources/payment_link.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
"""Module to hold the PaymentLink resource."""
2+
3+
from fintoc.mixins import ResourceMixin
4+
5+
6+
class PaymentLink(ResourceMixin):
7+
"""Represents a Fintoc PaymentLink."""

fintoc/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
"""Module to hold the version utilities."""
22

3-
version_info = (2, 13, 0)
3+
version_info = (2, 14, 0)
44
__version__ = ".".join([str(x) for x in version_info])

0 commit comments

Comments
 (0)