public async Task <Listing> LinksForSubreddit(Subreddits subreddits, string subredditName, string after) { var subredditId = await TranslateSubredditNameToId(subreddits, subredditName); var keyspace = new byte[8]; for (int i = 0; i < 8 && i < subredditId.Length; i++) { keyspace[i] = (byte)subredditId[i]; } var linkCursor = await _linksDB.SelectAsync(_linksDB.GetKeys().First(), keyspace); if (after != null && linkCursor != null) { var afterKeyspace = new byte[16]; for (int i = 0; i < 16 && i < after.Length + 10; i++) { afterKeyspace[i] = (byte)after[i + 2]; //skip ahead past the after type identifier } await linkCursor.SeekAsync(_linksDB.GetKeys().First(), afterKeyspace); } return(await DeserializeCursor(linkCursor, 25)); }
private async Task <string> TranslateSubredditNameToId(Subreddits subreddits, string subredditName) { var subreddit = await subreddits.GetSubreddit(null, subredditName); if (subreddit != null) { return(((Subreddit)subreddit.Data).Name); } else { return(null); } }
public async Task<Listing> LinksForSubreddit(Subreddits subreddits, string subredditName, string after) { try { var subredditId = await TranslateSubredditNameToId(subreddits, subredditName); if (subredditId == null) return new Listing { Data = new ListingData { Children = new List<Thing>() } }; var keyspace = new byte[8]; for (int i = 0; i < 8 && i < subredditId.Length; i++) keyspace[i] = (byte)subredditId[i]; using (var linkCursor = await _linksDB.SelectAsync(_linksDB.GetKeys().First(), keyspace)) { if (after != null && linkCursor != null) { var afterKeyspace = new byte[16]; for (int i = 0; i < 16 && i < after.Length + 10; i++) afterKeyspace[i] = (byte)after[i + 2]; //skip ahead past the after type identifier await linkCursor.SeekAsync(_linksDB.GetKeys().First(), afterKeyspace, DBReadFlags.NoLock); } return await DeserializeCursor(linkCursor, 25); } } catch (Exception ex) { var errorCode = DBError.TranslateError((uint)ex.HResult); Debug.WriteLine(errorCode); return new Listing { Data = new ListingData { Children = new List<Thing>() } }; } }
private async Task<string> TranslateSubredditNameToId(Subreddits subreddits, string subredditName) { var subreddit = await subreddits.GetSubreddit(null, subredditName); if (subreddit != null) return ((Subreddit)subreddit.Data).Name; else return null; }