コード例 #1
0
ファイル: Conversation.py プロジェクト: amstee/NeoRestAPI
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')>" % (
コード例 #2
0
ファイル: push_android.py プロジェクト: amstee/NeoRestAPI
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 = {
コード例 #3
0
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']
コード例 #4
0
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)
コード例 #5
0
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
コード例 #6
0
ファイル: message.py プロジェクト: amstee/NeoRestAPI
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
コード例 #7
0
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
コード例 #8
0
ファイル: circle_logic.py プロジェクト: amstee/NeoRestAPI
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
コード例 #9
0
ファイル: facebook.py プロジェクト: amstee/NeoRestAPI
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('?')
コード例 #10
0
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):