/// <summary>
        /// Gets the cache.
        /// </summary>
        /// <returns>The cache.</returns>
        /// <param name="id">Identifier.</param>
        /// <param name="url">URL.</param>
        /// <param name="mediaType">Media type.</param>
        /// <param name="overrideCache">If set to <c>true</c> override cache.</param>
        public async Task <CachedMedia> GetCache(string url, string mediaType = "Image", bool overrideCache = false)
        {
            //Get cached data from current request
            CachedMedia cachedMedia = await this.Get(url);


            //Valid cache
            if (await _cacheValidatorService.IsCacheValid(cachedMedia, overrideCache))
            {
                return(cachedMedia);
            }

            if (cachedMedia == null)
            {
                cachedMedia = Create(Guid.NewGuid(), url, mediaType);
            }

            try {
                //cachedMedia.MediaData = await _restService.GetAsync<Byte[]>(await GeneratRestUrl(cachedMedia.Url), CancellationToken.None);

                cachedMedia.MediaData = await _sitecoreService.GetMediaByUrl(cachedMedia.Url);

                await this.Save(cachedMedia);
            } catch (MethodFailedException ex) {
                _loggingService.Log("KnownError in GetCache,  Url {0} . Error: {1}", url, ex.Message);
            } catch (System.Exception ex) {
                _loggingService.Log("Error in GetCache,  Url {0} . Error: {1}", url, ex.Message);
            }

            return(cachedMedia);
        }
        /// <summary>
        /// Process the Request.
        /// </summary>
        /// <param name="context">The HTTP context for the request.</param>
        /// <returns></returns>
        /// <remarks>Documented by Dev03, 2009-05-24</remarks>
        public void ProcessRequest(HttpContext context)
        {
            HttpSessionState session = context.Session;
            int mediaId = Convert.ToInt32(context.Request.Params["id"]);

            if (mediaId < 0)
            {
                int uid = FileHandlerHelpers.Login(context.Request.Params["user"], context.Request.Params["password"]);
                context.Response.StatusCode = 200;
                context.Response.Write(uid < 0 ? uid.ToString() : "TRUE");
                session["uid"] = uid;
            }
            else
            {
                object uid = session["uid"];

                if (uid == null || (int)uid < 0)
                {
                    context.Response.StatusCode = 403;
                    return;
                }

                CachedMedia cachedMedia;
                if ((cachedMedia = HttpContext.Current.Cache[mediaId.ToString()] as CachedMedia) == null)
                {
                    cachedMedia = new CachedMedia(mediaId, GetMediaMimeType(mediaId));
                    WriteMedia(mediaId, cachedMedia.Data);
                    HttpContext.Current.Cache.Insert(cachedMedia.Id.ToString(), cachedMedia, null, Cache.NoAbsoluteExpiration, cacheTimeSpan);
                }
                context.Response.StatusCode  = 200;
                context.Response.ContentType = cachedMedia.MimeType;
                cachedMedia.Data.WriteTo(context.Response.OutputStream);
            }
        }
        /// <summary>
        /// Delete media by id.
        /// </summary>
        /// <param name="id">Identifier.</param>
        public async Task <bool> Delete(Guid id)
        {
            CachedMedia current = await Get(id);

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

            return(await Delete(current.Url));
        }
        /// <summary>
        /// Get media by id.
        /// </summary>
        /// <param name="id">Media identifier.</param>
        public async Task <CachedMedia> Get(Guid id)
        {
            CachedMedia cachedMedia = null;

            try {
                cachedMedia = await this._asyncConnection.GetAsync <CachedMedia> (cached => cached.Id == id);
            } catch (System.Exception ex) {
                _loggingService.Log("Error in reading media from DB,  id {0} . Error: {1}", id, ex.Message);
                throw ex;
            }

            return(cachedMedia);
        }
        /// <summary>
        /// Get media by media url.
        /// </summary>
        /// <param name="url">Media URL.</param>
        public async Task <CachedMedia> Get(string url)
        {
            CachedMedia cachedMedia = null;

            try
            {
                cachedMedia = await this._asyncConnection.FindAsync <CachedMedia> (url);
            } catch (System.Exception ex) {
                _loggingService.Log("Error in reading image from DB,  url {0} . Error: {1}", url, ex.Message);
                throw ex;
            }

            return(cachedMedia);
        }
Exemplo n.º 6
0
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            CachedMedia cachedMedia = (CachedMedia)value;

            if (cachedMedia == null)
            {
                return(null);
            }

            if (cachedMedia.MediaData != null)
            {
                return(ImageFromBytes(cachedMedia));
            }

            return(ImageFromUrl(cachedMedia.Url));
        }
        /// <summary>
        /// Save CachedMedia
        /// </summary>
        /// <param name="newMediaRequest">New media request.</param>
        private async Task Save(CachedMedia newMediaRequest)
        {
            newMediaRequest.UpdatedAt = DateTime.Now;

            CachedMedia currentImageRequest = await Get(newMediaRequest.Url);


            try {
                if (currentImageRequest == null)
                {
                    await _asyncConnection.InsertAsync(newMediaRequest);
                }
                else
                {
                    await _asyncConnection.UpdateAsync(newMediaRequest);
                }
            } catch (Exception ex) {
                this._loggingService.Log("Error in Save,  Url {0} . Error: {1}", newMediaRequest.Url, ex.Message);
                throw ex;
            }
        }
Exemplo n.º 8
0
 private ImageSource ImageFromBytes(CachedMedia cachedMedia)
 {
     return(ImageSource.FromStream(() => new MemoryStream(cachedMedia.MediaData)));
 }
        /// <summary>
        /// Process the Request.
        /// </summary>
        /// <param name="context">The HTTP context for the request.</param>
        /// <returns></returns>
        /// <remarks>Documented by Dev03, 2009-05-24</remarks>
        public void ProcessRequest(HttpContext context)
        {
            HttpSessionState session = context.Session;
            int mediaId = Convert.ToInt32(context.Request.Params["id"]);

            if (mediaId < 0)
            {
                int uid = FileHandlerHelpers.Login(context.Request.Params["user"], context.Request.Params["password"]);
                context.Response.StatusCode = 200;
                context.Response.Write(uid < 0 ? uid.ToString() : "TRUE");
                session["uid"] = uid;
            }
            else
            {
                object uid = session["uid"];

                if (uid == null || (int)uid < 0)
                {
                    context.Response.StatusCode = 403;
                    return;
                }

                CachedMedia cachedMedia;
                if ((cachedMedia = HttpContext.Current.Cache[mediaId.ToString()] as CachedMedia) == null)
                {
                    cachedMedia = new CachedMedia(mediaId, GetMediaMimeType(mediaId));
                    WriteMedia(mediaId, cachedMedia.Data);
                    HttpContext.Current.Cache.Insert(cachedMedia.Id.ToString(), cachedMedia, null, Cache.NoAbsoluteExpiration, cacheTimeSpan);
                }
                context.Response.StatusCode = 200;
                context.Response.ContentType = cachedMedia.MimeType;
                cachedMedia.Data.WriteTo(context.Response.OutputStream);
            }
        }