protected override bool DoProcessRequest(HttpContext context, MediaRequest request, Sitecore.Resources.Media.Media media)
        {
            Assert.ArgumentNotNull(context, "context");
            Assert.ArgumentNotNull(request, "request");
            Assert.ArgumentNotNull(media, "media");

            if (this.Modified(context, media, request.Options) == Sitecore.Tristate.False)
            {
                Event.RaiseEvent("media:request", new object[] { request });
                this.SendMediaHeaders(media, context);
                context.Response.StatusCode = 0x130;
                return true;
            }

            // Gets media stream for the requested media item thumbnail
            MediaStream stream = ProcessThumbnail(request, media);
            if (stream == null)
            {
                return false;
            }
            Event.RaiseEvent("media:request", new object[] { request });
            this.SendMediaHeaders(media, context);
            this.SendStreamHeaders(stream, context);
            using (stream)
            {
                context.Response.AddHeader("Content-Length", stream.Stream.Length.ToString());
                WebUtil.TransmitStream(stream.Stream, context.Response, Settings.Media.StreamBufferSize);
            }
            return true;
        }
        public MediaResponse IsFileExists(MediaRequest request)
        {
            try
            {
                Log.Instance.LogAsInfo($"{nameof(ImageDbFileSource)}.{nameof(IsFileExists)}: IsFileExists is started");
                bool result;
                if (request.MediaId % 2 == 0)
                {
                    result = IsFileExists(_uowPhotoSQL, request.MediaType, request.MediaId);
                }
                else
                {
                    result = IsFileExists(_uowPhotoMongo, request.MediaType, request.MediaId);
                }

                Log.Instance.LogAsInfo($"{nameof(ImageDbFileSource)}.{nameof(IsFileExists)}: IsFileExists is successfully completed");

                return(MediaResponse.NoErrorWithResult(result));
            }
            catch (Exception ex)
            {
                Log.Instance.ExceptionInfo(ex).LogAsInfo($"{nameof(ImageDbFileSource)}.{nameof(IsFileExists)}: Error");
                return(MediaResponse.ErrorWithMessage(ex.Message));
            }
        }
        public new bool DoProcessRequest(HttpContext context, MediaRequest request, Media media)
        {
            media = DetermineImageResponse(context, request, media);
            bool result = base.DoProcessRequest(context, request, media);

            return(result);
        }
        private void button1_Click(object sender, EventArgs e)
        {
            ServiceReference1.Service1Client client = new ServiceReference1.Service1Client();

            MediaRequest request = new MediaRequest();



            request.Nota1 = Convert.ToDouble(txtP1.Text);

            request.Nota2 = Convert.ToDouble(txtP2.Text);



            MediaResponse response = client.CalcularMedia(request);


            txtResultado.Text = response.Resultado;

            txtMedia.Text = response.Media.ToString();



            client.Close();
        }
        protected override bool DoProcessRequest(HttpContext context, MediaRequest request, Sitecore.Resources.Media.Media media)
        {
            if (Context.Database.Name.ToLower() != "core")
            {
                string mediaId = media.MediaData.MediaItem.ID.ToString();

                Item disclaimerFolder = Context.Database.GetItem("/sitecore/content/Global/Settings/Disclaimers");
                if (disclaimerFolder != null)
                {
                    foreach (Item disc in disclaimerFolder.Children)
                    {
                        if (disc["Media To Protect"].IndexOf(mediaId) >= 0)
                        {
                            string disclaimerPageId = disc["Disclaimer Page"];
                            Item   item             = Context.Database.GetItem(new ID(disclaimerPageId));
                            string url = LinkManager.GetItemUrl(item);

                            ShowDisclaimer(mediaId, url);
                            break;
                        }
                    }
                }
            }
            return(base.DoProcessRequest(context, request, media));
        }
        public MediaFile DownloadFile(MediaRequest request)
        {
            try
            {
                Log.Instance.LogAsInfo($"{nameof(ImageDbFileSource)}.{nameof(DownloadFile)}: DownloadFile is started");
                byte[] image;
                if (request.MediaId % 2 == 0)
                {
                    image = DownloadFile(_uowPhotoSQL, request.MediaType, request.MediaId);
                }
                else
                {
                    image = DownloadFile(_uowPhotoMongo, request.MediaType, request.MediaId);
                }

                MediaFile result = new MediaFile()
                {
                    MediaId        = request.MediaId,
                    MediaType      = request.MediaType,
                    FileByteStream = new MemoryStream(image),
                    Size           = image.LongLength
                };
                Log.Instance.LogAsInfo($"{nameof(ImageDbFileSource)}.{nameof(DownloadFile)}: DownloadFile is successfully completed");
                return(result);
            }
            catch (Exception ex)
            {
                Log.Instance.ExceptionInfo(ex).LogAsInfo($"{nameof(ImageDbFileSource)}.{nameof(DownloadFile)}: Error");
                return(new MediaFile()
                {
                    MediaId = -1
                });
            }
        }
Example #7
0
        private void ProcessImageDimensions(MediaRequest request, Media media)
        {
            Assert.ArgumentNotNull((object)request, nameof(request));
            Assert.ArgumentNotNull((object)media, nameof(media));
            Item innerItem = media.MediaData.MediaItem.InnerItem;

            int.TryParse(innerItem[Helper.Constants.TemplateFields.Height], out int result1);
            int.TryParse(innerItem[Helper.Constants.TemplateFields.Width], out int result2);
            bool flag      = false;
            int  maxHeight = Settings.Media.Resizing.MaxHeight;

            if (maxHeight != 0 && request.Options.Height > Math.Max(maxHeight, result1))
            {
                flag = true;
                request.Options.Height = Math.Max(maxHeight, result1);
            }
            int maxWidth = Settings.Media.Resizing.MaxWidth;

            if (maxWidth != 0 && request.Options.Width > Math.Max(maxWidth, result2))
            {
                flag = true;
                request.Options.Width = Math.Max(maxWidth, result2);
            }
            if (!flag)
            {
                return;
            }
            Log.Warn(string.Format(Helper.Constants.Message.ProcessImageDimensionsWarning, (object)request.InnerRequest.RawUrl), (object)this);
        }
