/// <summary> /// Gets my comments. /// </summary> /// <returns>List<MyComments>.</returns> public List <MyComments> GetMyComments() { string plainJson; using (var client = new MyWebClient()) { client.Encoding = Encoding.UTF8; plainJson = client.DownloadString(Constants.LinkGetMyComments.ToLink()); } JsonMyComments.RootObject myComments = JsonConvert.DeserializeObject <JsonMyComments.RootObject>(plainJson); return(myComments.posts.Select(item => new MyComments { PostId = item.post_id, Message = item.message, HexColor = item.color, VoteCount = item.vote_count, IsOwn = item.post_own.Equals("own"), Latitude = item.location.loc_coordinates.lat.ToString(), Longitude = item.location.loc_coordinates.lng.ToString(), LocationName = item.location.name }).ToList()); }
/// <summary> /// Refreshes the access token. /// </summary> /// <param name="accessToken">The access token.</param> /// <param name="refreshToken">The refresh token.</param> /// <returns>Tokens.</returns> public Tokens RefreshAccessToken(string accessToken, string refreshToken) { string plainJson; const string payload = @"{""refresh_token"": ""{RT}""}"; using (var client = new MyWebClient()) { client.Encoding = Encoding.UTF8; client.Headers.Add("Content-Type", "application/json"); plainJson = client.UploadString(Constants.LinkRefreshToken.Replace("{AT}", accessToken), payload.Replace("{RT}", refreshToken)); } JsonRefreshTokens.RootObject objRefToken = JsonConvert.DeserializeObject <JsonRefreshTokens.RootObject>(plainJson); return(new Tokens { AccessToken = objRefToken.access_token, ExpireTimestamp = objRefToken.expiration_date, RefreshToken = refreshToken }); }
/// <summary> /// Get's all Jodels from this channel. /// </summary> /// <param name="channel">The channel.</param> /// <returns>List<ChannelJodel>.</returns> public async Task <List <ChannelJodel> > GetJodelsAsync(string channel) { string plainJson; using (var client = new MyWebClient()) { client.Encoding = Encoding.UTF8; var taskResult = await Task.FromResult( client.DownloadStringTaskAsync(new Uri(Constants.LinkGetJodelsFromChannel.ToLink(channel)))); plainJson = taskResult.Result; } JsonGetJodelsFromChannel.RootObject myJodelsFromChannel = JsonConvert.DeserializeObject <JsonGetJodelsFromChannel.RootObject>(plainJson); return(myJodelsFromChannel.recent.Select(item => new ChannelJodel { PostId = item.post_id, Message = item.message, VoteCount = item.vote_count, PinCount = item.pin_count, IsOwn = item.post_own.Equals("own") }).ToList()); }
/// <summary> /// Gets the second amount of Jodels Async (internal usage) /// </summary> /// <returns>List<Jodels>.</returns> public async Task <List <Jodels> > GetNextJodelsAsync() { List <Jodels> temp = new List <Jodels>(); for (int e = 0; e < 3; e++) { string plainJson, lockedUrl; lock (_lastPostId) { lockedUrl = Constants.LinkSecondJodels.ToLink(_lastPostId); } using (var client = new MyWebClient()) { client.Encoding = Encoding.UTF8; plainJson = await client.DownloadStringTaskAsync(new Uri(lockedUrl)); } JsonJodelsLastRound.RootObject jlr = JsonConvert.DeserializeObject <JsonJodelsLastRound.RootObject>(plainJson); foreach (var item in jlr.posts) { string image_url = ""; bool isUrl = false; if (item.image_url != null) { image_url = "http:" + item.image_url; isUrl = true; } Jodels objJodels = new Jodels { PostId = item.post_id, Message = item.message, HexColor = item.color, IsImage = isUrl, ImageUrl = image_url, VoteCount = item.vote_count, LocationName = item.location.name, CommentsCount = item.child_count ?? 0, ChildCount = item.child_count ?? 0, CreatedAt = DateTime.ParseExact(item.created_at.Replace("Z", "").Replace("T", " "), "yyyy-MM-dd HH:mm:ss.fff", null), UpdatedAt = DateTime.ParseExact(item.updated_at.Replace("Z", "").Replace("T", " "), "yyyy-MM-dd HH:mm:ss.fff", null), Distance = item.distance, IsNotificationEnabled = item.notifications_enabled, PinCount = item.pin_count, PostOwn = item.post_own, UserHandle = item.user_handle }; temp.Add(objJodels); } if (temp.Count == 0) { return(temp); // not enough Jodels anymore. } lock (_lastPostId) { _lastPostId = temp.Last().PostId; // Set the last post_id for next jodels } } return(temp); }