Module src.data2871027835.plugins.chat.controlapi
Onionr - Private P2P Communication
HTTP endpoints for controlling IMs
Expand source code
'''
    Onionr - Private P2P Communication
    HTTP endpoints for controlling IMs
'''
'''
    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 flask import Response, request, redirect, Blueprint, send_from_directory
import deadsimplekv as simplekv
import filepaths
flask_blueprint = Blueprint('chat_control', __name__)
key_store = simplekv.DeadSimpleKV(filepaths.cached_storage, refresh_seconds=5)
@flask_blueprint.route('/chatapi/ping')
def ping():
    return 'pong!'
@flask_blueprint.route('/chatapi/send/<peer>', methods=['POST'])
def send_message(peer):
    """Send a message to the peer"""
    data = request.get_json(force=True)
    key_store.refresh()
    existing = key_store.get('s' + peer)
    if existing is None:
        existing = []
    existing.append(data)
    key_store.put('s' + peer, existing)
    key_store.flush()
    return Response('success')
@flask_blueprint.route('/chatapi/gets/<peer>')
def get_sent(peer):
    """Get messages sent to peer"""
    sent = key_store.get('s' + peer)
    if sent is None:
        sent = []
    return Response(json.dumps(sent))
@flask_blueprint.route('/chatapi/addrec/<peer>', methods=['POST'])
def add_rec(peer):
    """Add a received message from the peer"""
    data = request.get_json(force=True)
    key_store.refresh()
    existing = key_store.get('r' + peer)
    if existing is None:
        existing = []
    existing.append(data)
    key_store.put('r' + peer, existing)
    key_store.flush()
    return Response('success')
@flask_blueprint.route('/chatapi/getrec/<peer>')
def get_messages(peer):
    """Get received messages for the peer"""
    key_store.refresh()
    existing = key_store.get('r' + peer)
    if existing is None:
        existing = []
    else:
        existing = list(existing)
        key_store.delete('r' + peer)
    return Response(json.dumps(existing))
Functions
def add_rec(peer)- 
Add a received message from the peer
Expand source code
@flask_blueprint.route('/chatapi/addrec/<peer>', methods=['POST']) def add_rec(peer): """Add a received message from the peer""" data = request.get_json(force=True) key_store.refresh() existing = key_store.get('r' + peer) if existing is None: existing = [] existing.append(data) key_store.put('r' + peer, existing) key_store.flush() return Response('success') def get_messages(peer)- 
Get received messages for the peer
Expand source code
@flask_blueprint.route('/chatapi/getrec/<peer>') def get_messages(peer): """Get received messages for the peer""" key_store.refresh() existing = key_store.get('r' + peer) if existing is None: existing = [] else: existing = list(existing) key_store.delete('r' + peer) return Response(json.dumps(existing)) def get_sent(peer)- 
Get messages sent to peer
Expand source code
@flask_blueprint.route('/chatapi/gets/<peer>') def get_sent(peer): """Get messages sent to peer""" sent = key_store.get('s' + peer) if sent is None: sent = [] return Response(json.dumps(sent)) def ping()- 
Expand source code
@flask_blueprint.route('/chatapi/ping') def ping(): return 'pong!' def send_message(peer)- 
Send a message to the peer
Expand source code
@flask_blueprint.route('/chatapi/send/<peer>', methods=['POST']) def send_message(peer): """Send a message to the peer""" data = request.get_json(force=True) key_store.refresh() existing = key_store.get('s' + peer) if existing is None: existing = [] existing.append(data) key_store.put('s' + peer, existing) key_store.flush() return Response('success')