private static void DecodeInfoNode(MetaInfo metaInfo, DictNode infoNode) { IntNode pieceLengthNode = infoNode["piece length"] as IntNode; Debug.Assert(pieceLengthNode != null); metaInfo.PieceLength = pieceLengthNode.IntValue; BytesNode piecesNode = infoNode["pieces"] as BytesNode; Debug.Assert(piecesNode != null); metaInfo.SetFullHashValues(piecesNode.ByteArray); if (infoNode.ContainsKey("private")) { IntNode privateNode = infoNode["private"] as IntNode; Debug.Assert(privateNode != null); metaInfo.Private = privateNode.Value == 1; } }
private static void DecodeRootNode(MetaInfo metaInfo, DictNode rootNode) { BytesNode annouceNode = rootNode["announce"] as BytesNode; Debug.Assert(annouceNode != null); metaInfo.Announce = annouceNode.StringText; if (rootNode.ContainsKey("announce-list")) { ListNode announceListNode = rootNode["announce-list"] as ListNode; Debug.Assert(announceListNode != null); foreach (ListNode announceArrayNode in announceListNode) { Debug.Assert(announceArrayNode != null); IList <string> announceArray = new List <string>(); foreach (BytesNode node in announceArrayNode) { Debug.Assert(node != null); announceArray.Add(node.StringText); } metaInfo.AddAnnounceArray(announceArray); } } if (rootNode.ContainsKey("creation date")) { IntNode creationDataNode = rootNode["creation date"] as IntNode; Debug.Assert(creationDataNode != null); metaInfo.CreationDate = creationDataNode.Value.FromUnixEpochFormat(); } else { metaInfo.CreationDate = new DateTime(1970, 1, 1); } if (rootNode.ContainsKey("comment")) { BytesNode commentNode = rootNode["comment"] as BytesNode; Debug.Assert(commentNode != null); metaInfo.Comment = commentNode.StringText; } else { metaInfo.Comment = String.Empty; } if (rootNode.ContainsKey("created by")) { BytesNode createdByNode = rootNode["created by"] as BytesNode; Debug.Assert(createdByNode != null); metaInfo.CreatedBy = createdByNode.StringText; } else { metaInfo.CreatedBy = String.Empty; } if (rootNode.ContainsKey("encoding")) { BytesNode encodingNode = rootNode["encoding"] as BytesNode; Debug.Assert(encodingNode != null); metaInfo.Encoding = encodingNode.StringText; } else { metaInfo.Encoding = "ASCII"; } }