def post_facebook_feed(request): facebook_notification = json_serializer.load_string(request.body) events = convert_facebook_notification(facebook_notification) send_messages(request.message_client, events) return Response()
def app_main(self, config, options, queues): TIM_DATA = 'TIM_DATA' data_directory = os.environ.get(TIM_DATA, None) if data_directory is None: logging.error('Environment variable %s not defined', TIM_DATA) sys.exit() file = options.message_file.format(tim_data=data_directory) if not os.path.exists(file): logging.warning('File "%s" does not exist', file) sys.exit() # read the message file try: messages = json_serializer.load(open(file, 'r')) except Exception: logging.error('Failed to read json file: %s', file) raise # create amqp connection client = message_queue.create_message_client(options.url) # create all of the required queues message_queue.create_queues_from_config(client, config['amqp']) # itereate and send all the interesting messages for message in messages: queue = message['header']['type'] if queue in queues: message_queue.send_messages(client, config['amqp']['exchange']['name'], [message]) sys.stdout.write('.') sys.stdout.write('\n')
def _send_update_message_from_event(message_client, exchange, event): current_id = "" if event is not None: message = messages.create_event_update_message( event.service_name, event.service_user_id, event.service_event_id) message_queue.send_messages(message_client, exchange, [message]) current_id = event.hash_id return current_id
def app_main(self, config, options, args): logging.info("Beginning...") db.configure_session(url=db.create_url_from_config(config['db'])) # if services option is empty default to all available configured services if not options.services: service_names = [] # generate the list of service name's from queue list for key in config['queues'].iterkeys(): service_names.append(key) else: service_names = options.services # if authors option is empty default to all authors if not options.authors: author_names = [author_name for author_name in db.Session().query(Author.author_name).all()] else: author_names = options.authors # get the broker and queue config broker_url = config['broker']['url'] # get message broker client and store in instance client = message_queue.create_message_client(broker_url) # for each specified service for service_name in service_names: # create the queue for this service message_queue.create_queues_from_config(client, config['amqp']) # for each specified author for author_name in author_names: # post a update message for service & author for asm, event in db.Session().query(AuthorServiceMap, ServiceEvent). \ join(ServiceEvent, and_(AuthorServiceMap.author_id == ServiceEvent.author_id, AuthorServiceMap.service_id == ServiceEvent.service_id)). \ join(Service, AuthorServiceMap.service_id == Service.id). \ join(Author, AuthorServiceMap.author_id == Author.id). \ filter(and_(Service.service_name == service_name, Author.author_name == author_name)).all(): if event.type_id == 2: continue message_queue.send_messages(client, [create_event_update_message(service_name, asm.service_author_id, event.event_id)]) logging.info("Finished...")
def app_main(self, config, options, args): logging.info("Beginning...") # read the db url from the config db_url = db.create_url_from_config(config['db']) # initialize the db engine & session db.configure_session(db_url) # if services option is empty default to all available configured services if not options.services: service_names = [] # generate the list of service name's from queue list for key in config['queues'].iterkeys(): service_names.append(key) else: service_names = options.services # get the broker and queue config broker_url = message_queue.create_url_from_config(config['amqp']['broker']) # get message broker client and store in instance client = message_queue.create_message_client(broker_url) # for each specified service for service_name in service_names: # create the queue for this service message_queue.create_queues_from_config(client, config['amqp']) # post a notification for each author subscribed to this service for asm in db.Session().query(AuthorServiceMap). \ join(Service, AuthorServiceMap.service_id == Service.id). \ filter(Service.service_name == service_name).all(): message_queue.send_messages(client, [create_notification_message(service_name, asm.service_author_id)]) logging.info("Finished...")
def event_callback(self, message): message_queue.send_messages(self.client, self.amqp_exchange, [message])