Example #8
0
        /// <summary>
        /// Processes dimensions for dynamically scaled images according to configuration.
        ///
        /// </summary>
        /// <param name="request">The media request.</param><param name="media">The media.</param>
        private void ProcessImageDimensions(MediaRequest request, Sitecore.Resources.Media.Media media)
        {
            Assert.ArgumentNotNull((object)request, "request");
            Assert.ArgumentNotNull((object)media, "media");
            Item innerItem = media.MediaData.MediaItem.InnerItem;
            int  result1;

            int.TryParse(innerItem["Height"], out result1);
            int result2;

            int.TryParse(innerItem["Width"], out result2);
            bool flag      = false;
            int  maxHeight = Settings.Media.Resizing.MaxHeight;

            if (maxHeight != 0 && request.Options.Height > Math.Max(maxHeight, result1))
            {
                flag = true;
                request.Options.Height = Math.Max(maxHeight, result1);
            }
            int maxWidth = Settings.Media.Resizing.MaxWidth;

            if (maxWidth != 0 && request.Options.Width > Math.Max(maxWidth, result2))
            {
                flag = true;
                request.Options.Width = Math.Max(maxWidth, result2);
            }
            if (!flag)
            {
                return;
            }
            Log.Warn(string.Format("Requested image exceeds allowed size limits. Requested URL:{0}", (object)request.InnerRequest.RawUrl), (object)this);
        }
        protected override bool DoProcessRequest(HttpContext context)
        {
            Assert.ArgumentNotNull((object)context, "context");

            //Sitecore produces media search result icons with wrong querystring (2 question marks):
            // "?h=48&thn=1&w=48&db=master?w=80&h=60&db=master"
            // using the 1st part only "?h=48&thn=1&w=48&db=master" and redirect to the fixed url:
            FixSearchResultIconUrl(context.Request);

            MediaRequest request = MediaManager.ParseMediaRequest(context.Request);

            if (request == null)
            {
                return(false);
            }

            Sitecore.Resources.Media.Media media = MediaManager.GetMedia(request.MediaUri);

            // handle 404 of media items
            if (media == null)
            {
                using (new SecurityDisabler())
                    media = MediaManager.GetMedia(request.MediaUri);

                string str;

                if (media == null)
                {
                    str = Settings.ItemNotFoundUrl;
                }
                else
                {
                    Assert.IsNotNull(Sitecore.Context.Site, "site");
                    str = Sitecore.Context.Site.LoginPage != string.Empty ? Sitecore.Context.Site.LoginPage : Settings.NoAccessUrl;
                }
                if (Settings.RequestErrors.UseServerSideRedirect)
                {
                    HttpContext.Current.Server.TransferRequest(str);
                }
                else
                {
                    HttpContext.Current.Response.Redirect(str);
                }
                return(true);
            }

            if (!IsCdnMedia(media))
            {
                return(base.DoProcessRequest(context));
            }

            if (request.Options.Thumbnail)
            {
                request.Options.UseMediaCache = false;
                return(base.DoProcessRequest(context, request, media));
            }

            return(this.DoProcessRequest(context, media));
        }
 /// <summary>
 /// Processes the accept webp option for dynamically scaled images
 /// </summary>
 /// <param name="context">The HttpContext.</param>
 private void SetWebpOptions(MediaRequest request, HttpContext context)
 {
     Assert.ArgumentNotNull(request, "request");
     if (AcceptWebP(context))
     {
         request.Options.CustomOptions["webp"] = "1";
     }
 }
 /// <summary>
 /// Executes the process request event.
 /// </summary>
 /// <param name="context">
 /// The context.
 /// </param>
 /// <param name="request">
 /// The request.
 /// </param>
 /// <param name="media">
 /// The Sitecore media.
 /// </param>
 /// <returns>
 /// The <see cref="T:System.Boolean" /> that indicates whether request has been processed.
 /// </returns>
 protected override bool DoProcessRequest(HttpContext context, MediaRequest request, Media media)
 {
     Assert.ArgumentNotNull(context, "context");
     Assert.ArgumentNotNull(request, "request");
     Assert.ArgumentNotNull(media, "media");
     SetWebpOptions(request, context);
     return(base.DoProcessRequest(context, request, media));
 }
        protected override bool DoProcessRequest(HttpContext context, MediaRequest request, Media media)
        {
            if (context?.Request.QueryString?["extension"] == "webp" || (!Helpers.CdnEnabled && context.BrowserSupportsWebP()))
            {
                request.Options.CustomOptions["extension"] = "webp";
            }

            return(base.DoProcessRequest(context, request, media));
        }
        public override MediaRequest ParseMediaRequest(HttpRequest request)
        {
            Assert.ArgumentNotNull((object)request, nameof(request));
            MediaRequest mediaRequest = MediaManager.Config.ConstructMediaRequestInstance(request);

            if (mediaRequest != null && mediaRequest.MediaUri != null)
            {
                return(mediaRequest);
            }
            return((MediaRequest)null);
        }
Example #14
0
        // GET: Media
        public ActionResult Index(MediaRequest request = null)
        {
            request = request ?? new MediaRequest();
            IQueryable <Media> medias = db.Medias;

            if (!string.IsNullOrEmpty(request.MediaName))
            {
                medias = medias.Where(u => u.MediaName.Contains(request.MediaName));
            }
            return(View(medias.OrderBy(u => u.Id).ToPagedList(request.PageIndex, request.PageSize)));
        }
