< Summary

Class:DCl.Social.Friends.RPCFriendsApiBridge
Assembly:FriendsController
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/FriendsController/RPCFriendsApiBridge.cs
Covered lines:0
Uncovered lines:57
Coverable lines:57
Total lines:232
Line coverage:0% (0 of 57)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
add_OnInitialized(...)0%2100%
remove_OnInitialized(...)0%2100%
add_OnFriendNotFound(...)0%2100%
remove_OnFriendNotFound(...)0%2100%
add_OnFriendsAdded(...)0%2100%
remove_OnFriendsAdded(...)0%2100%
add_OnFriendRequestsAdded(...)0%2100%
remove_OnFriendRequestsAdded(...)0%2100%
add_OnFriendWithDirectMessagesAdded(...)0%2100%
remove_OnFriendWithDirectMessagesAdded(...)0%2100%
add_OnUserPresenceUpdated(...)0%2100%
remove_OnUserPresenceUpdated(...)0%2100%
add_OnFriendshipStatusUpdated(...)0%2100%
remove_OnFriendshipStatusUpdated(...)0%2100%
add_OnTotalFriendRequestCountUpdated(...)0%2100%
remove_OnTotalFriendRequestCountUpdated(...)0%2100%
add_OnTotalFriendCountUpdated(...)0%2100%
remove_OnTotalFriendCountUpdated(...)0%2100%
CreateSharedInstance(...)0%2100%
RegisterService(...)0%2100%
RPCFriendsApiBridge(...)0%2100%
RejectFriendship(...)0%2100%
RemoveFriend(...)0%2100%
GetFriends(...)0%2100%
GetFriends(...)0%2100%
GetFriendRequests(...)0%2100%
GetFriendRequestsAsync()0%20400%
GetFriendsWithDirectMessages(...)0%2100%
RequestFriendship(...)0%2100%
RequestFriendshipAsync()0%20400%
CancelRequestAsync()0%20400%
CancelRequestByUserIdAsync(...)0%2100%
CancelRequestByUserId(...)0%2100%
CancelRequest(...)0%2100%
AcceptFriendship(...)0%2100%
ApproveFriendRequest(...)0%2100%
RejectFriendRequest(...)0%2100%
CancelFriendRequest(...)0%2100%
ReceiveFriendRequest(...)0%2100%
ToFriendRequestPayload(...)0%2100%
ToErrorCode(...)0%42600%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/FriendsController/RPCFriendsApiBridge.cs

