예제 #1
0
        private byte[] DeleteFriend(Dictionary <string, object> request)
        {
            UUID principalID = UUID.Zero;

            if (request.ContainsKey("PRINCIPALID"))
            {
                UUID.TryParse(request["PRINCIPALID"].ToString(), out principalID);
            }
            else
            {
                m_log.WarnFormat("[FRIENDS HANDLER]: no principalID in request to delete friend");
            }
            string friend = string.Empty;

            if (request.ContainsKey("FRIEND"))
            {
                friend = request["FRIEND"].ToString();
            }

            bool success = m_FriendsService.Delete(principalID, friend);

            if (success)
            {
                return(SuccessResult());
            }
            else
            {
                return(FailureResult());
            }
        }
        byte[] DeleteFriendship(Dictionary <string, object> request)
        {
            FriendInfo friend = new FriendInfo(request);
            string     secret = string.Empty;

            if (request.ContainsKey("SECRET"))
            {
                secret = request["SECRET"].ToString();
            }

            if (secret == string.Empty)
            {
                return(FailureResult());
            }

            List <FriendInfo> finfos = m_FriendsService.GetFriends(friend.PrincipalID);

            foreach (FriendInfo finfo in finfos)
            {
                // We check the secret here
                if (finfo.Friend.StartsWith(friend.Friend) && finfo.Friend.EndsWith(secret))
                {
                    MainConsole.Instance.DebugFormat("[HGFRIENDS HANDLER]: Delete friendship {0} {1}", friend.PrincipalID, friend.Friend);
                    m_FriendsService.Delete(friend.PrincipalID, finfo.Friend);
                    m_FriendsService.Delete(UUID.Parse(finfo.Friend), friend.PrincipalID.ToString());

                    return(SuccessResult());
                }
            }

            return(FailureResult());
        }
        public bool NewFriendship(FriendInfo friend, bool verified)
        {
            UUID   friendID;
            string tmp = string.Empty, url = String.Empty, first = String.Empty, last = String.Empty;

            if (!Util.ParseUniversalUserIdentifier(friend.Friend, out friendID, out url, out first, out last, out tmp))
            {
                return(false);
            }

            m_log.DebugFormat("[HGFRIENDS SERVICE]: New friendship {0} {1} ({2})", friend.PrincipalID, friend.Friend, verified);

            // Does the friendship already exist?
            FriendInfo[] finfos = m_FriendsService.GetFriends(friend.PrincipalID);
            foreach (FriendInfo finfo in finfos)
            {
                if (finfo.Friend.StartsWith(friendID.ToString()))
                {
                    return(false);
                }
            }
            // Verified user session. But the user needs to confirm friendship when he gets home
            if (verified)
            {
                return(m_FriendsService.StoreFriend(friend.PrincipalID.ToString(), friend.Friend, 0));
            }

            // Does the reverted friendship exist? meaning that this user initiated the request
            finfos = m_FriendsService.GetFriends(friendID);
            bool userInitiatedOffer = false;

            foreach (FriendInfo finfo in finfos)
            {
                if (friend.Friend.StartsWith(finfo.PrincipalID.ToString()) && finfo.Friend.StartsWith(friend.PrincipalID.ToString()) && finfo.TheirFlags == -1)
                {
                    userInitiatedOffer = true;
                    // Let's delete the existing friendship relations that was stored
                    m_FriendsService.Delete(friendID, finfo.Friend);
                    break;
                }
            }

            if (userInitiatedOffer)
            {
                m_FriendsService.StoreFriend(friend.PrincipalID.ToString(), friend.Friend, 1);
                m_FriendsService.StoreFriend(friend.Friend, friend.PrincipalID.ToString(), 1);
                // notify the user
                ForwardToSim("ApproveFriendshipRequest", friendID, Util.UniversalName(first, last, url), "", friend.PrincipalID, "");
                return(true);
            }
            return(false);
        }
예제 #4
0
        public bool DeleteFriendship(FriendInfo friend, string secret)
        {
            FriendInfo[] finfos = m_FriendsService.GetFriends(friend.PrincipalID);
            foreach (FriendInfo finfo in finfos)
            {
                // We check the secret here. Or if the friendship request was initiated here, and was declined
                if (finfo.Friend.StartsWith(friend.Friend) && finfo.Friend.EndsWith(secret))
                {
                    m_log.DebugFormat("[HGFRIENDS SERVICE]: Delete friendship {0} {1}", friend.PrincipalID, friend.Friend);
                    m_FriendsService.Delete(friend.PrincipalID, finfo.Friend);
                    m_FriendsService.Delete(finfo.Friend, friend.PrincipalID.ToString());

                    return(true);
                }
            }

            return(false);
        }
        public bool Delete(UUID PrincipalID, string Friend)
        {
            List <string> serverURIs =
                m_registry.RequestModuleInterface <IConfigurationService>().FindValueOf(PrincipalID.ToString(),
                                                                                        "FriendsServerURI");

            if (serverURIs.Count > 0) //Remote user... or should be
            {
                if ((bool)DoRemoteForced(PrincipalID, Friend))
                {
                    return(true);
                }
            }
            return(m_localService.Delete(PrincipalID, Friend));
        }
예제 #6
0
        public HttpResponseMessage Delete(int groupid, List <UserDto> model)
        {
            var result = _friendsService.Delete(groupid, model);

            return(Request.CreateResponse(HttpStatusCode.OK, result));
        }