def dispatch_request(self): config = app.config['yada_config'] mongo = app.config['yada_mongo'] if request.json: data = request.json comment_id = data.get('_id') else: data = request.form comment_id = json.loads(data.get('_id')) res = BU.get_comment_reacts(config, mongo, [comment_id]) out = [] for x in res: try: res1 = BU.get_transaction_by_rid(config, mongo, x['rid'], wif=config.wif, rid=True) if res1: x['username'] = res1['relationship']['their_username'] out.append(x) except: pass return json.dumps(out)
def fcm_token(): try: token = request.json.get('token') print token rid = request.json.get('rid') txn = BU.get_transaction_by_rid(rid, rid=True) Mongo.site_db.fcmtokens.update({'rid': rid}, { 'rid': rid, 'token': token }, upsert=True) return '', 200 except Exception as e: return '', 400
def show_friend_request(): authed_user = get_logged_in_user() transaction = BU.get_transaction_by_rid(request.args.get('rid'), rid=True, raw=True) requested_transaction = BU.get_transaction_by_rid( transaction['requester_rid'], rid=True) dict_data = { 'bulletin_secret': requested_transaction['relationship']['bulletin_secret'], 'requested_rid': transaction['requested_rid'], 'requester_rid': transaction['requester_rid'] } data = json.dumps(dict_data) qr_code = make_qr(data) return render_template( 'accept-friend-request.html', qrcode=qr_code, data=json.dumps(dict_data, indent=4), rid=requested_transaction['rid'], bulletin_secret=requested_transaction['relationship'] ['bulletin_secret'])
def fcm_token(): try: config = current_app.config['yada_config'] mongo = current_app.config['yada_mongo'] token = request.json.get('token') print token rid = request.json.get('rid') txn = BU.get_transaction_by_rid(rid, rid=True) mongo.site_db.fcmtokens.update({'rid': rid}, { 'rid': rid, 'token': token }, upsert=True) return '', 200 except Exception as e: return '', 400
def show_user(): authed_user = get_logged_in_user() user = BU.get_transaction_by_rid(request.args['rid'], rid=True) for output in user['outputs']: if output['to'] != Config.address: to = output['to'] dict_data = { 'bulletin_secret': user['relationship']['bulletin_secret'], 'requested_rid': user['rid'], 'requester_rid': authed_user['rid'], 'to': to } data = json.dumps(dict_data) qr_code = make_qr(data) return render_template( 'show-user.html', qrcode=qr_code, data=json.dumps(dict_data, indent=4), bulletin_secret=user['relationship']['bulletin_secret'], to=to)
def dispatch_request(self): config = app.config['yada_config'] mongo = app.config['yada_mongo'] res = mongo.db.signed_transactions.find_one( {'hash': request.json.get('hash')}) if res: return 'no', 400 try: rid = TU.generate_rid(config, request.json.get('bulletin_secret')) my_entry_for_relationship = BU.get_transaction_by_rid( config, mongo, rid, config.wif, rid=True, my=True, public_key=config.public_key) their_entry_for_relationship = BU.get_transaction_by_rid( config, mongo, rid, rid=True, raw=True, theirs=True, public_key=config.public_key) verified = verify_signature( base64.b64decode(request.json.get('bulletin_secret')), my_entry_for_relationship['relationship']['their_username'], their_entry_for_relationship['public_key'].decode('hex')) if not verified: return 'no', 400 verified = verify_signature( base64.b64decode(request.json.get('id')), request.json.get('hash'), their_entry_for_relationship['public_key'].decode('hex')) address = str( P2PKHBitcoinAddress.from_pubkey( their_entry_for_relationship['public_key'].decode('hex'))) found = False for x in BU.get_wallet_unspent_transactions( config, mongo, address, [request.json.get('input')]): if request.json.get('input') == x['id']: found = True if found: res = mongo.db.signed_transactions.find( {'input': request.json.get('input')}) if res.count(): return 'already signed this input', 400 else: return 'no transactions with this input found', 400 if verified: transaction_signature = TU.generate_signature_with_private_key( config.private_key, request.json.get('hash')) signature = { 'signature': transaction_signature, 'hash': request.json.get('hash'), 'bulletin_secret': request.json.get('bulletin_secret'), 'input': request.json.get('input'), 'id': request.json.get('id') } mongo.db.signed_transactions.insert(signature) if '_id' in signature: del signature['_id'] return json.dumps(signature) else: return 'no', 400 except Exception as e: return json.dumps({'status': 'error', 'msg': e}), 400