public string GetSearchURL(ImageRequest request) { var searchTerm = string.Join(" ", request.SearchTerms); var bingRequest = new BingRequest(); bingRequest.SearchTerm = searchTerm; HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(bingRequest.Url); httpRequest.MaximumAutomaticRedirections = 4; httpRequest.MaximumResponseHeadersLength = 4; httpRequest.Credentials = new NetworkCredential(ConfigurationManager.AppSettings["BingSearchAPIKey"], ConfigurationManager.AppSettings["BingSearchAPIKey"]); HttpWebResponse response = (HttpWebResponse)httpRequest.GetResponse(); // Get the stream associated with the response. Stream receiveStream = response.GetResponseStream(); string content; using (StreamReader reader = new StreamReader(receiveStream, Encoding.UTF8)) { content = reader.ReadToEnd(); } string uriOfImage = null; try { var images = bingRequest.Parse(content); if (images.Count() > 0) uriOfImage = images.ElementAt(request.Index).Url; } catch (IndexOutOfRangeException) { // No results were found so return a 404 uriOfImage = new Uri(HttpContext.Current.Request.Url, "404.jpeg").AbsoluteUri; } return uriOfImage; }
private string StoreImageInBlob(ImageRequest imageRequest, MemoryStream downloadedFile) { downloadedFile.Seek(0, SeekOrigin.Begin); return m_blobStorage.Save("image/" + imageRequest.Extension, downloadedFile).AbsoluteUri; }
private void StoreBlobInfoInDB(ImageRequest imageRequest, string newBlobUri) { using (var db = new PictureContext()) { db.Pictures.Add(new ImageStore { BlobURL = newBlobUri, Extension = imageRequest.Extension, SearchTermString = imageRequest.GetSearchTermsDisplay, Index = imageRequest.Index }); db.SaveChanges(); } }
private void ReturnDownloadedImage(Stream downloadedFile, HttpContext context, ImageRequest request) { using (var image = Image.FromStream(downloadedFile)) using (var bmp = new Bitmap(image.Width, image.Height)) using (var gr = Graphics.FromImage(bmp)) { gr.DrawImage(image, new Rectangle(0, 0, image.Width, image.Height)); context.Response.ContentType = "image/png"; bmp.Save(context.Response.OutputStream, ImageFormat.Png); } }
/// <summary> /// Parses out context request to see what the user was looking for. /// /// TODO: Add image resolution and other stuff as allowed params. /// </summary> /// <param name="context"></param> /// <returns></returns>image private ImageRequest GetImageRequest(HttpContext context) { var appPath = context.Request.ApplicationPath; if (appPath.Length > 1) appPath += "/"; var fileNameWithoutAppPath = context.Request.CurrentExecutionFilePath.TrimStart(appPath); var fileNameWithoutExtension = fileNameWithoutAppPath.TrimEnd(context.Request.CurrentExecutionFilePathExtension); fileNameWithoutExtension = fileNameWithoutExtension.Replace("/", "_"); // if someone types a / replace it with a _ fileNameWithoutExtension = fileNameWithoutExtension.Replace("\\", "_"); // if someone types a \ replace it with a _ var searchQueries = fileNameWithoutExtension.Split('_'); // <-- HAHA a '_' face! *cute* int index = 0; if (context.Request.QueryString.AllKeys.Count() > 0) int.TryParse(context.Request.QueryString[null], out index); ImageRequest image = new ImageRequest() { Extension = context.Request.CurrentExecutionFilePathExtension.TrimStart('.'), // remove leading period SearchTerms = searchQueries, Index = index % 50, // if it's larger than 49, then just take the remainder }; return image; }
private string CheckIfInBlob(ImageRequest imageRequest) { using (var db = new PictureContext()) { ImageStore image = db.Pictures.Where(i => i.Extension == imageRequest.Extension && i.SearchTermString == imageRequest.GetSearchTermsDisplay && i.Index == imageRequest.Index ).FirstOrDefault(); if (image != null) return image.BlobURL; } return null; }