Exemplo n.º 1
0
    def handle_PUT_in_reply_to(self, request, payload, in_reply_to):
        user_account = request.getUser()
        conversation = yield self.get_conversation(user_account)

        reply_to = yield self.vumi_api.mdb.get_inbound_message(in_reply_to)
        if reply_to is None:
            self.client_error_response(request, 'Invalid in_reply_to value')
            return

        reply_to_mdh = MessageMetadataHelper(self.vumi_api, reply_to)
        try:
            msg_conversation_key = reply_to_mdh.get_conversation_key()
        except KeyError:
            log.warning('Invalid reply to message %r which has no conversation'
                        ' key' % (reply_to,))
            msg_conversation_key = None
        if msg_conversation_key != conversation.key:
            self.client_error_response(request, 'Invalid in_reply_to value')
            return

        msg_options = ReplyToOptions(payload)
        if not msg_options.is_valid:
            self.client_error_response(request, msg_options.error_msg)
            return

        continue_session = (msg_options.session_event
                            != TransportUserMessage.SESSION_CLOSE)
        helper_metadata = conversation.set_go_helper_metadata()
        helper_metadata.update(self.get_load_balancer_metadata(payload))

        msg = yield self.worker.reply_to(
            reply_to, msg_options.content, continue_session,
            helper_metadata=helper_metadata)

        self.successful_send_response(request, msg)
Exemplo n.º 2
0
 def add_md(self, msg, user_account=None, tag=None, is_paid=False):
     msg.payload.setdefault('helper_metadata', {})
     md = MessageMetadataHelper(self.vumi_helper.get_vumi_api(), msg)
     if user_account is not None:
         md.set_user_account(user_account)
     if tag is not None:
         md.set_tag(tag)
     if is_paid:
         md.set_paid()
Exemplo n.º 3
0
 def assert_transaction(self, msg, direction, session_created):
     md = MessageMetadataHelper(self.vumi_helper.get_vumi_api(), msg)
     direction = {
         "inbound": BillingDispatcher.MESSAGE_DIRECTION_INBOUND,
         "outbound": BillingDispatcher.MESSAGE_DIRECTION_OUTBOUND,
     }[direction]
     self.assertEqual(self.billing_api.transactions,
                      [{
                          "account_number": md.get_account_key(),
                          "message_id": msg["message_id"],
                          "tag_pool_name": md.tag[0],
                          "tag_name": md.tag[1],
                          "message_direction": direction,
                          "session_created": session_created,
                      }])
Exemplo n.º 4
0
    def handle_inbound(self, message, endpoint):
        optout_disabled = False
        msg_mdh = MessageMetadataHelper(self.vumi_api, message)
        if msg_mdh.tag is not None:
            tagpool_metadata = yield msg_mdh.get_tagpool_metadata()
            optout_disabled = tagpool_metadata.get('disable_global_opt_out',
                                                   False)
        keyword = (message['content'] or '').strip()
        helper_metadata = message['helper_metadata']
        optout_metadata = helper_metadata.setdefault('optout',
                                                     {'optout': False})

        if (not optout_disabled
                and self.casing(keyword) in self.optout_keywords):
            optout_metadata['optout'] = True
            optout_metadata['optout_keyword'] = self.casing(keyword)
        returnValue(message)
Exemplo n.º 5
0
 def mk_md(self, message=None, go_metadata=None, optout_metadata=None):
     if message is None:
         message = self.mk_msg(go_metadata, optout_metadata)
     return MessageMetadataHelper(self.vumi_helper.get_vumi_api(), message)
Exemplo n.º 6
0
 def get_metadata_helper(self, msg):
     return MessageMetadataHelper(self.vumi_api, msg)
Exemplo n.º 7
0
 def get_batch_id(self, msg):
     mdh = MessageMetadataHelper(self.vumi_api, msg)
     router = yield mdh.get_router()
     returnValue(router.batch.key)
Exemplo n.º 8
0
 def get_batch_id(self, msg):
     mdh = MessageMetadataHelper(self.vumi_api, msg)
     conversation = yield mdh.get_conversation()
     returnValue(conversation.batch.key)
Exemplo n.º 9
0
 def add_conversation_metadata(self, msg, conv):
     msg.payload.setdefault('helper_metadata', {})
     md = MessageMetadataHelper(None, msg)
     md.set_conversation_info(conv.conversation_type, conv.key)
     md.set_user_account(conv.user_account.key)
Exemplo n.º 10
0
 def add_router_metadata(self, msg, router):
     msg.payload.setdefault('helper_metadata', {})
     md = MessageMetadataHelper(None, msg)
     md.set_router_info(router.router_type, router.key)
     md.set_user_account(router.user_account.key)