Example #15
0
        /// <summary>
        /// Extracts the sitecore media item path from a Url
        /// </summary>
        /// <param name="localPath">~/media/path/to/file.ashx?w=1</param>
        /// <returns>/sitecore/media library/path/to/file</returns>
        public virtual string GetMediaItemPath(string localPath)
        {
            MediaRequest mr = new MediaRequest();
            // this is a hack to access a private method in MediaRequest
            MethodInfo mi = ReflectionUtil.GetMethod(mr, "GetMediaPath", true, true, new object[] { localPath });

            if (mi != null)
            {
                return((string)ReflectionUtil.InvokeMethod(mi, new object[] { localPath }, mr));
            }
            return(null);
        }
Example #16
0
 public void Setup()
 {
     _someDatabase = Mock.Create <IDatabase>();
     _someRequest  = new MediaRequest {
         MediaID = _someID
     };
     Mock.Arrange(() => _someDatabase.Update(DBTable.media, Arg.IsAny <Dictionary <string, string> >(), Arg.IsAny <KeyValuePair <string, string> >()));
     _someRequestContext = new MediaRequestContext()
     {
         DB = _someDatabase
     };
 }
Example #17
0
        public async Task <MediaAbs> CreateMedia(MediaRequest mediaRequest)
        {
            try
            {
                EventType eventType = Conversions.EventTypeToStringRepresentation
                                      .Where(x => x.Value == mediaRequest.EventType)
                                      .Select(x => x.Key).First();
                List <Person> participants = JsonConvert.DeserializeObject <List <Person> >(mediaRequest.Participants);
                DateTime      date         = DateTime.Parse(mediaRequest.Date);

                switch (mediaRequest.MediaType)
                {
                case "Book":
                    var bookMedia = new BookMedia(mediaRequest.Name, eventType, participants,
                                                  date, mediaRequest.Location);
                    await SetUsingPersonIfNeede(bookMedia, mediaRequest.UsingPerson);

                    return(bookMedia);

                case "CD":
                    var cdMedia = new CDMedia(mediaRequest.Name, eventType, participants,
                                              date, mediaRequest.Location);
                    await SetUsingPersonIfNeede(cdMedia, mediaRequest.UsingPerson);

                    return(cdMedia);

                case "Disk On Key":
                    var DiskOnKeyMedia = new DiskOnKeyMedia(mediaRequest.Name, eventType, participants,
                                                            date, mediaRequest.Location);
                    await SetUsingPersonIfNeede(DiskOnKeyMedia, mediaRequest.UsingPerson);

                    return(DiskOnKeyMedia);

                case "Photo Album":
                    var PhotoAlbumMedia = new PhotoAlbumMedia(mediaRequest.Name, eventType, participants,
                                                              date, mediaRequest.Location);
                    await SetUsingPersonIfNeede(PhotoAlbumMedia, mediaRequest.UsingPerson);

                    return(PhotoAlbumMedia);

                default:
                    return(null);
                }
            }
            catch (Exception e)
            {
                throw e;
            }
        }
Example #18
0
        public WSMediaContent.GetMediaContentResponse getMediaContent(MediaRequest mediaRequest)
        {
            this.setPath("mediaContentOutput");
            var request = new WSMediaContent.GetMediaContentRequest();

            request.wsVersion = mediaRequest.version;
            request.id        = ConfigurationManager.AppSettings.Get("wsUserName");
            request.password  = ConfigurationManager.AppSettings.Get("wsPassword");
            request.mediaType = WSMediaContent.mediaTypeType.Image;
            request.productId = mediaRequest.productId;
            var request1 = new WSMediaContent.getMediaContentRequest1(request);

            WSMediaContent.getMediaContentResponse1 response1 = wsClient.getMediaContent(request1);
            return(response1.GetMediaContentResponse);
        }
Example #19
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public async Task <string> GetCDNSeries(MediaRequest request)
        {
            var timestamp = (int)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;

            var uri = new Uri(CDN_SERIES_URL + timestamp);

            var httpClient = _clientFactory.CreateClient("rezka");

            var content = GetHttpContent(request);

            var response = await httpClient.PostAsync(uri, content);

            var result = await response.Content.ReadAsStringAsync();

            return(result);
        }
Example #20
0
        protected override bool DoProcessRequest(HttpContext context, MediaRequest request, Media media)
        {
            Assert.ArgumentNotNull((object)context, nameof(context));
            Assert.ArgumentNotNull((object)request, nameof(request));
            Assert.ArgumentNotNull((object)media, nameof(media));

            //OverRiding the Default Stream behavior to return CDN inage
            ProcessCdnRedirect(context, media);

            if (this.Modified(context, media, request.Options) == Tristate.False)
            {
                this.RaiseEvent(Helper.Constants.Properties.MediaRequest, request);
                this.SendMediaHeaders(media, context);
                context.Response.StatusCode = 304;
                return(true);
            }


            this.ProcessImageDimensions(request, media);
            MediaStream mediaStream = this.GetMediaStream(media, request);

            if (mediaStream == null)
            {
                return(false);
            }
            this.RaiseEvent(Helper.Constants.Properties.MediaRequest, request);
            if (Settings.Media.EnableRangeRetrievalRequest && Settings.Media.CachingEnabled)
            {
                using (mediaStream)
                {
                    this.SendMediaHeaders(media, context);
                    new RangeRetrievalResponse(RangeRetrievalRequest.BuildRequest(context, media), mediaStream).ExecuteRequest(context);
                    return(true);
                }
            }
            else
            {
                this.SendMediaHeaders(media, context);
                this.SendStreamHeaders(mediaStream, context);
                using (mediaStream)
                {
                    context.Response.AddHeader(Helper.Constants.Properties.ContentLength, mediaStream.Stream.Length.ToString());
                    WebUtil.TransmitStream(mediaStream.Stream, context.Response, Settings.Media.StreamBufferSize);
                }
                return(true);
            }
        }
