Exemple #1
0
    def test_initialize_from_env(self):
        with mock.patch.object(os, 'environ', new={'PUSHER_URL':'https://*****:*****@somehost/apps/42'}):
            pusher = Pusher.from_env()
            self.assertEqual(pusher.ssl, True)
            self.assertEqual(pusher.key, u'plah')
            self.assertEqual(pusher.secret, u'bob')
            self.assertEqual(pusher.host, u'somehost')
            self.assertEqual(pusher.app_id, u'42')

        with mock.patch.object(os, 'environ', new={'PUSHER_DSN':'https://*****:*****@somehost/apps/42'}):
            pusher = Pusher.from_env('PUSHER_DSN')
            self.assertEqual(pusher.ssl, True)
            self.assertEqual(pusher.key, u'plah')
            self.assertEqual(pusher.secret, u'bob')
            self.assertEqual(pusher.host, u'somehost')
            self.assertEqual(pusher.app_id, u'42')
Exemple #2
0
    def process_transaction(self, request, pk):
        if request.GET.get("secret") != settings.BLOCKCHAIN_CALLBACK_SECRET:
            raise ParseError()

        try:
            value_in_satoshi = int(request.GET["value"])
            transaction_hash = request.GET["transaction_hash"]
        except (KeyError, ValueError):
            raise ParseError("bad or missing value")

        value_in_btc = Decimal(value_in_satoshi / 100000000)

        account = get_object_or_404(CoinAccount.objects.all(), pk=pk)
        value_in_usd = get_bitcoin_price() * value_in_btc

        Transaction.objects.get_or_create(address=transaction_hash,
                                          defaults={
                                              'account': account,
                                              'type': Transaction.RECEIVED,
                                              'amount': value_in_btc,
                                              'value_usd': value_in_usd,
                                          })

        serializer = self.get_serializer(account)

        pusher_client = Pusher.from_env(json_encoder=UUIDEncoder)

        pusher_client.trigger(str(account.user.pk), 'account-changes',
                              serializer.data)

        return Response('*ok*', status=HTTP_200_OK, content_type='text/plain')