public async Task<Thing> GetLinkByUrl(string url)
{
try
{
var originalUrl = url;
if (originalUrl.Contains(".json"))
{
}
else if (originalUrl.Contains("?"))
{
var queryPos = url.IndexOf("?");
url = string.Format("{0}.json{1}", originalUrl.Remove(queryPos), originalUrl.Substring(queryPos));
}
else
{
url = originalUrl + ".json";
}
Listing listing = null;
var comments = await _simpleHttpService.SendGet(await GetCurrentLoginCookie(), url);
if (comments.StartsWith("["))
{
var listings = JsonConvert.DeserializeObject<Listing[]>(comments);
listing = new Listing { Data = new ListingData { Children = new List<Thing>() } };
foreach (var combinableListing in listings)
{
listing.Data.Children.AddRange(combinableListing.Data.Children);
listing.Kind = combinableListing.Kind;
listing.Data.After = combinableListing.Data.After;
listing.Data.Before = combinableListing.Data.Before;
}
}
else
listing = JsonConvert.DeserializeObject<Listing>(comments);
var requestedLinkInfo = listing.Data.Children.FirstOrDefault(thing => thing.Data is Link);
if (requestedLinkInfo != null)
{
var result = MaybeFilterForNSFW(listing);
((Link)requestedLinkInfo.Data).Permalink = originalUrl;
_lastCommentsOnPostRequest = Tuple.Create(DateTime.Now, ((Link)requestedLinkInfo.Data).Subreddit, ((Link)requestedLinkInfo.Data).Permalink, result);
return requestedLinkInfo;
}
else
return null;
}
catch(Exception ex)
{
_notificationService.CreateErrorNotification(ex);
return null;
}
}