public static async Task <IpfsFileListing> Load() { IpfsFileListing returnValue = new IpfsFileListing(); try { //Load the file listing if we have one locally if (File.Exists(ListingFilename)) { using (StreamReader reader = new StreamReader(File.OpenRead(ListingFilename))) { string json = reader.ReadToEnd(); returnValue = JsonConvert.DeserializeObject <IpfsFileListing>(json); } } string localPeerId = IpfsApiWrapper.GetPeerId(); //Validate that the local file matches the remote file /*{ * string listingFileHash = await IpfsApiWrapper.ResolveAsync(localPeerId); * IpfsFileListing remoteFileListing = await FetchListingFile(listingFileHash, false); * if (remoteFileListing != returnValue) * { * returnValue.Dirty = true; * } * }*/ PeerListing peerListing = await IpfsApiWrapper.GetPeerListingAsync(); foreach (string peer in peerListing.Peers) { IpfsFileListing peerFileListing = null; if (peer != localPeerId) { string listingFileHash = await IpfsApiWrapper.ResolveAsync(peer); peerFileListing = await FetchListingFile(listingFileHash, false); } else if (File.Exists(ListingFilename)) { string listingFileHash = await IpfsApiWrapper.ResolveAsync(); peerFileListing = await FetchListingFile(listingFileHash, true); } returnValue.MergeFile(peerFileListing); } } catch { } await returnValue.Sync(); return(returnValue); }
private async void SyncIpfsListing() { Status = "Synching with Network..."; await IpfsApiWrapper.GetPeerListingAsync(); await IpfsApiWrapper.GetFileListingAsync(); Status = "Up to date"; }