Module src.httpapi.friendsapi
Onionr - Private P2P Communication
This file creates http endpoints for friend management
Expand source code
'''
    Onionr - Private P2P Communication
    This file creates http endpoints for friend management
'''
'''
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.
'''
import json
from onionrusers import contactmanager
from flask import Blueprint, Response, request, abort, redirect
from coredb import keydb
friends = Blueprint('friends', __name__)
@friends.route('/friends/list')
def list_friends():
    pubkey_list = {}
    friend_list = contactmanager.ContactManager.list_friends()
    for friend in friend_list:
        pubkey_list[friend.publicKey] = {'name': friend.get_info('name')}
    return json.dumps(pubkey_list)
@friends.route('/friends/add/<pubkey>', methods=['POST'])
def add_friend(pubkey):
    contactmanager.ContactManager(pubkey, saveUser=True).setTrust(1)
    return redirect(request.referrer + '#' + request.form['token'])
@friends.route('/friends/remove/<pubkey>', methods=['POST'])
def remove_friend(pubkey):
    contactmanager.ContactManager(pubkey).setTrust(0)
    contactmanager.ContactManager(pubkey).delete_contact()
    keydb.removekeys.remove_user(pubkey)
    return redirect(request.referrer + '#' + request.form['token'])
@friends.route('/friends/setinfo/<pubkey>/<key>', methods=['POST'])
def set_info(pubkey, key):
    data = request.form['data']
    contactmanager.ContactManager(pubkey).set_info(key, data)
    return redirect(request.referrer + '#' + request.form['token'])
@friends.route('/friends/getinfo/<pubkey>/<key>')
def get_info(pubkey, key):
    retData = contactmanager.ContactManager(pubkey).get_info(key)
    if retData is None:
        abort(404)
    else:
        return retData
Functions
def add_friend(pubkey)- 
Expand source code
@friends.route('/friends/add/<pubkey>', methods=['POST']) def add_friend(pubkey): contactmanager.ContactManager(pubkey, saveUser=True).setTrust(1) return redirect(request.referrer + '#' + request.form['token']) def get_info(pubkey, key)- 
Expand source code
@friends.route('/friends/getinfo/<pubkey>/<key>') def get_info(pubkey, key): retData = contactmanager.ContactManager(pubkey).get_info(key) if retData is None: abort(404) else: return retData def list_friends()- 
Expand source code
@friends.route('/friends/list') def list_friends(): pubkey_list = {} friend_list = contactmanager.ContactManager.list_friends() for friend in friend_list: pubkey_list[friend.publicKey] = {'name': friend.get_info('name')} return json.dumps(pubkey_list) def remove_friend(pubkey)- 
Expand source code
@friends.route('/friends/remove/<pubkey>', methods=['POST']) def remove_friend(pubkey): contactmanager.ContactManager(pubkey).setTrust(0) contactmanager.ContactManager(pubkey).delete_contact() keydb.removekeys.remove_user(pubkey) return redirect(request.referrer + '#' + request.form['token']) def set_info(pubkey, key)- 
Expand source code
@friends.route('/friends/setinfo/<pubkey>/<key>', methods=['POST']) def set_info(pubkey, key): data = request.form['data'] contactmanager.ContactManager(pubkey).set_info(key, data) return redirect(request.referrer + '#' + request.form['token'])