@@ -25,23 +25,23 @@ public class Comment : VotableThing
25
25
26
26
public async Task < Comment > InitAsync ( Reddit reddit , JToken json , IWebAgent webAgent , Thing sender )
27
27
{
28
- var data = await CommonInit ( reddit , json , webAgent , sender ) ;
29
- await ParseComments ( reddit , json , webAgent , sender ) ;
28
+ var data = await CommonInitAsync ( reddit , json , webAgent , sender ) ;
29
+ await ParseCommentsAsync ( reddit , json , webAgent , sender ) ;
30
30
await JsonConvert . PopulateObjectAsync ( data . ToString ( ) , this , reddit . JsonSerializerSettings ) ;
31
31
return this ;
32
32
}
33
33
34
34
public Comment Init ( Reddit reddit , JToken json , IWebAgent webAgent , Thing sender )
35
35
{
36
36
var data = CommonInit ( reddit , json , webAgent , sender ) ;
37
- ParseComments ( reddit , json , webAgent , sender ) . Wait ( ) ;
37
+ ParseComments ( reddit , json , webAgent , sender ) ;
38
38
JsonConvert . PopulateObject ( data . ToString ( ) , this , reddit . JsonSerializerSettings ) ;
39
39
return this ;
40
40
}
41
41
42
- private async Task < JToken > CommonInit ( Reddit reddit , JToken json , IWebAgent webAgent , Thing sender )
42
+ private JToken CommonInit ( Reddit reddit , JToken json , IWebAgent webAgent , Thing sender )
43
43
{
44
- await InitAsync ( reddit , webAgent , json ) ;
44
+ Init ( reddit , webAgent , json ) ;
45
45
var data = json [ "data" ] ;
46
46
Reddit = reddit ;
47
47
WebAgent = webAgent ;
@@ -56,8 +56,38 @@ private async Task<JToken> CommonInit(Reddit reddit, JToken json, IWebAgent webA
56
56
57
57
return data ;
58
58
}
59
+ private async Task < JToken > CommonInitAsync ( Reddit reddit , JToken json , IWebAgent webAgent , Thing sender )
60
+ {
61
+ await InitAsync ( reddit , webAgent , json ) ;
62
+ var data = json [ "data" ] ;
63
+ Reddit = reddit ;
64
+ WebAgent = webAgent ;
65
+ Parent = sender ;
66
+
67
+ // Handle Reddit's API being horrible
68
+ if ( data [ "context" ] != null )
69
+ {
70
+ var context = data [ "context" ] . Value < string > ( ) ;
71
+ LinkId = context . Split ( '/' ) [ 4 ] ;
72
+ }
73
+
74
+ return data ;
75
+ }
76
+
77
+ private void ParseComments ( Reddit reddit , JToken data , IWebAgent webAgent , Thing sender )
78
+ {
79
+ // Parse sub comments
80
+ var replies = data [ "data" ] [ "replies" ] ;
81
+ var subComments = new List < Comment > ( ) ;
82
+ if ( replies != null && replies . Count ( ) > 0 )
83
+ {
84
+ foreach ( var comment in replies [ "data" ] [ "children" ] )
85
+ subComments . Add ( new Comment ( ) . Init ( reddit , comment , webAgent , sender ) ) ;
86
+ }
87
+ Comments = subComments . ToArray ( ) ;
88
+ }
59
89
60
- private async Task ParseComments ( Reddit reddit , JToken data , IWebAgent webAgent , Thing sender )
90
+ private async Task ParseCommentsAsync ( Reddit reddit , JToken data , IWebAgent webAgent , Thing sender )
61
91
{
62
92
// Parse sub comments
63
93
var replies = data [ "data" ] [ "replies" ] ;
0 commit comments