Ejemplo n.º 1
0
        /// <summary>
        /// Gets the stored message track.
        /// </summary>
        /// <returns>The track.</returns>
        /// <param name="identifier">Identifier.</param>
        /// <param name="password">Password.</param>
        /// <param name="pk">Pk.</param>
        public async Task <MessageTrackDto> MessageTrack(SecureString identifier, SecureString password, string pk)
        {
            Guard.Argument(identifier, nameof(identifier)).NotNull();
            Guard.Argument(password, nameof(password)).NotNull();

            MessageTrackDto messageTrack = null;

            using (var insecureIdentifier = identifier.Insecure())
            {
                try
                {
                    var data = await vaultServiceClient.GetDataAsync(identifier, password, $"wallets/{insecureIdentifier.Value}/wallet");

                    if (data.Data.TryGetValue("messages", out object msgs))
                    {
                        messageTrack = ((JArray)msgs).ToObject <List <MessageTrackDto> >().FirstOrDefault(msg => msg.PublicKey.Equals(pk));
                    }
                }
                catch (Exception ex)
                {
                    logger.LogError(ex.Message);
                }
            }

            return(messageTrack);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Gets the stored message track.
        /// </summary>
        /// <returns>The track.</returns>
        /// <param name="identifier">Identifier.</param>
        /// <param name="password">Password.</param>
        /// <param name="pk">Pk.</param>
        public async Task <MessageTrackDto> MessageTrack(SecureString identifier, SecureString password, string pk)
        {
            if (identifier == null)
            {
                throw new ArgumentNullException(nameof(identifier));
            }

            if (password == null)
            {
                throw new ArgumentNullException(nameof(password));
            }

            MessageTrackDto messageTrack = null;

            using (var insecureIdentifier = identifier.Insecure())
            {
                var data = await vaultService.GetDataAsync(identifier, password, $"wallets/{insecureIdentifier.Value}/wallet");

                if (data.Data.TryGetValue("messages", out object msgs))
                {
                    messageTrack = ((JArray)msgs).ToObject <List <MessageTrackDto> >().FirstOrDefault(msg => msg.PublicKey.Equals(pk));
                }
            }

            return(messageTrack);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Adds message tracking.
        /// </summary>
        /// <returns>The message tracking.</returns>
        /// <param name="identifier">Identifier.</param>
        /// <param name="password">Password.</param>
        /// <param name="messageTrack">Message track.</param>
        public async Task <bool> AddMessageTracking(SecureString identifier, SecureString password, MessageTrackDto messageTrack)
        {
            Guard.Argument(identifier, nameof(identifier)).NotNull();
            Guard.Argument(password, nameof(password)).NotNull();
            Guard.Argument(messageTrack, nameof(messageTrack)).NotNull();

            bool added = false;

            using (var insecureIdentifier = identifier.Insecure())
            {
                try
                {
                    var found = false;
                    var data  = await vaultServiceClient.GetDataAsync(identifier, password, $"wallets/{insecureIdentifier.Value}/wallet");

                    if (data.Data.TryGetValue("track", out object msgs))
                    {
                        foreach (JObject item in ((JArray)msgs).Children().ToList())
                        {
                            var pk = item.GetValue("PublicKey");
                            found = pk.Value <string>().Equals(messageTrack.PublicKey);
                        }

                        if (!found)
                        {
                            ((JArray)msgs).Add(JObject.FromObject(messageTrack));
                        }
                        else
                        {
                            ((JArray)msgs).Replace(JObject.FromObject(messageTrack));
                        }
                    }
                    else
                    {
                        data.Data.Add("track", new List <MessageTrackDto> {
                            messageTrack
                        });
                    }

                    await vaultServiceClient.SaveDataAsync(identifier, password, $"wallets/{insecureIdentifier.Value}/wallet", data.Data);

                    added = true;
                }
                catch (Exception ex)
                {
                    logger.LogError(ex.Message);
                }
            }

            return(added);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Adds if not found or updates message tracking.
        /// </summary>
        /// <returns>The message tracking.</returns>
        /// <param name="identifier">Identifier.</param>
        /// <param name="password">Password.</param>
        /// <param name="messageTrack">Message track.</param>
        public async Task AddMessageTracking(SecureString identifier, SecureString password, MessageTrackDto messageTrack)
        {
            if (identifier == null)
            {
                throw new ArgumentNullException(nameof(identifier));
            }

            if (password == null)
            {
                throw new ArgumentNullException(nameof(password));
            }

            if (messageTrack == null)
            {
                throw new ArgumentNullException(nameof(messageTrack));
            }

            using (var insecureIdentifier = identifier.Insecure())
            {
                var found = false;
                var data  = await vaultService.GetDataAsync(identifier, password, $"wallets/{insecureIdentifier.Value}/wallet");

                if (data.Data.TryGetValue("messages", out object msgs))
                {
                    foreach (JObject item in ((JArray)msgs).Children().ToList())
                    {
                        var pk = item.GetValue("PublicKey");
                        found = pk.Value <string>().Equals(messageTrack.PublicKey);
                    }

                    if (!found)
                    {
                        ((JArray)msgs).Add(JObject.FromObject(messageTrack));
                    }
                    else
                    {
                        ((JArray)msgs).Replace(JObject.FromObject(messageTrack));
                    }
                }
                else
                {
                    data.Data.Add("messages", new List <MessageTrackDto> {
                        messageTrack
                    });
                }

                await vaultService.SaveDataAsync(identifier, password, $"wallets/{insecureIdentifier.Value}/wallet", data.Data);
            }
        }