Skip to content

Commit b697a3d

Browse files
committed
Add Support for Transfer Management API
1 parent b882a92 commit b697a3d

File tree

10 files changed

+70
-2
lines changed

10 files changed

+70
-2
lines changed

README.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,9 @@ List of supported endpoints
356356
# Transfer Create Order
357357
amadeus.ordering.transfer_orders.post(body, offerId='1000000000')
358358
359+
# Transfer Order Management
360+
amadeus.ordering.transfer_order('ABC').transfers.cancellation.post(body, confirmNbr=123)
361+
359362
Development & Contributing
360363
--------------------------
361364

amadeus/namespaces/_ordering.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,15 @@
11
from amadeus.client.decorator import Decorator
22
from amadeus.ordering._transfer_orders import TransferOrders
3+
from amadeus.ordering._transfer_order import TransferOrder
34

45

56
class Ordering(Decorator, object):
67
def __init__(self, client):
78
Decorator.__init__(self, client)
89
self.transfer_orders = TransferOrders(client)
10+
11+
def transfer_order(self, order_id):
12+
return TransferOrder(self.client, order_id)
13+
14+
15+
__all__ = ['TransferOrders', 'TransferOrder']
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
from amadeus.client.decorator import Decorator
2+
from amadeus.ordering.transfer_orders import Transfers
3+
4+
5+
class TransferOrder(Decorator, object):
6+
def __init__(self, client, order_id):
7+
Decorator.__init__(self, client)
8+
self.transfers = Transfers(client, order_id)

amadeus/ordering/_transfer_orders.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ def post(self, body, **params):
1010
1111
.. code-block:: python
1212
13-
amadeus.ordering.transfer_orders.post(body, offerId='1000000000')
13+
amadeus.ordering.transfer_orders.post(body, offerId=offer_id)
1414
1515
:rtype: amadeus.Response
1616
:raises amadeus.ResponseError: if the request could not be completed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from ._transfers import Transfers
2+
3+
__all__ = ['Transfers']
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
from amadeus.client.decorator import Decorator
2+
from amadeus.ordering.transfer_orders.transfers import Cancellation
3+
4+
5+
class Transfers(Decorator, object):
6+
def __init__(self, client, order_id):
7+
Decorator.__init__(self, client)
8+
self.cancellation = Cancellation(client, order_id)
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from ._cancellation import Cancellation
2+
3+
__all__ = ['Cancellation']
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
from amadeus.client.decorator import Decorator
2+
3+
from urllib.parse import urlencode
4+
5+
6+
class Cancellation(Decorator, object):
7+
def __init__(self, client, order_id):
8+
Decorator.__init__(self, client)
9+
self.order_id = order_id
10+
11+
def post(self, body, **params):
12+
'''
13+
Cancels a transfer reservation
14+
15+
.. code-block:: python
16+
17+
amadeus.ordering.transfer_order(order_id).transfers.cancellation.post(body, confirmNbr=confirm_nbr)
18+
19+
:rtype: amadeus.Response
20+
:raises amadeus.ResponseError: if the request could not be completed
21+
'''
22+
url = '/v1/ordering/transfer-orders/{0}/transfers/cancellation?'.format(self.order_id)
23+
return self.client.post(url + urlencode(params), body)

docs/index.rst

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -263,5 +263,8 @@ Airline/Destinations
263263
Ordering/Transfers
264264
================
265265

266-
.. autoclass:: amadeus.Ordering.TransferOrders
266+
.. autoclass:: amadeus.ordering.TransferOrders
267+
:members: post
268+
269+
.. autoclass:: amadeus.ordering.transfer_orders.transfers.Cancellation
267270
:members: post

specs/namespaces/test_namespaces.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ def test_expected_paths(client):
6969
assert client.airline.destinations is not None
7070
assert client.shopping.transfer_offers_search is not None
7171
assert client.ordering.transfer_orders is not None
72+
assert client.ordering.transfer_order.transfers.cancellation is not None
7273

7374

7475
def test_expected_get_methods(client):
@@ -560,3 +561,12 @@ def test_ordering_transfer_orders_post(client_setup):
560561
client_setup.post.assert_called_with(
561562
'/v1/ordering/transfer-orders?'+'offerId=1', {'foo': 'bar'}
562563
)
564+
565+
566+
def test_ordering_transfer_order_transfers_cancellation_post(client_setup):
567+
client_setup.ordering.transfer_order('XXX').transfers.cancellation.post(
568+
{'foo': 'bar'}, confirmNbr=123)
569+
client_setup.post.assert_called_with(
570+
'/v1/ordering/transfer-orders/XXX/transfers/cancellation?'+'confirmNbr=123',
571+
{'foo': 'bar'}
572+
)

0 commit comments

Comments
 (0)