Example #21
0
        protected override bool DoProcessRequest(HttpContext context, MediaRequest request, Sitecore.Resources.Media.Media media)
        {
            Assert.ArgumentNotNull((object)context, "context");
            Assert.ArgumentNotNull((object)request, "request");
            Assert.ArgumentNotNull((object)media, "media");
            if (this.Modified(context, media, request.Options) == Tristate.False)
            {
                Event.RaiseEvent("media:request", new object[1]
                {
                    (object)request
                });
                this.SendMediaHeaders(media, context);
                context.Response.StatusCode = 304;
                return(true);
            }
            this.ProcessImageDimensions(request, media);
            MediaStream stream = media.GetStream(request.Options);

            if (stream == null)
            {
                return(false);
            }
            Event.RaiseEvent("media:request", new object[1]
            {
                (object)request
            });
            if (Settings.Media.EnableRangeRetrievalRequest && Settings.Media.CachingEnabled)
            {
                using (stream)
                {
                    this.SendMediaHeaders(media, context);
                    new RangeRetrievalResponse(RangeRetrievalRequest.BuildRequest(context, media), stream).ExecuteRequest(context);
                    return(true);
                }
            }
            else
            {
                this.SendMediaHeaders(media, context);
                this.SendStreamHeaders(stream, context);
                using (stream)
                {
                    context.Response.AddHeader("Content-Length", stream.Stream.Length.ToString());
                    WebUtil.TransmitStream(stream.Stream, context.Response, Settings.Media.StreamBufferSize);
                }
                return(true);
            }
        }
Example #22
0
        public async Task <IActionResult> UpdateMedia([FromBody] MediaRequest mediaRequest)
        {
            MediaAbs media = await m_mediaFactory.CreateMedia(mediaRequest);

            if (media == null)
            {
                return(BadRequest(new { Error = "Media Type Not Found" }));
            }

            var updated = await m_mediaService.UpdateMedia(media, mediaRequest.Id);

            if (!updated)
            {
                return(NotFound());
            }
            return(Ok(media));
        }
 protected override bool DoProcessRequest(HttpContext context, MediaRequest request, Sitecore.Resources.Media.Media media)
 {
     Assert.ArgumentNotNull((object)context, "context");
     Assert.ArgumentNotNull((object)request, "request");
     Assert.ArgumentNotNull((object)media, "media");
     if (this.Modified(context, media, request.Options) == Tristate.False)
     {
         Event.RaiseEvent("media:request", new object[1]
         {
           (object) request
         });
         this.SendMediaHeaders(media, context);
         context.Response.StatusCode = 304;
         return true;
     }
     this.ProcessImageDimensions(request, media);
     MediaStream stream = media.GetStream(request.Options);
     if (stream == null)
         return false;
     Event.RaiseEvent("media:request", new object[1]
       {
         (object) request
       });
     if (Settings.Media.EnableRangeRetrievalRequest && Settings.Media.CachingEnabled)
     {
         using (stream)
         {
             this.SendMediaHeaders(media, context);
             new RangeRetrievalResponse(RangeRetrievalRequest.BuildRequest(context, media), stream).ExecuteRequest(context);
             return true;
         }
     }
     else
     {
         this.SendMediaHeaders(media, context);
         this.SendStreamHeaders(stream, context);
         using (stream)
         {
             context.Response.AddHeader("Content-Length", stream.Stream.Length.ToString());
             WebUtil.TransmitStream(stream.Stream, context.Response, Settings.Media.StreamBufferSize);
         }
         return true;
     }
 }
Example #24
0
        private static HttpContent GetHttpContent(MediaRequest request)
        {
            string actionType = SeriesActionType.GetEpisodes;

            var fields = new List <KeyValuePair <string, string> >()
            {
                new KeyValuePair <string, string>("id", request.Id.ToString()),
                new KeyValuePair <string, string>("translator_id", request.TranslationId.ToString()),
                new KeyValuePair <string, string>("favs", request.FavsId)
            };

            if (request is CDNSeriesRequest seriesRequest)
            {
                actionType = SeriesActionType.GetStream;

                var extraFields = new List <KeyValuePair <string, string> >()
                {
                    new KeyValuePair <string, string>("season", seriesRequest.Season.ToString()),
                    new KeyValuePair <string, string>("episode", seriesRequest.Episode.ToString())
                };

                fields.AddRange(extraFields);
            }

            if (request is MovieRequest movieRequest)
            {
                actionType = SeriesActionType.GetMovie;

                var extraFields = new List <KeyValuePair <string, string> >()
                {
                    new KeyValuePair <string, string>("is_camrip", movieRequest.IsCamRip.ToString()),
                    new KeyValuePair <string, string>("is_ads", movieRequest.IsAds.ToString()),
                    new KeyValuePair <string, string>("is_director", movieRequest.IsDirector.ToString())
                };

                fields.AddRange(extraFields);
            }

            fields.Add(new KeyValuePair <string, string>("action", actionType));

            var content = new FormUrlEncodedContent(fields);

            return(content);
        }
