public static async Task<Stream> ImageStreamFromUrl(string url)
{
var uri = new Uri(url);
string filename = Path.GetFileName(uri.LocalPath);
if (filename.EndsWith(".jpg") || filename.EndsWith(".png") || filename.EndsWith(".jpeg") || filename.EndsWith(".gif"))
{
}
else
{
var targetHost = uri.DnsSafeHost.ToLower(); //make sure we can compare caseless
IEnumerable<Tuple<string, string>> imageAPIResults = null;
switch (targetHost)
{
case "imgur.com":
imageAPIResults = await Imgur.GetImagesFromUri("", uri);
break;
case "min.us":
imageAPIResults = await Minus.GetImagesFromUri("", uri);
break;
case "www.quickmeme.com":
case "i.qkme.me":
case "quickmeme.com":
case "qkme.me":
imageAPIResults = Quickmeme.GetImagesFromUri("", uri);
break;
case "memecrunch.com":
imageAPIResults = Memecrunch.GetImagesFromUri("", uri);
break;
case "www.flickr.com":
case "flickr.com":
imageAPIResults = await Flickr.GetImagesFromUri("", uri);
break;
}
if (imageAPIResults != null)
{
uri = new Uri(imageAPIResults.First().Item2);
filename = Path.GetFileName(uri.LocalPath);
}
}
if (!(filename.EndsWith(".jpg") || filename.EndsWith(".png") || filename.EndsWith(".jpeg") || filename.EndsWith(".gif")))
return null;
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
request.AllowReadStreamBuffering = true;
using (WebResponse response = await SimpleHttpService.GetResponseAsync(request))
{
return response.GetResponseStream();
}
}