Esempio n. 1
0
def get_coinbase_stats(access_token):
    """
    Get historical investment data across all accounts.
    """
    client = OAuthClient(access_token, access_token)
    user = client.get_current_user()
    # TODO(joshblum): Handle wallet pagination.
    accounts = client.get_accounts()

    jobs = []
    for account in accounts.data:
        if account.type != 'wallet':
            # TODO(joshblum): Look into other account types.
            continue
        jobs.append(gevent.spawn(_fetch_stats, client, account))
    gevent.joinall(jobs)

    # TODO(joshblum): Handle users with multiple wallets.
    stats = {}
    for job in jobs:
        currency, investment_data = job.value
        stats[currency] = investment_data
    native_currency = user.native_currency
    return {
        'stats': stats,
        'native_currency': native_currency,
        'native_currency_symbol': CURRENCY_MAP.get(native_currency, '$'),
    }
Esempio n. 2
0
def forcoin(request):
    ClientId = "77d5af4941ffd6d5f0c9149e2e303a1c28d9f44c09b63694d6f2f608c60947c0"
    Clientsecret = "4395c36b93aa972ab4c6da2278cdca48f93e8551d0b13ee502552e249db90eb4"
    code = request.GET.get('code', '')
    r2 = requests.post("https://api.coinbase.com/oauth/token",
                       data={
                           "grant_type": "authorization_code",
                           "code": code,
                           "client_id": ClientId,
                           "client_secret": Clientsecret,
                           "redirect_uri": "http://127.0.0.1:8000/Ali/forcoin/"
                       })
    r3 = r2.json()
    a = OAuthClient(r3['access_token'], r3['refresh_token'])
    b = a.get_spot_price().amount
    c = a.get_historic_prices(currency_pair='BTC-USD', period='day')['prices']
    user = a.get_current_user().name
    useremail = a.get_current_user().email
    access = a.refresh()['access_token']
    refresh = a.refresh()['refresh_token']

    price = []
    price2 = []
    time = []
    dif1 = []

    for i in range(1, 21):
        price.append(float(c[i]['price']))
        price2.append(float(c[i - 1]['price']))
        dif1.append(round(price[i - 1] - price2[i - 1], 2))
        time.append(c[i]['time'])

    coinpt = zip(price, dif1, time)

    context = {
        'code': code,
        'price': b,
        'coinprice': price,
        'time': time,
        'coinpt': coinpt,
        'user': user,
        'useremail': useremail,
        'access': access,
        'refresh': refresh,
    }

    return render(request, 'Ali/forcoin.html', context)
Esempio n. 3
0
def cb_usr_code(request):
    user=User.objects.filter(username=request.session['user_id']).values()[0]

    request.session.__delitem__('user_id')

    userauth=authenticate(request,username=user['username'],password=user['password'])

    login(request,userauth)
    ClientId = settings.SOCIAL_AUTH_COINBASE_KEY
    clientsecret = settings.SOCIAL_AUTH_COINBASE_SECRET
    code1=request.GET.get('code')
    r2=requests.post("https://api.coinbase.com/oauth/token",data={"grant_type":"authorization_code","code":code1,"client_id":ClientId,"client_secret":clientsecret,"redirect_uri":"http://www.coinqual.com/coinbase/"})
    cbAFtoken=r2.json()
    usrid=User.objects.filter(username=request.user).values()[0]['id']
        #client=OAuthClient(cbAFtoken['access_token'],cbAFtoken['refresh_token'])
    try:
        if len(user_token.objects.filter(user_id=usrid).values()[0]['access_token']) >2:
            user_token.objects.filter(user_id=usrid).update(access_token=cbAFtoken['access_token'],refresh_token=cbAFtoken['refresh_token'])
            clito=user_token.objects.filter(user_id=usrid).values()[0]
            client=OAuthClient(clito['access_token'],clito['refresh_token'])
            userc=client.get_current_user().name
            price=client.get_spot_price().amount
    except:
        save_user_token=user_token(user_id=int(usrid),access_token=cbAFtoken['access_token'],refresh_token=cbAFtoken['refresh_token'])
        save_user_token.save()
        clito=user_token.objects.filter(user_id=usrid).values()[0]
        client=OAuthClient(clito['access_token'],clito['refresh_token'])
        userc=client.get_current_user()['email']
        price=client.get_spot_price().amount
#    if request.user is not 'ananymous' or request.user is not None:
#        if client is None:
#            user_token(access_token=abAFtoken['access_token'],refresh_token=abAFtoken['refresh_token'],user_id=request.user)

#    user = client.get_current_user()
#    user_as_json_string = json.dumps(user)

#    CBtoken(access_token=cbAFtoken['access_token'],refresh_token=cbAFtoken['refresh_token']).save()
    us=request.user
    context={
    'us':us,
    'code1':code1,
    'user':userc,
    'price':price,}
#    return redirect('main')
    return render(request,'polls/home.html',context)
Esempio n. 4
0
def _get_user_and_accounts(access_token, cache_date):
    """
    We cache API calls for the Coinbase `User` object and account data,
    refreshing it once per day. We pass in `cache_date` which has the
    current date, forcing an API call if the date changes (and eventually
    evicting expired dates).
    """
    client = OAuthClient(access_token, access_token)
    user = client.get_current_user()
    accounts = paginate_response(client, 'get_accounts', **{'limit': '100'})
    return (user, accounts)