#LineLine coverage
 1using Cysharp.Threading.Tasks;
 2using DCL;
 3using DCL.Social.Friends;
 4using Decentraland.Renderer.Common;
 5using Decentraland.Renderer.KernelServices;
 6using Decentraland.Renderer.RendererServices;
 7using RPC;
 8using rpc_csharp;
 9using System;
 10using System.Linq;
 11using System.Threading;
 12using RendererCancelFriendRequestPayload = Decentraland.Renderer.RendererServices.CancelFriendRequestPayload;
 13using RendererCancelFriendRequestReply = Decentraland.Renderer.RendererServices.CancelFriendRequestReply;
 14using KernelGetFriendRequestsPayload = Decentraland.Renderer.KernelServices.GetFriendRequestsPayload;
 15using KernelCancelFriendRequestReply = Decentraland.Renderer.KernelServices.CancelFriendRequestReply;
 16using KernelCancelFriendRequestPayload = Decentraland.Renderer.KernelServices.CancelFriendRequestPayload;
 17using RendererRejectFriendRequestPayload = Decentraland.Renderer.RendererServices.RejectFriendRequestPayload;
 18using RendererRejectFriendRequestReply = Decentraland.Renderer.RendererServices.RejectFriendRequestReply;
 19
 20namespace DCl.Social.Friends
 21{
 22    public class RPCFriendsApiBridge : IFriendsApiBridge, IFriendRequestRendererService<RPCContext>
 23    {
 24        private static RPCFriendsApiBridge i;
 25
 26        private readonly IRPC rpc;
 27        private readonly IFriendsApiBridge fallbackApiBridge;
 28
 29        public event Action<FriendshipInitializationMessage> OnInitialized
 30        {
 031            add => fallbackApiBridge.OnInitialized += value;
 032            remove => fallbackApiBridge.OnInitialized -= value;
 33        }
 34
 35        public event Action<string> OnFriendNotFound
 36        {
 037            add => fallbackApiBridge.OnFriendNotFound += value;
 038            remove => fallbackApiBridge.OnFriendNotFound -= value;
 39        }
 40
 41        public event Action<AddFriendsPayload> OnFriendsAdded
 42        {
 043            add => fallbackApiBridge.OnFriendsAdded += value;
 044            remove => fallbackApiBridge.OnFriendsAdded -= value;
 45        }
 46
 47        public event Action<AddFriendRequestsPayload> OnFriendRequestsAdded
 48        {
 049            add => fallbackApiBridge.OnFriendRequestsAdded += value;
 050            remove => fallbackApiBridge.OnFriendRequestsAdded -= value;
 51        }
 52
 53        public event Action<AddFriendsWithDirectMessagesPayload> OnFriendWithDirectMessagesAdded
 54        {
 055            add => fallbackApiBridge.OnFriendWithDirectMessagesAdded += value;
 056            remove => fallbackApiBridge.OnFriendWithDirectMessagesAdded -= value;
 57        }
 58
 59        public event Action<UserStatus> OnUserPresenceUpdated
 60        {
 061            add => fallbackApiBridge.OnUserPresenceUpdated += value;
 062            remove => fallbackApiBridge.OnUserPresenceUpdated -= value;
 63        }
 64
 65        public event Action<FriendshipUpdateStatusMessage> OnFriendshipStatusUpdated
 66        {
 067            add => fallbackApiBridge.OnFriendshipStatusUpdated += value;
 068            remove => fallbackApiBridge.OnFriendshipStatusUpdated -= value;
 69        }
 70
 71        public event Action<UpdateTotalFriendRequestsPayload> OnTotalFriendRequestCountUpdated
 72        {
 073            add => fallbackApiBridge.OnTotalFriendRequestCountUpdated += value;
 074            remove => fallbackApiBridge.OnTotalFriendRequestCountUpdated -= value;
 75        }
 76
 77        public event Action<UpdateTotalFriendsPayload> OnTotalFriendCountUpdated
 78        {
 079            add => fallbackApiBridge.OnTotalFriendCountUpdated += value;
 080            remove => fallbackApiBridge.OnTotalFriendCountUpdated -= value;
 81        }
 82
 83        public event Action<FriendRequestPayload> OnFriendRequestAdded;
 84
 85        public static RPCFriendsApiBridge CreateSharedInstance(IRPC rpc, IFriendsApiBridge fallbackApiBridge)
 86        {
 087            i = new RPCFriendsApiBridge(rpc, fallbackApiBridge);
 088            return i;
 89        }
 90
 91        public static void RegisterService(RpcServerPort<RPCContext> port)
 92        {
 093            FriendRequestRendererServiceCodeGen.RegisterService(port, i);
 094        }
 95
 096        public RPCFriendsApiBridge(IRPC rpc, IFriendsApiBridge fallbackApiBridge)
 97        {
 098            this.rpc = rpc;
 099            this.fallbackApiBridge = fallbackApiBridge;
 0100        }
 101
 102        public void RejectFriendship(string userId) =>
 0103            fallbackApiBridge.RejectFriendship(userId);
 104
 105        public void RemoveFriend(string userId) =>
 0106            fallbackApiBridge.RemoveFriend(userId);
 107
 108        public void GetFriends(int limit, int skip) =>
 0109            fallbackApiBridge.GetFriends(limit, skip);
 110
 111        public void GetFriends(string usernameOrId, int limit) =>
 0112            fallbackApiBridge.GetFriends(usernameOrId, limit);
 113
 114        public void GetFriendRequests(int sentLimit, int sentSkip, int receivedLimit, int receivedSkip) =>
 0115            fallbackApiBridge.GetFriendRequests(sentLimit, sentSkip, receivedLimit, receivedSkip);
 116
 117        public async UniTask<AddFriendRequestsV2Payload> GetFriendRequestsAsync(int sentLimit, int sentSkip, int receive
 118        {
 0119            GetFriendRequestsReply response = await rpc.FriendRequests()
 120                                                       .GetFriendRequests(new KernelGetFriendRequestsPayload
 121                                                        {
 122                                                            SentLimit = sentLimit,
 123                                                            SentSkip = sentSkip,
 124                                                            ReceivedLimit = receivedLimit,
 125                                                            ReceivedSkip = receivedSkip
 126                                                        });
 127
 0128            return response.MessageCase == GetFriendRequestsReply.MessageOneofCase.Error
 129                ? throw new FriendshipException(ToErrorCode(response.Error))
 130                : new AddFriendRequestsV2Payload
 131                {
 132                    requestedTo = response.Reply.RequestedTo.Select(ToFriendRequestPayload).ToArray(),
 133                    requestedFrom = response.Reply.RequestedFrom.Select(ToFriendRequestPayload).ToArray(),
 134                    totalReceivedFriendRequests = response.Reply.TotalReceivedFriendRequests,
 135                    totalSentFriendRequests = response.Reply.TotalSentFriendRequests,
 136                };
 0137        }
 138
 139        public void GetFriendsWithDirectMessages(string usernameOrId, int limit, int skip) =>
 0140            fallbackApiBridge.GetFriendsWithDirectMessages(usernameOrId, limit, skip);
 141
 142        public void RequestFriendship(string friendUserId) =>
 0143            fallbackApiBridge.RequestFriendship(friendUserId);
 144
 145        public async UniTask<RequestFriendshipConfirmationPayload> RequestFriendshipAsync(string userId, string messageB
 146        {
 0147            SendFriendRequestReply reply = await rpc.FriendRequests()
 148                                                    .SendFriendRequest(new SendFriendRequestPayload
 149                                                     {
 150                                                         MessageBody = messageBody,
 151                                                         UserId = userId,
 152                                                     });
 153
 0154            return reply.MessageCase == SendFriendRequestReply.MessageOneofCase.Reply
 155                ? new RequestFriendshipConfirmationPayload
 156                {
 157                    friendRequest = ToFriendRequestPayload(reply.Reply.FriendRequest),
 158                }
 159                : throw new FriendshipException(ToErrorCode(reply.Error));
 0160        }
 161
 162        public async UniTask<CancelFriendshipConfirmationPayload> CancelRequestAsync(string friendRequestId)
 163        {
 0164            KernelCancelFriendRequestReply reply = await rpc.FriendRequests()
 165                                                            .CancelFriendRequest(new KernelCancelFriendRequestPayload
 166                                                             {
 167                                                                 FriendRequestId = friendRequestId
 168                                                             });
 169
 0170            return reply.MessageCase == KernelCancelFriendRequestReply.MessageOneofCase.Reply
 171                ? new CancelFriendshipConfirmationPayload
 172                {
 173                    friendRequest = ToFriendRequestPayload(reply.Reply.FriendRequest),
 174                }
 175                : throw new FriendshipException(ToErrorCode(reply.Error));
 0176        }
 177
 178        public UniTask CancelRequestByUserIdAsync(string userId) =>
 0179            fallbackApiBridge.CancelRequestByUserIdAsync(userId);
 180
 181        public void CancelRequestByUserId(string userId) =>
 0182            fallbackApiBridge.CancelRequestByUserId(userId);
 183
 184        public void CancelRequest(string userId) =>
 0185            fallbackApiBridge.CancelRequestAsync(userId);
 186
 187        public void AcceptFriendship(string userId) =>
 0188            fallbackApiBridge.AcceptFriendship(userId);
 189
 190        public UniTask<ApproveFriendRequestReply> ApproveFriendRequest(ApproveFriendRequestPayload request, RPCContext c
 0191            throw new NotImplementedException("implemented on feat/receive-friend-requests branch");
 192
 193        public UniTask<RendererRejectFriendRequestReply> RejectFriendRequest(RendererRejectFriendRequestPayload request,
 0194            throw new NotImplementedException("implemented on feat/receive-friend-requests branch");
 195
 196        public UniTask<RendererCancelFriendRequestReply> CancelFriendRequest(RendererCancelFriendRequestPayload request,
 0197            throw new NotImplementedException("implemented on feat/receive-friend-requests branch");
 198
 199        public UniTask<ReceiveFriendRequestReply> ReceiveFriendRequest(ReceiveFriendRequestPayload request, RPCContext c
 0200            throw new NotImplementedException("implemented on feat/receive-friend-requests branch");
 201
 202        private static FriendRequestPayload ToFriendRequestPayload(FriendRequestInfo request) =>
 0203            new FriendRequestPayload
 204            {
 205                from = request.From,
 206                timestamp = (long)request.Timestamp,
 207                to = request.To,
 208                messageBody = request.MessageBody,
 209                friendRequestId = request.FriendRequestId
 210            };
 211
 212        private FriendRequestErrorCodes ToErrorCode(FriendshipErrorCode code)
 213        {
 214            switch (code)
 215            {
 216                default:
 217                case FriendshipErrorCode.FecUnknown:
 0218                    return FriendRequestErrorCodes.Unknown;
 219                case FriendshipErrorCode.FecBlockedUser:
 0220                    return FriendRequestErrorCodes.BlockedUser;
 221                case FriendshipErrorCode.FecInvalidRequest:
 0222                    return FriendRequestErrorCodes.InvalidRequest;
 223                case FriendshipErrorCode.FecNonExistingUser:
 0224                    return FriendRequestErrorCodes.NonExistingUser;
 225                case FriendshipErrorCode.FecNotEnoughTimePassed:
 0226                    return FriendRequestErrorCodes.NotEnoughTimePassed;
 227                case FriendshipErrorCode.FecTooManyRequestsSent:
 0228                    return FriendRequestErrorCodes.TooManyRequestsSent;
 229            }
 230        }
 231    }
 232}

Methods/Properties

add_OnInitialized(System.Action[FriendshipInitializationMessage])
remove_OnInitialized(System.Action[FriendshipInitializationMessage])
add_OnFriendNotFound(System.Action[String])
remove_OnFriendNotFound(System.Action[String])
add_OnFriendsAdded(System.Action[AddFriendsPayload])
remove_OnFriendsAdded(System.Action[AddFriendsPayload])
add_OnFriendRequestsAdded(System.Action[AddFriendRequestsPayload])
remove_OnFriendRequestsAdded(System.Action[AddFriendRequestsPayload])
add_OnFriendWithDirectMessagesAdded(System.Action[AddFriendsWithDirectMessagesPayload])
remove_OnFriendWithDirectMessagesAdded(System.Action[AddFriendsWithDirectMessagesPayload])
add_OnUserPresenceUpdated(System.Action[UserStatus])
remove_OnUserPresenceUpdated(System.Action[UserStatus])
add_OnFriendshipStatusUpdated(System.Action[FriendshipUpdateStatusMessage])
remove_OnFriendshipStatusUpdated(System.Action[FriendshipUpdateStatusMessage])
add_OnTotalFriendRequestCountUpdated(System.Action[UpdateTotalFriendRequestsPayload])
remove_OnTotalFriendRequestCountUpdated(System.Action[UpdateTotalFriendRequestsPayload])
add_OnTotalFriendCountUpdated(System.Action[UpdateTotalFriendsPayload])
remove_OnTotalFriendCountUpdated(System.Action[UpdateTotalFriendsPayload])
CreateSharedInstance(DCL.IRPC, DCl.Social.Friends.IFriendsApiBridge)
RegisterService(rpc_csharp.RpcServerPort[RPCContext])
RPCFriendsApiBridge(DCL.IRPC, DCl.Social.Friends.IFriendsApiBridge)
RejectFriendship(System.String)
RemoveFriend(System.String)
GetFriends(System.Int32, System.Int32)
GetFriends(System.String, System.Int32)
GetFriendRequests(System.Int32, System.Int32, System.Int32, System.Int32)
GetFriendRequestsAsync()
GetFriendsWithDirectMessages(System.String, System.Int32, System.Int32)
RequestFriendship(System.String)
RequestFriendshipAsync()
CancelRequestAsync()
CancelRequestByUserIdAsync(System.String)
CancelRequestByUserId(System.String)
CancelRequest(System.String)
AcceptFriendship(System.String)
ApproveFriendRequest(Decentraland.Renderer.RendererServices.ApproveFriendRequestPayload, RPC.RPCContext, System.Threading.CancellationToken)
RejectFriendRequest(Decentraland.Renderer.RendererServices.RejectFriendRequestPayload, RPC.RPCContext, System.Threading.CancellationToken)
CancelFriendRequest(Decentraland.Renderer.RendererServices.CancelFriendRequestPayload, RPC.RPCContext, System.Threading.CancellationToken)
ReceiveFriendRequest(Decentraland.Renderer.RendererServices.ReceiveFriendRequestPayload, RPC.RPCContext, System.Threading.CancellationToken)
ToFriendRequestPayload(Decentraland.Renderer.Common.FriendRequestInfo)
ToErrorCode(Decentraland.Renderer.Common.FriendshipErrorCode)