from config.database import db from dateutil import parser as DateParser from flask_socketio import emit from utils.log import logger_set import datetime from config.log import LOG_DATABASE_FILE from mobile import push_ios as ios from mobile import push_android as android logger = logger_set(module=__name__, file=LOG_DATABASE_FILE) class Conversation(db.Model): __tablename__ = "conversations" id = db.Column(db.Integer, primary_key=True) circle_id = db.Column(db.Integer, db.ForeignKey("circles.id")) name = db.Column(db.String(120)) created = db.Column(db.DateTime) updated = db.Column(db.DateTime) device_access = db.Column(db.Boolean) circle = db.relationship("Circle", back_populates="conversations") links = db.relationship("UserToConversation", back_populates="conversation") messages = db.relationship("Message", back_populates="conversation", order_by="Message.id", cascade="all, delete-orphan") def __repr__(self): return "<Conversation(id='%d' name='%s' created='%s' updated='%s')>" % (
import json import requests from config.log import LOG_MOBILE from utils.log import logger_set from oauth2client.service_account import ServiceAccountCredentials from config.firebase import KEY_FILE, SCOPES, FCM_URL logger = logger_set(module=__name__, file=LOG_MOBILE) def get_access_token(): credentials = ServiceAccountCredentials.from_json_keyfile_dict( KEY_FILE, SCOPES) access_token_info = credentials.get_access_token() return access_token_info.access_token def send_fcm_message(fcm_message): headers = { 'Authorization': 'Bearer ' + get_access_token(), 'Content-Type': 'application/json; UTF-8', } resp = requests.post(FCM_URL, data=json.dumps(fcm_message), headers=headers) return resp def fcm_message(token, title, body): message = {
from flask import request from flask_restful import Resource from utils.decorators import check_content, route_log from utils.security import get_any_from_header from utils.apiUtils import jsonify from config.log import LOG_ACCOUNT_FILE from utils.log import logger_set import core.account as core logger = logger_set(module=__name__, file=LOG_ACCOUNT_FILE) class AccountCreate(Resource): @route_log(logger) @check_content(None, ("email", str(), True), ("password", str(), True), ("first_name", str(), True), ("last_name", str(), True), ("birthday", str(), True)) def post(self, content): core_response = core.create(content["email"], content["password"], content["first_name"], content["last_name"], content["birthday"]) response = jsonify(core_response['data']) response.status_code = core_response['status_code'] return response class AccountLogin(Resource): @route_log(logger) @check_content(None, ("email", str(), True), ("password", str(), True)) def post(self, content): core_response = core.login(content["email"], content["password"]) response = jsonify(core_response['data']) response.status_code = core_response['status_code']
from flask_restful import Resource from flask import request from utils.decorators import check_content, route_log from utils.apiUtils import * from utils.exceptions import InvalidAuthentication from utils.security import get_any_from_header import core.media as core from utils.log import logger_set from config.log import LOG_MEDIA_FILE logger = logger_set(module=__name__, file=LOG_MEDIA_FILE) class MediaInfo(Resource): @route_log(logger) @check_content("DEFAULT", ("media_id", int(), True)) def post(self, content, client, is_device): core_response = core.info(content["media_id"], client, is_device) response = jsonify(core_response['data']) response.status_code = core_response['status_code'] return response class GetMediaInfo(Resource): def get(self, media_id): try: client, is_device = get_any_from_header(request) return core.info(media_id, client, is_device) except InvalidAuthentication as ie: return FAILED(ie)
from flask_restful import Resource from utils.decorators import check_content, route_log from utils.apiUtils import jsonify import core.device_message_logic as core from utils.log import logger_set from config.log import LOG_DEVICE_FILE logger = logger_set(module=__name__, file=LOG_DEVICE_FILE) class FirstDeviceMessageSend(Resource): @route_log(logger) @check_content("DEFAULT", ("email", str(), True)) def post(self, content, client, is_device): core_response = core.first_message_to_user(content, content["email"], client) response = jsonify(core_response['data']) response.status_code = core_response['status_code'] return response class DeviceMessageSend(Resource): @route_log(logger) @check_content("DEFAULT", ("conversation_id", int(), True)) def post(self, content, client, is_device): core_response = core.message_send(content, content["conversation_id"], client) response = jsonify(core_response['data']) response.status_code = core_response['status_code'] return response
from flask_restful import Resource from flask import request from utils.decorators import check_content, route_log from utils.apiUtils import * from utils.security import get_any_from_header from utils.exceptions import InvalidAuthentication import core.message as core from utils.log import logger_set from config.log import LOG_MESSAGE_FILE logger = logger_set(module=__name__, file=LOG_MESSAGE_FILE) class MessageDelete(Resource): @route_log(logger) @check_content("DEFAULT", ("message_id", int(), True)) def post(self, content, client, is_device): core_response = core.delete(content["message_id"], client, is_device) response = jsonify(core_response['data']) response.status_code = core_response['status_code'] return response class MessageInfo(Resource): @route_log(logger) @check_content("DEFAULT", ("message_id", int(), True)) def post(self, content, client, is_device): core_response = core.info(content["message_id"], client, is_device) response = jsonify(core_response['data']) response.status_code = core_response['status_code'] return response
from config import sockets from utils.log import logger_set from config.log import LOG_SOCKET_FILE logger = logger_set(module=__name__, file=LOG_SOCKET_FILE) def authentication(token, sid): socket = sockets.new_client(sid) b, data = socket.authenticate(token) sockets.save_client(socket) if not b: raise Exception(data) socket.emit('success', data) return True def disconnection(sid): sockets.remove(sid) return True
from flask_restful import Resource from utils.apiUtils import jsonify from utils.decorators import check_content, route_log import core.circle_logic as core from config.log import LOG_CIRCLE_FILE from utils.log import logger_set logger = logger_set(module=__name__, file=LOG_CIRCLE_FILE) class CircleInvite(Resource): @route_log(logger) @check_content("DEFAULT", ("circle_id", int(), True), ("email", str(), True)) def post(self, content, client, is_device): core_response = core.invite(content["circle_id"], content["email"], client, is_device) response = jsonify(core_response['data']) response.status_code = core_response['status_code'] return response class CircleJoin(Resource): @route_log(logger) @check_content("DEFAULT", ("invite_id", int(), True)) def post(self, content, client, is_device): core_response = core.join(content["invite_id"], client) response = jsonify(core_response['data']) response.status_code = core_response['status_code'] return response
from models.Message import Message from config.facebook import SECRET_KEY, PAGE_ACCESS_TOKEN from models.Media import Media from exceptions import conversation as e_conversation from exceptions import media as e_media from models.MessageToMedia import MessageToMedia import base64 from flask_socketio import emit import requests import jwt import datetime import json import io from utils.log import logger_set logger = logger_set(__name__) with open('config.json') as data_file: neo_config = json.load(data_file) PORT = neo_config["project"]["port"] HOST = neo_config["project"]["host"] BASE_ENDPOINT = "http://" + str(HOST) + ":" + str(PORT) def core_upload(media_id, url, client): try: logger.debug("STARTING CORE UPLOAD") media = db.session.query(Media).filter(Media.id == media_id).first() logger.debug("CORE UPLOAD URL: %s", url) part_a = url.split('?')
from flask_restful import Resource from utils.apiUtils import * from utils.decorators import check_content, route_log import core.conversation_logic as core from config.log import LOG_CONVERSATION_FILE from utils.log import logger_set logger = logger_set(module=__name__, file=LOG_CONVERSATION_FILE) class ConversationInvite(Resource): @route_log(logger) @check_content("DEFAULT", ("conversation_id", int(), True), ("email", str(), True)) def post(self, content, client, is_device): core_response = core.invite(content["conversation_id"], content["email"], client, is_device) response = jsonify(core_response['data']) response.status_code = core_response['status_code'] return response class ConversationUserPromote(Resource): @route_log(logger) @check_content("DEFAULT", ("conversation_id", int(), True), ("email", str(), True)) def post(self, content, client, is_device): core_response = core.user_promote(content["conversation_id"], content["email"], client) response = jsonify(core_response['data']) response.status_code = core_response['status_code'] return response class ConversationKick(Resource):