3
3
using System . Linq ;
4
4
using System . Security . Authentication ;
5
5
using System . Threading . Tasks ;
6
- using HtmlAgilityPack ;
7
6
using Newtonsoft . Json ;
8
7
using Newtonsoft . Json . Linq ;
9
8
using RedditSharp . Extensions . DateTimeExtensions ;
@@ -262,9 +261,9 @@ public SubredditSettings Settings
262
261
}
263
262
}
264
263
/// <summary>
265
- /// Hacky way to obtain flair templates
264
+ /// Get a list of the available user flair templates for the subreddit
266
265
/// </summary>
267
- public UserFlairTemplate [ ] UserFlairTemplates // Hacky, there isn't a proper endpoint for this
266
+ public UserFlairTemplate [ ] UserFlairTemplates
268
267
{
269
268
get
270
269
{
@@ -279,19 +278,13 @@ public SubredditSettings Settings
279
278
stream . Close ( ) ;
280
279
var response = request . GetResponse ( ) ;
281
280
var data = WebAgent . GetResponseString ( response . GetResponseStream ( ) ) ;
282
- var document = new HtmlDocument ( ) ;
283
- document . LoadHtml ( data ) ;
284
- if ( document . DocumentNode . Descendants ( "div" ) . First ( ) . Attributes [ "error" ] != null )
285
- throw new InvalidOperationException ( "This subreddit does not allow users to select flair." ) ;
286
- var templateNodes = document . DocumentNode . Descendants ( "li" ) ;
281
+ var json = JObject . Parse ( data ) ;
282
+ var choices = json [ "choices" ] ;
287
283
var list = new List < UserFlairTemplate > ( ) ;
288
- foreach ( var node in templateNodes )
284
+ foreach ( var choice in choices )
289
285
{
290
- list . Add ( new UserFlairTemplate
291
- {
292
- CssClass = node . Descendants ( "span" ) . First ( ) . Attributes [ "class" ] . Value . Split ( ' ' ) [ 1 ] ,
293
- Text = node . Descendants ( "span" ) . First ( ) . InnerText
294
- } ) ;
286
+ UserFlairTemplate template = JsonConvert . DeserializeObject < UserFlairTemplate > ( choice . ToString ( ) ) ;
287
+ list . Add ( template ) ;
295
288
}
296
289
return list . ToArray ( ) ;
297
290
}
0 commit comments