Example #25
0
        public async Task <IActionResult> AddMedia([FromBody] MediaRequest mediaRequest)
        {
            MediaAbs media = await m_mediaFactory.CreateMedia(mediaRequest);

            if (media == null)
            {
                return(BadRequest(new { Error = "Media Type Not Found" }));
            }

            await m_mediaService.AddMedia(media);

            var baseUri     = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host.ToUriComponent()}://media";
            var locationUrl = baseUri + "/" + media.Id.ToString();

            var response = new MediaResponse()
            {
                Name = media.Name, Id = media.Id
            };

            return(Created(locationUrl, response));
        }
        public Media DetermineImageResponse(HttpContext context, MediaRequest request, Media media)
        {
            Diagnostics.Assert.ArgumentNotNull(context, "context");
            Diagnostics.Assert.ArgumentNotNull(request, "request");
            Diagnostics.Assert.ArgumentNotNull(media, "media");

            if (ShouldSkipWebProcessing(context))
            {
                return(media);
            }

            // So why use a link field here ... Sitecore has a limitation on the default attachement field called Blob
            // You can only have one of these
            // So unfortunately you can't sore the WEBP and the JPEG binary data on the one Media Item in Sitecore.
            // At this stage the best way to do this for thie module is have two Media Items.
            Data.Fields.LinkField relatedField = media.MediaData.MediaItem.InnerItem.Fields["Related Compressed File"];
            if (relatedField != null && relatedField.TargetItem != null)
            {
                var myMedia = new Data.Items.MediaItem(relatedField.TargetItem);
                media = new Media(new MediaData(myMedia));
            }
            return(media);
        }
Example #27
0
        protected override bool DoProcessRequest(HttpContext context)
        {
            Assert.ArgumentNotNull((object)context, "context");
            MediaRequest request = MediaManager.ParseMediaRequest(context.Request);

            if (request == null)
            {
                return(false);
            }
            Sitecore.Resources.Media.Media media = MediaManager.GetMedia(request.MediaUri);

            if (!IsCdnMedia(media))
            {
                return(base.DoProcessRequest(context));
            }

            if (request.Options.Thumbnail)
            {
                request.Options.UseMediaCache = false;
                return(base.DoProcessRequest(context, request, media));
            }

            return(this.DoProcessRequest(context, media));
        }
Example #28
0
 /// <summary>
 /// Extracts the sitecore media item path from a Url 
 /// </summary>
 /// <param name="localPath">~/media/path/to/file.ashx?w=1</param>
 /// <returns>/sitecore/media library/path/to/file</returns>
 public virtual string GetMediaItemPath(string localPath)
 {
     MediaRequest mr = new MediaRequest();
     // this is a hack to access a private method in MediaRequest
     MethodInfo mi = ReflectionUtil.GetMethod(mr, "GetMediaPath", true, true, new object[] { localPath });
     if (mi != null)
     {
         return (string)ReflectionUtil.InvokeMethod(mi, new object[] { localPath }, mr);
     }
     return null;
 }
