Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 33 additions & 2 deletions coinbase/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
#from decimal import Decimal

from coinbase.config import COINBASE_ENDPOINT
from coinbase.models import CoinbaseAmount, CoinbaseTransaction, CoinbaseUser
from coinbase.models import CoinbaseAmount, CoinbaseTransaction, CoinbaseUser, CoinbaseTransfer


class CoinbaseAccount(object):
Expand Down Expand Up @@ -328,6 +328,34 @@ def transactions(self, count=30):
transactions.append(CoinbaseTransaction(transaction['transaction']))

return transactions

def transfers(self, count=30):
"""
Retrieve the list of transfers for the current account
:param count: How many transfers to retrieve
:return: List of CoinbaseTransfer objects
"""
url = COINBASE_ENDPOINT + '/transfers'
pages = count / 30 + 1
transfers = []

reached_final_page = False

for page in xrange(1, pages + 1):

if not reached_final_page:
params = {'page': page}
params.update(self.global_request_params)
response = self.session.get(url=url, params=params)
parsed_transfers = response.json()

if parsed_transfers['num_pages'] == page:
reached_final_page = True

for transfer in parsed_transfers['transfers']:
transfers.append(CoinbaseTransfer(transfer['transfer']))

return transfers

def get_transaction(self, transaction_id):
"""
Expand Down Expand Up @@ -388,4 +416,7 @@ def generate_receive_address(self, callback_url=None):
}
}
response = self.session.post(url=url, data=json.dumps(request_data), params=self.global_request_params)
return response.json()['address']
return response.json()['address']



1 change: 1 addition & 0 deletions coinbase/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,6 @@

from amount import CoinbaseAmount
from transaction import CoinbaseTransaction
from transfer import CoinbaseTransfer
from contact import CoinbaseContact
from user import CoinbaseUser
52 changes: 52 additions & 0 deletions coinbase/models/transfer.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
__author__ = 'pmb6tz'

from amount import CoinbaseAmount

class CoinbaseTransfer(object):

def __init__(self, transfer):
self.type = transfer['type']
self.code = transfer['code']
self.created_at = transfer['created_at']

fees_coinbase_cents = transfer['fees']['coinbase']['cents']
fees_coinbase_currency_iso = transfer['fees']['coinbase']['currency_iso']
self.fees_coinbase = CoinbaseAmount(fees_coinbase_cents, fees_coinbase_currency_iso)

fees_bank_cents = transfer['fees']['bank']['cents']
fees_bank_currency_iso = transfer['fees']['bank']['currency_iso']
self.fees_bank = CoinbaseAmount(fees_bank_cents, fees_bank_currency_iso)

self.payout_date = transfer['payout_date']
self.transaction_id = transfer['transaction_id']
self.status = transfer['status']

btc_amount = transfer['btc']['amount']
btc_currency = transfer['btc']['currency']
self.btc_amount = CoinbaseAmount(btc_amount, btc_currency)

subtotal_amount = transfer['subtotal']['amount']
subtotal_currency = transfer['subtotal']['currency']
self.subtotal_amount = CoinbaseAmount(subtotal_amount, subtotal_currency)

total_amount = transfer['total']['amount']
total_currency = transfer['total']['currency']
self.total_amount = CoinbaseAmount(total_amount, total_currency)

self.description = transfer['description']

def refresh(self):
pass
#TODO: Refresh the transfer

def cancel(self):
pass
#TODO: Cancel the transfer if possible

def complete(self):
pass
#TODO: Approve the transfer if possible

def resend(self):
pass
#TODO: Resend the transfer email if possible