Ejemplo n.º 1
0
        public static async Task <Result <IMd> > LocateAsync(MdLocator location, NetworkDataOps networkDataOp)
        {
            var mdResult = await networkDataOp.LocatePublicMd(location.XORName, location.TypeTag);

            if (!mdResult.HasValue)
            {
                return(new KeyNotFound <IMd>($"Could not locate md: {location.TypeTag}, {location.XORName}"));
            }

            var mdInfo = mdResult.Value;
            var md     = new MdOps(mdInfo, networkDataOp.Session);
            await md.GetOrAddMetadata();

            return(Result.OK((IMd)md));
        }
Ejemplo n.º 2
0
        public static async Task <IMd> CreateNewMdOpsAsync(int level, NetworkDataOps networkDataOps, ulong protocol)
        {
            var session = networkDataOps.Session;

            // Create Permissions
            using (var permissionsHandle = await session.MDataPermissions.NewAsync())
            {
                using (var appSignPkH = await session.Crypto.AppPubSignKeyAsync())
                {
                    await session.MDataPermissions.InsertAsync(permissionsHandle, appSignPkH, networkDataOps.GetFullPermissions());
                }

                var mdInfo = await networkDataOps.CreateEmptyRandomPrivateMd(permissionsHandle, protocol);

                var newMd = new MdOps(mdInfo, session);
                await newMd.Initialize(level).ConfigureAwait(false);

                return(newMd);
            }
        }