Example #29
0
        private void button1_Click(object sender, EventArgs e)
        {
            ConnectionSetter connection       = new ConnectionSetter();
            String           originalFolder   = @"C:\Users\Caroline\Documents\json data";
            String           folder           = "";
            String           dateModifiedJson = "";

            if (comboBox1.Text.Equals("Debco"))
            {
                folder = FileFolderUtils.addAndCreateFolder(originalFolder, "\\debco data");
                connection.readConnectionConfig("..\\..\\config\\Debco.cfg");
                connection.productDataEndpoint = "ProductDataServiceDebco";
                dateModifiedJson = folder + "\\debcoDateModified.json";
                if (comboBox2.Text.Equals("Descriptions"))
                {
                    connection.endpoint = connection.productDataEndpoint;
                }
                else if (comboBox2.Text.Equals("Prices"))
                {
                    connection.endpoint = "ProductPricingServiceDebco";
                }
                else if (comboBox2.Text.Equals("Pictures"))
                {
                    connection.endpoint = "ProductMediaServiceDebco";
                }
            }
            else if (comboBox1.Text.Equals("Cap America"))
            {
                folder = FileFolderUtils.addAndCreateFolder(originalFolder, "\\capam data");
                connection.readConnectionConfig("..\\..\\config\\CapAmerica.cfg");
                connection.productDataEndpoint = "ProductDataServiceCapAm";
                dateModifiedJson = folder + "\\capamDateModified.json";
                if (comboBox2.Text.Equals("Descriptions"))
                {
                    connection.endpoint = connection.productDataEndpoint;
                }
                else if (comboBox2.Text.Equals("Prices"))
                {
                    connection.endpoint = "ProductPricingServiceCapAm";
                }
            }
            else if (comboBox1.Text.Equals("PCNA"))
            {
                folder = FileFolderUtils.addAndCreateFolder(originalFolder, "\\pcna data");
                connection.readConnectionConfig("..\\..\\config\\Pcna.cfg");
                connection.productDataEndpoint = "ProductDataServicePcna";
                dateModifiedJson = folder + "\\pcnaDateModified.json";
                if (comboBox2.Text.Equals("Descriptions"))
                {
                    connection.endpoint = connection.productDataEndpoint;
                }
                else if (comboBox2.Text.Equals("Prices"))
                {
                    connection.endpoint = "ProductPricingServicePcna";
                }
                else if (comboBox2.Text.Equals("Pictures"))
                {
                    connection.endpoint = "ProductMediaServicePcna";
                }
            }
            else if (comboBox1.Text.Equals("Starline"))
            {
                folder = FileFolderUtils.addAndCreateFolder(originalFolder, "\\starline data");
                connection.readConnectionConfig("..\\..\\config\\Starline.cfg");
                connection.productDataEndpoint = "ProductDataServiceStarline";
                dateModifiedJson = folder + "\\starlineDateModified.json";
                if (comboBox2.Text.Equals("Descriptions"))
                {
                    connection.endpoint = connection.productDataEndpoint;
                }
                else if (comboBox2.Text.Equals("Prices"))
                {
                    connection.endpoint = "ProductPricingServiceStarline";
                }
                else if (comboBox2.Text.Equals("Pictures"))
                {
                    connection.endpoint = "ProductMediaServiceStarline";
                }
            }
            ConfigurationManager.AppSettings.Set("wsUsername", connection.username);
            ConfigurationManager.AppSettings.Set("wsPassword", connection.password);
            var productDataTester   = new ProductDataClient(connection.productDataEndpoint);
            var productDataResponse = productDataTester.getProductDateModified();

            Program.printResponse(productDataResponse, dateModifiedJson, productDataTester.validTypes);
            List <String> articleIds = JsonUtils.readJson(dateModifiedJson);
            StreamWriter  fileStream = new StreamWriter(originalFolder + "\\debug.txt");

            if (comboBox2.Text.Equals("Descriptions"))
            {
                DataRequest frRequest = new DataRequest();
                frRequest.version  = "1.0.0";
                frRequest.country  = "CA";
                frRequest.language = "fr";
                DataRequest enRequest = new DataRequest();
                enRequest.version  = "1.0.0";
                enRequest.country  = "US";
                enRequest.language = "en";

                /*if (comboBox1.Text.Equals("Starline"))
                 * {
                 *  frRequest.version = "2.0.0";
                 *  enRequest.version = "2.0.0";
                 * }*/
                articleIds = ArrayListUtils.RemoveDuplicates(articleIds);
                String frFolder = FileFolderUtils.addAndCreateFolder(folder, "\\fr\\");
                String enFolder = FileFolderUtils.addAndCreateFolder(folder, "\\en\\");
                foreach (String id in articleIds)
                {
                    Console.WriteLine(id);
                    var output     = new StringBuilder();
                    var enResponse = productDataTester.getProductData(enRequest, id);
                    var frResponse = productDataTester.getProductData(frRequest, id);
                    try
                    {
                        var enResponseType = enResponse.GetType();
                        var frResponseType = frResponse.GetType();
                        output.AppendLine("Response Object: " + frResponseType.Name);
                        Console.WriteLine(frResponseType.GetProperties()[0].GetValue(frResponse));
                        enResponseType.GetProperties()[0].GetValue(enResponse).GetType();
                        frResponseType.GetProperties()[0].GetValue(frResponse).GetType();

                        StreamWriter frFile   = File.CreateText(frFolder + id + ".json");
                        JsonWriter   frWriter = new JsonTextWriter(frFile);
                        frWriter.Formatting = Formatting.Indented;
                        fileStream.WriteLine(id);
                        PropertyInfo frProperty = frResponseType.GetProperties()[0];
                        JsonUtils.printJson(frProperty, frProperty.GetValue(frResponse), ref frWriter, 1);
                        //writer.WriteEndObject();
                        frWriter.Flush();
                        frWriter.Close();
                        StreamWriter enFile   = File.CreateText(enFolder + id + ".json");
                        JsonWriter   enWriter = new JsonTextWriter(enFile);
                        enWriter.Formatting = Formatting.Indented;
                        PropertyInfo enProperty = enResponseType.GetProperties()[0];
                        JsonUtils.printJson(enProperty, enProperty.GetValue(enResponse), ref enWriter, 1);
                        //writer.WriteEndObject();
                        enFile.Flush();
                        enFile.Close();
                    }
                    catch (Exception error)
                    {
                        //error.ToString();
                    }
                }
                fileStream.Close();
            }
            else if (comboBox2.Text.Equals("Prices"))
            {
                var            pricingConfigurationClient = new PricingAndConfigurationClient(connection.endpoint);
                PricingRequest pricingRequest             = new PricingRequest();
                pricingRequest.version   = "1.0.0";
                pricingRequest.priceType = WSPricingAndConfiguration.priceType.List;
                pricingRequest.currency  = WSPricingAndConfiguration.CurrencyCodeType.CAD;
                pricingRequest.fobId     = "1";
                string priceFolder = FileFolderUtils.addAndCreateFolder(folder, "\\prix\\");
                foreach (String id in articleIds)
                {
                    Console.WriteLine(id);
                    var output = new StringBuilder();
                    pricingRequest.productId = id;
                    var pricingResponse = pricingConfigurationClient.getConfigurationAndPricing(pricingRequest);
                    try
                    {
                        var pricingResponseType = pricingResponse.GetType();
                        output.AppendLine("Response Object: " + pricingResponseType.Name);
                        pricingResponseType.GetProperties()[0].GetValue(pricingResponse).GetType();

                        StreamWriter pricingFile   = File.CreateText(priceFolder + id + ".json");
                        JsonWriter   pricingWriter = new JsonTextWriter(pricingFile);

                        pricingWriter.Formatting = Formatting.Indented;
                        fileStream.WriteLine(id);
                        foreach (var property in pricingResponseType.GetProperties())
                        {
                            JsonUtils.printJson(property, property.GetValue(pricingResponse), ref pricingWriter, 1);
                        }
                        //writer.WriteEndObject();
                        pricingWriter.Flush();
                        pricingWriter.Close();
                    }
                    catch (Exception error)
                    {
                        //error.ToString();
                    }
                }
                fileStream.Close();
            }
            else if (comboBox2.Text.Equals("Pictures"))
            {
                var          productMediaClient = new ProductMediaClient(connection.endpoint);
                MediaRequest mediaRequest       = new MediaRequest();
                mediaRequest.version = "1.1.0";
                articleIds           = ArrayListUtils.RemoveDuplicates(articleIds);
                string photoFolder = FileFolderUtils.addAndCreateFolder(folder, "\\photo\\");
                foreach (String id in articleIds)
                {
                    var output = new StringBuilder();
                    mediaRequest.productId = id;
                    var pricingResponse = productMediaClient.getMediaContent(mediaRequest);
                    try
                    {
                        var pricingResponseType = pricingResponse.GetType();
                        output.AppendLine("Response Object: " + pricingResponseType.Name);
                        Console.WriteLine(pricingResponseType.GetProperties()[1].GetValue(pricingResponse).GetType().GetProperties()[0].GetValue(pricingResponseType.GetProperties()[1].GetValue(pricingResponse)));
                        pricingResponseType.GetProperties()[0].GetValue(pricingResponse).GetType();
                        StreamWriter pricingFile   = File.CreateText(photoFolder + id + ".json");
                        JsonWriter   pricingWriter = new JsonTextWriter(pricingFile);
                        pricingWriter.Formatting = Formatting.Indented;
                        fileStream.WriteLine(id);
                        pricingWriter.WriteStartObject();
                        foreach (var property in pricingResponseType.GetProperties())
                        {
                            Console.WriteLine(id);
                            JsonUtils.printJson(property, property.GetValue(pricingResponse), ref pricingWriter, 1);
                        }
                        Console.WriteLine("test");
                        pricingWriter.WriteEndObject();
                        pricingWriter.Flush();
                        pricingWriter.Close();
                    }
                    catch (Exception error)
                    {
                        //error.ToString();
                    }
                }
                fileStream.Close();
                Console.WriteLine("End");
            }
        }
 /// <summary>
 /// Processes dimensions for dynamically scaled images according to configuration.
 /// 
 /// </summary>
 /// <param name="request">The media request.</param><param name="media">The media.</param>
 private void ProcessImageDimensions(MediaRequest request, Sitecore.Resources.Media.Media media)
 {
     Assert.ArgumentNotNull((object)request, "request");
     Assert.ArgumentNotNull((object)media, "media");
     Item innerItem = media.MediaData.MediaItem.InnerItem;
     int result1;
     int.TryParse(innerItem["Height"], out result1);
     int result2;
     int.TryParse(innerItem["Width"], out result2);
     bool flag = false;
     int maxHeight = Settings.Media.Resizing.MaxHeight;
     if (maxHeight != 0 && request.Options.Height > Math.Max(maxHeight, result1))
     {
         flag = true;
         request.Options.Height = Math.Max(maxHeight, result1);
     }
     int maxWidth = Settings.Media.Resizing.MaxWidth;
     if (maxWidth != 0 && request.Options.Width > Math.Max(maxWidth, result2))
     {
         flag = true;
         request.Options.Width = Math.Max(maxWidth, result2);
     }
     if (!flag)
         return;
     Log.Warn(string.Format("Requested image exceeds allowed size limits. Requested URL:{0}", (object)request.InnerRequest.RawUrl), (object)this);
 }
