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)); }
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); } }