Пример #1
0
        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;
        }
Пример #2
0
 private string StoreImageInBlob(ImageRequest imageRequest, MemoryStream downloadedFile)
 {
     downloadedFile.Seek(0, SeekOrigin.Begin);
     return m_blobStorage.Save("image/" + imageRequest.Extension, downloadedFile).AbsoluteUri;
 }
Пример #3
0
 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();
     }
 }
Пример #4
0
        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);
            }
        }
Пример #5
0
        /// <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;
        }
Пример #6
0
        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;
        }