Example #31
0
        /// <summary>
        /// Extracts the sitecore media item path from a Url 
        /// </summary>
        /// <param name="localPath">~/media/path/to/file.ashx?w=1</param>
        /// <returns>/sitecore/media library/path/to/file</returns>
        public virtual string GetMediaItemPath(string localPath)
        {
            var mr = new MediaRequest();

            // this is a hack to access a private method in MediaRequest
            MethodInfo mi = ReflectionUtil.GetMethod(mr, "GetMediaPath", true, true, new object[] { localPath });
            if (mi == null)
            {
                return null;
            }

            var result = (string)ReflectionUtil.InvokeMethod(mi, new object[] { localPath }, mr);

            // NOTE: DOREL CHANGE: replace %20 with white-space
            return !string.IsNullOrEmpty(result) ? result.Replace("%20", " ") : result;
        }
Example #32
0
        /// <summary>
        ///     Process the current request and return false if the media item was not found, so Sitecore
        ///     can go ahead with processing the pipelines. Also check the <c>availableLanguages</c>
        ///     from the current <see cref="Sitecore.Sites.SiteContext" /> to check for a valid language
        ///     version of the media.
        /// </summary>
        /// <param name="context">Current <see cref="System.Web.HttpContext" />.</param>
        /// <returns><c>True</c> if everything was OK, <c>false</c> if the request is invalid or the media was not found.</returns>
        protected override bool DoProcessRequest(HttpContext context)
        {
            Assert.ArgumentNotNull(context, "context");
            Assert.IsNotNull(Sitecore.Context.Site, "site");
            MediaRequest mediaRequest = MediaManager.ParseMediaRequest(context.Request);

            if (mediaRequest == null)
            {
                return(false);
            }

            bool notfound = false;
            bool noaccess = false;

            string redirect = string.Empty;

            // get media
            Media media = MediaManager.GetMedia(mediaRequest.MediaUri);

            try
            {
                Language lang = UrlUtil.ResolveLanguage();
                // check item in language
                Item mediaItem = Sitecore.Context.Database.GetItem(mediaRequest.MediaUri.MediaPath);
                if (Sitecore.Context.GetSiteName() != "shell" &&
                    (mediaItem?.Fields["Blob"] == null ||
                     (!mediaItem.Fields["Blob"].Shared && !mediaItem.HasLanguageVersion(lang, Sitecore.Context.Site.Properties["availableLanguages"]))))
                {
                    notfound = true;
                }
            }
            catch (Exception)
            {
                notfound = true;
            }

            // check for media
            if (media == null)
            {
                using (new SecurityDisabler())
                {
                    media = MediaManager.GetMedia(mediaRequest.MediaUri);
                }

                // this would not take an effect
                // mediaItem is read above without security disabler
                // null mediaItem implies true notfound
                // and further notfound has priority over noaccess

                if (media == null)
                {
                    notfound = true;
                }
                else
                {
                    noaccess = true;
                }
            }

            // generate redirect url
            if (notfound)
            {
                redirect = Sitecore.Configuration.Settings.ItemNotFoundUrl;
            }
            else if (noaccess)
            {
                redirect = ((Sitecore.Context.Site.LoginPage != string.Empty)
                    ? Sitecore.Context.Site.LoginPage
                    : Sitecore.Configuration.Settings.NoAccessUrl);
            }

            // redirect if needed
            if (!string.IsNullOrEmpty(redirect))
            {
                if (Sitecore.Configuration.Settings.RequestErrors.UseServerSideRedirect)
                {
                    HttpContext.Current.Items[Constants.IsMediaParameterName] = true;
                    HttpContext.Current.Server.Transfer(redirect);
                }
                else
                {
                    Sitecore.Web.WebUtil.AddQueryString(redirect, Constants.IsMediaParameterName, bool.TrueString);
                    HttpContext.Current.Response.Redirect(redirect);
                }

                return(false);
            }

            return(this.DoProcessRequest(context, mediaRequest, media));
        }
