def get_balance(self): """Get client wallet balance""" url = '{}/balance'.format(self.base_url.rstrip('/ ')) payload = {'api_key': self.api_key} signature = Signature.gen_signature( 'post', url, json.dumps(payload), self.secret_key) headers = {'Signature': signature} logger.debug('Get balance request: {} {} {}'.format( url, payload, signature)) try: res = requests.post(url, json=payload, headers=headers) res.raise_for_status() except Exception as e: logger.exception(e) return 'Get balance error' json_res = res.json() logger.debug('Get balance response: {}'.format(json_res)) if json_res['status'] == 'success': return json_res['balance'] else: return json_res['message']
def send_money(self, amount, recipient): """Send money from wallet""" url = '{}/send'.format(self.base_url.rstrip('/ ')) payload = {'api_key': self.api_key, 'amount': amount, 'recipient': recipient} signature = Signature.gen_signature( 'post', url, json.dumps(payload), self.secret_key) headers = {'Signature': signature} logger.debug('Send money request: {} {} {}'.format( url, payload, signature)) try: res = requests.post(url, json=payload, headers=headers) res.raise_for_status() except Exception as e: logger.exception(e) return 'Send money error' json_res = res.json() logger.debug('Send money response: {}'.format(json_res)) if json_res['status'] == 'success': return 'Success' else: return json_res['message']
def func_wrapper(*args, **kwargs): # Set sql session sql = SQLAlchemy() session = sql.init_db(Config.SQLALCHEMY_DATABASE_URI)() data = request.get_json() api_key = data.get('api_key') if not api_key: abort(400, 'Api-key error') try: wallet = session.query(Wallets).filter_by(api_key=api_key).one() except NoResultFound: abort(400, 'Wallet not found') signature = Signature.gen_signature(method=request.method, url=request.url, data=request.data.decode(), key=wallet.secret_key) if signature != request.headers.get('Signature'): abort(400, 'Signature error') return func(*args, **kwargs)