from sentence import Sentence
from store_handler import StoreHandler


def _consume_message(ch, method, properties, body):
    try:
        sentence = Sentence()
        sentence.from_json(body)
        _persist_sentence(sentence)
        mq_handler.ack(method)
    except Exception as e:
        logging.error("Could not consume message: " + body + ".\nException:" + str(e))


def _persist_sentence(sentence):
    query = """INSERT INTO my_key_space.sentences
    (language, time, id, author, text) VALUES (%s,%s,%s,%s,%s)"""
    params = (sentence.get_language(), _timestamp(), uuid.uuid4(), sentence.get_author(), sentence.get_text())
    store_handler.execute_query(query, params)


def _timestamp():
    return int(time.time() * 1000)


if __name__ == "__main__":
    logging.basicConfig(level=logging.DEBUG)
    store_handler = StoreHandler()
    mq_handler = MQHandler()
    mq_handler.start_consuming(_consume_message, "storage", False)
import sys
sys.path.append('common/src')

import logging
from mq_handler import MQHandler


def _consume_message(ch, method, properties, body):
    logging.info(body)


def _format():
    return 'LOGGING SERVICE - %(asctime)s - New message in queues: %(message)s'


if __name__ == '__main__':
    mq_handler = MQHandler()
    logging.basicConfig(format=_format(), level=logging.DEBUG)
    mq_handler.start_consuming(_consume_message, 'logging', True)
def _translate_to_all_languages(original_sentence):
    languages = _get_languages()
    languages.remove(original_sentence.get_language())
    for language in languages:
        _translate_to(original_sentence, language)


def _translate_to(original_sentence, to_language):
    translation = translator.translate(
        original_sentence.get_text(),
        to_language,
        original_sentence.get_language())
    translated_sentence = Sentence()
    translated_sentence.set_author(original_sentence.get_author())
    translated_sentence.set_language(to_language)
    translated_sentence.set_text(translation)
    mq_handler.publish('storage', '', translated_sentence.to_json(), True)


def _get_languages():
    return os.environ['LANGUAGES'].split(":")


if __name__ == '__main__':
    logging.basicConfig(level=logging.DEBUG)
    translator = Translator(
        os.environ['TRANSLATE_API_CLIENT_ID'],
        os.environ['TRANSLATE_API_SECRET'])
    mq_handler = MQHandler()
    mq_handler.start_consuming(_consume_message, 'translation', False)