Пример #1
0
        protected override bool ProcessRequest(CefRequest request, CefCallback callback)
        {
            var u    = new Uri(request.Url);
            var file = u.Authority + u.AbsolutePath;

            _totalBytesRead = 0;
            _fileBytes      = null;
            _completed      = false;

            var fileInfo = new FileInfo(file);

            // Check if file exists
            if (!fileInfo.Exists)
            {
                _chromelyErrorHandler.HandleResourceError(ResourceStatus.FileNotFound, file, out _statusCode, out _statusText);
                _fileBytes = _statusText.GetMemoryStream();

                callback.Continue();
            }
            // Check if file exists but empty
            else if (fileInfo.Length == 0)
            {
                _chromelyErrorHandler.HandleResourceError(ResourceStatus.ZeroFileSize, file, out _statusCode, out _statusText);
                _fileBytes = _statusText.GetMemoryStream();
                callback.Continue();
            }
            else
            {
                Task.Run(() =>
                {
                    using (callback)
                    {
                        try
                        {
                            _fileBytes = File.ReadAllBytes(file);

                            string extension = Path.GetExtension(file);
                            _mime            = MimeMapper.GetMimeType(extension);
                            _statusCode      = ResourceConstants.StatusOK;
                            _statusText      = ResourceConstants.StatusOKText;
                        }
                        catch (Exception exception)
                        {
                            _chromelyErrorHandler.HandleResourceError(ResourceStatus.FileProcessingError, file, exception, out _statusCode, out _statusText);
                            _fileBytes = _statusText.GetMemoryStream();
                        }
                        finally
                        {
                            callback.Continue();
                        }
                    }
                });

                return(true);
            }

            callback.Dispose();
            return(false);
        }
Пример #2
0
        protected override void GetResponseHeaders(CefResponse response, out long responseLength, out string redirectUrl)
        {
            // unknown content-length
            // no-redirect
            responseLength = -1;
            redirectUrl    = null;

            try
            {
                var headers = response.GetHeaderMap();
                headers.Add("Access-Control-Allow-Origin", "*");
                response.SetHeaderMap(headers);

                response.Status     = (int)_statusCode;
                response.MimeType   = _mime;
                response.StatusText = _statusText;
            }
            catch (Exception exception)
            {
                _chromelyErrorHandler.HandleResourceError(ResourceStatus.FileProcessingError, null, exception, out _statusCode, out _statusText);
                response.Status     = (int)_statusCode;
                response.StatusText = _statusText;
                response.MimeType   = "text/plain";

                Logger.Instance.Log.LogError(exception, exception.Message);
            }
        }