Skip to content

Commit a55becc

Browse files
fix(MerkleNode): Links are a sequence of DagLink
1 parent cea4bdb commit a55becc

File tree

2 files changed

+26
-12
lines changed

2 files changed

+26
-12
lines changed

src/MerkleNode.cs

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public class MerkleNode
2323
long linksSize;
2424
long linksCount;
2525
string name;
26-
MerkleNode[] links;
26+
IEnumerable<DagLink> links;
2727
IpfsClient ipfsClient;
2828

2929
/// <summary>
@@ -46,6 +46,17 @@ public MerkleNode(string hash, string name = null)
4646
Name = name;
4747
}
4848

49+
/// <summary>
50+
/// Creates a new instance of the <see cref="MerkleNode"/> from the
51+
/// <see cref="DagLink"/>.
52+
/// </summary>
53+
/// <param name="link">The link to a node.</param>
54+
public MerkleNode(DagLink link)
55+
{
56+
Hash = link.Hash;
57+
Name = link.Name;
58+
}
59+
4960
internal IpfsClient IpfsClient
5061
{
5162
get
@@ -117,22 +128,13 @@ public long LinksCount
117128
/// <summary>
118129
/// TODO
119130
/// </summary>
120-
public IEnumerable<MerkleNode> Links
131+
public IEnumerable<DagLink> Links
121132
{
122133
get
123134
{
124135
if (links == null)
125136
{
126-
if (linksCount == 0)
127-
{
128-
links = new MerkleNode[0];
129-
}
130-
else
131-
{
132-
var result = IpfsClient.DoCommand<dynamic>("object/links", Hash);
133-
links = ((JArray)result.Links)
134-
.Select(l => new MerkleNode((string)l["Hash"], (string)l["Name"])).ToArray();
135-
}
137+
links = IpfsClient.Object.LinksAsync(Hash).Result;
136138
}
137139

138140
return links;
@@ -198,6 +200,8 @@ void GetObjectStats()
198200
dataSize = stats.DataSize;
199201
linksSize = stats.LinksSize;
200202
linksCount = stats.NumLinks;
203+
if (linksCount == 0)
204+
links = new DagLink[0];
201205

202206
hasObjectStats = true;
203207
hasBlockStats = true;

test/MerkleNodeTest.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,16 @@ public void Links_and_LinksCount()
3131
Assert.AreEqual(6, node.Links.Count());
3232
}
3333

34+
[TestMethod]
35+
public void FromALink()
36+
{
37+
var node = new MerkleNode(IpfsInfo);
38+
var link = new MerkleNode(node.Links.First());
39+
Assert.AreEqual(link.Hash, node.Links.First().Hash);
40+
Assert.AreEqual(link.Name, node.Links.First().Name);
41+
Assert.AreEqual(link.BlockSize, node.Links.First().Size);
42+
}
43+
3444
[TestMethod]
3545
public void Value_Equality()
3646
{

0 commit comments

Comments
 (0)