Example #1
0
    def post(self):
        user_log.info("InviteFriendAddingHandler POST.")

        json_msg_str = self.request.body
        req_json = json.loads(json_msg_str)
        required_args = ["mode"]
        optional_args = ["phone", "mcode", "userID", "remark"]
        if True != httpJSONArgsCheck(req_json, required_args, optional_args):
            user_log.error("Invite firend adding protocol data error!")
            rep_json = {}
            rep_json["err"] = FD_ERR_USER_PROTOCOL_DATA_ERROR
            self.set_header("Content-type", "application/json")
            self.write(json.dumps(rep_json, cls=ExtendedJsonEncoder))
            return

        mode = req_json["mode"]
        phone_no = req_json["phone"]
        mcode = req_json["mcode"]
        user_id = req_json["userID"]
        remark = req_json["remark"]

        cur_user_id = self.get_current_user()
        user_info = dao_friend.queryUserInfo(cur_user_id)
        if user_info is None:
            user_log.error("Query user info failed! User id: %s", cur_user_id)
            rep_json = {}
            rep_json["err"] = FD_ERR_USER_QUERY_USER_INFO_FAILED
            self.set_header("Content-type", "application/json")
            self.write(json.dumps(rep_json, cls=ExtendedJsonEncoder))
            return

        if FD_FRIEND_ADD_MODE_PHONE_NO == mode:
            user_id = dao_friend.queryUserIDByPhoneNo(phone_no)
            # if phone not exist in db, try send a short message to phonenumber owner
            if user_id is None:
                if len(str(phone_no)) != 11:
                    rep_json = {}
                    rep_json["err"] = FD_ERR_USER_QUERY_USER_INFO_FAILED
                    self.set_header("Content-type", "application/json")
                    self.write(json.dumps(rep_json, cls=ExtendedJsonEncoder))
                    self.write(json.dumps(rep_json, cls=ExtendedJsonEncoder))
                    return
                else:
                    r = send_invite_friend_download_app(phone_no, user_info['name'], remark.encode('utf-8'),
                                                        'www.immbear.com')
                    r = json.loads(r)
                    if r['code'] != 0:
                        user_log.error("Send Message Failed! User id: %s, phone: %s" % (cur_user_id, phone_no))
                    self.write({'is_success': False,
                                'des': 'This phone master is not our user, but we has send a phone message to him/her'})
                    return
        elif FD_FRIEND_ADD_MODE_MCODE == mode:
            # mcode format: m1234
            user_id = int(mcode[1:])

        if int(cur_user_id) != int(user_id) and not dao_friend.hasFriend(cur_user_id, user_id):
            # Send invite be friend info
            url = CONFIG.FD_CHAT_SERVER + "/chat/friend/invite/" + str(cur_user_id) + "/to/" + str(user_id)
            body = {}
            body["invitor_id"] = cur_user_id
            body["invitor_name"] = user_info["name"]
            body["invitor_portrait"] = user_info["portrait"]
            body["remark"] = remark
            body["receivor_id"] = user_id

            body_str = json.dumps(body)

            request = HTTPRequest(url, "POST", body=body_str)
            http = AsyncHTTPClient()
            response = yield http.fetch(request)
            rep_json = json.loads(response.body)
            is_success = rep_json["is_success"]
            if is_success:
                rep_json = {}
                rep_json["err"] = FD_USER_NOERR
                self.set_header("Content-type", "application/json")
                self.write(json.dumps(rep_json, cls=ExtendedJsonEncoder))
                return
            else:
                user_log.error("Send inviting be friend message failed! Invitor id: %s, receivor id: %s", cur_user_id,
                               user_id)
                rep_json = {}
                rep_json["err"] = FD_ERR_USER_SEND_INVITING_BE_FRIEND_MESSAGE_FAILED
                self.set_header("Content-type", "application/json")
                self.write(json.dumps(rep_json, cls=ExtendedJsonEncoder))
                return
        else:
            self.write({'is_success': False, 'des': 'This User is already your friend!'})
Example #2
0
 def post(self):
     response = send_invite_friend_download_app(
         self.arg.phone, self.arg.name.encode('utf-8'),
         self.arg.remark.encode('utf-8'), 'http://www.immbear.com')
     self.write(response)
Example #3
0
 def post(self):
     response = send_invite_friend_download_app(self.arg.phone, self.arg.name.encode('utf-8'),
                                                self.arg.remark.encode('utf-8'),
                                                'http://www.immbear.com')
     self.write(response)