Example #33
0
        protected override bool DoProcessRequest(System.Web.HttpContext context)
        {
            Assert.ArgumentNotNull(context, "context");

            // If we're in a Sitecore internal site (admin, shell etc),
            // then use the base MediaRequestHandler
            if (Sitecore.Context.Domain.Name == "sitecore")
            {
                return(base.DoProcessRequest(context));
            }

            MediaRequest request = MediaManager.ParseMediaRequest(context.Request);

            // By default Sitecore will get the first matching
            // item regardless of the file extension.
            var mediaPath  = request.MediaUri.MediaPath;
            var firstGuess = Context.Database.GetItem(mediaPath);

            if (firstGuess == null)
            {
                return(false);
            }

            string urlExtenstion = GetFileExtension(context.Request.RawUrl).ToLower();

            // if the extension of the first guess item is
            // incorrect, then we have some work to do.
            if (firstGuess["Extension"].ToLower() != urlExtenstion)
            {
                // Check if any of the matched item's siblings have
                // a matching path and file extension.
                var siblings = firstGuess.Parent.Children;

                var matches = siblings.Where(t => t.Paths.Path == firstGuess.Paths.Path &&
                                             t.Fields["Extensioin"].Value.ToLower() == urlExtenstion).ToList();

                //from sibling in siblings
                //          where firstGuess.Paths.Path == sibling.Paths.Path &&
                //                sibling["Extension"].ToLower() == urlExtenstion
                //          select ;

                if (!matches.Any())
                {
                    return(false);
                }

                var selectedItem = matches.First();

                // Now we've identified the correct item, we can
                // reference it by ID rather than path.
                request.MediaUri.MediaPath = selectedItem.ID.ToString();
            }

            Media media = MediaManager.GetMedia(request.MediaUri);

            if (media == null)
            {
                return(false);
            }

            return(DoProcessRequest(context, request, media));
        }
Example #34
0
 public HttpResponseMessage Put(int id, [FromBody] MediaRequest request)
 {
     _mediaRequestContext.Save(request);
     return(Request.CreateResponse(HttpStatusCode.OK));
 }
 public MediaRequestWrapper(MediaRequest mediaRequest)
 {
     _databaseName = mediaRequest.MediaUri.Database.Name;
     _languageName = mediaRequest.MediaUri.Language.CultureInfo.Name;
     _mediaPath    = mediaRequest.MediaUri.MediaPath;
 }
        private MediaStream ProcessThumbnail(MediaRequest request, Sitecore.Resources.Media.Media media)
        {
            MediaStream mStream = null;

            if (request.Options.Height == 0 && request.Options.Width == 0)
            {
                request.Options.Thumbnail = true;
            }

            mStream = MediaManager.Cache.GetStream(media, request.Options);

            if (mStream == null)
            {
                string tempPath = Settings.TempFolderPath + "/PDF-Thumbnails/";

                tempPath = MainUtil.MapPath(tempPath);

                if (!Directory.Exists(tempPath))
                {
                    Directory.CreateDirectory(tempPath);
                }

                // Prepare filenames
                string pdfFile = tempPath + media.MediaData.MediaItem.ID.ToString() + ".pdf";
                string jpgFile = tempPath + media.MediaData.MediaItem.ID.ToString() + "_" + media.MediaData.MediaItem.InnerItem["revision"] + ".jpg";

                string resizedJpgFile = tempPath + media.MediaData.MediaItem.ID.ToString() + "_" + request.Options.Width.ToString() + "_" + request.Options.Height.ToString();

                if (!File.Exists(jpgFile))
                {
                    // Save BLOB media file to disk
                    MediaConverter.ConvertMediaItemToFile(media.MediaData.MediaItem, pdfFile);

                    // Convert PDF to Jpeg - First Pager
                    MediaConverter.ConvertPDFtoJPG(pdfFile, 1, jpgFile);

                }

                // Resize Image
                MediaConverter.ReSizeJPG(jpgFile, resizedJpgFile, request.Options.Width, request.Options.Height, true);

                // Convert resized image to stream
                mStream = new MediaStream(File.Open(resizedJpgFile, FileMode.Open, FileAccess.Read, FileShare.Read), "jpg", media.MediaData.MediaItem);

                // Add the requested thumbnail to Media Cache
                MediaStream outStream = null;
                MediaManager.Cache.AddStream(media, request.Options, mStream, out outStream);

                if (outStream != null)
                {
                    // If Media cache is enabled
                    return outStream;
                }

            }

            // If Media cache is disabled
            return mStream;
        }
 public MediaRequestWrapper(MediaRequest mediaRequest)
 {
     _databaseName = mediaRequest.MediaUri.Database.Name;
     _languageName = mediaRequest.MediaUri.Language.CultureInfo.Name;
     _mediaPath = mediaRequest.MediaUri.MediaPath;
 }