예제 #1
0
        public DynamicMediaHandler()
        {
            var storageRoot = new DirectoryInfo(HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["StorageRoot"]));
            var cacheRoot   = new DirectoryInfo(HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["CacheRoot"]));

            var etagCalculator = new WeakFileInfoETagCalculator();

            m_mediaCache = new FileSystemMediaCache(etagCalculator, cacheRoot);
            //m_mediaCache = new NullMediaCache();

            m_storageBackend = new FileSystemStorageBackend(storageRoot, etagCalculator);

            m_mediaTransformerFactory = new CompositeMediaTransformerFactory(
                new XmlExifImageInfoMediaTransformer(),
                new JsonExifImageInfoMediaTransformer(),
                new ImageMediaTransformerFactory(),
                new CssLessMediaTransformerFactory(),
                new CombineCssMediaTransformerFactory(),
                new EmbedAsBase64CssMediaTransformerFactory(),
                new CssMinifyingMediaTransformerFactory(),
                new JavascriptMinifyingMediaTransformerFactory(),
                new MarkdownMediaTransformerFactory()
                );

            m_formatInfoProvider = new FormatInfoProvider((FormatInfoResolverConfiguration)ConfigurationManager.GetSection("dynamicMediaFormatMappings"));
            //m_formatInfoProvider = new RegistryFormatInfoProvider(null);
        }
예제 #2
0
        public DynamicMediaHandler()
        {
            var storageRoot = new DirectoryInfo( HttpContext.Current.Server.MapPath( ConfigurationManager.AppSettings[ "StorageRoot" ] ) );
            var cacheRoot = new DirectoryInfo( HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["CacheRoot"]));

            var etagCalculator = new WeakFileInfoETagCalculator();

            m_mediaCache = new FileSystemMediaCache(etagCalculator, cacheRoot);
            //m_mediaCache = new NullMediaCache();

            m_storageBackend = new FileSystemStorageBackend( storageRoot, etagCalculator );

            m_mediaTransformerFactory = new CompositeMediaTransformerFactory(
                new XmlExifImageInfoMediaTransformer(),
                new JsonExifImageInfoMediaTransformer(),
                new ImageMediaTransformerFactory(),
                new CssLessMediaTransformerFactory(),
                new CombineCssMediaTransformerFactory(),
                new EmbedAsBase64CssMediaTransformerFactory(),
                new CssMinifyingMediaTransformerFactory(),
                new JavascriptMinifyingMediaTransformerFactory(),
                new MarkdownMediaTransformerFactory()
            );

            m_formatInfoProvider = new FormatInfoProvider( (FormatInfoResolverConfiguration) ConfigurationManager.GetSection( "dynamicMediaFormatMappings" ) );
            //m_formatInfoProvider = new RegistryFormatInfoProvider(null);
        }
예제 #3
0
        public CommandRunnerMongo(IConfiguration config, IMediaCache cache, MongoDb.CaveContext db, bool isCommandLine = false)
        {
            _config = config ?? throw new ArgumentNullException(nameof(config));
            _cache  = cache ?? throw new ArgumentNullException(nameof(config));
            _db     = db ?? throw new ArgumentNullException(nameof(db));

            this._isCommandLine = isCommandLine;

            Console.WriteLine($"Database at: {_db.ConnectionString}");

            _rng = RandomNumberGenerator.Create();

            _commands = new Dictionary <Type, Func <object, object> >();

            foreach (var method in this.GetType().GetMethods())
            {
                var pars = method.GetParameters();

                if (pars.Length == 1 &&
                    pars[0].ParameterType.IsSubclassOf(typeof(API.Request)) &&
                    method.ReturnType.IsSubclassOf(typeof(API.Response)))
                {
                    Type requestType = pars[0].ParameterType;
                    _commands[requestType] = (request) =>
                    {
                        var response = method.Invoke(this, new object[] { request });
                        return(response);
                    };
                    Console.WriteLine("Added command for {0}", requestType.Name);
                }
            }

            BootStrap();
        }
예제 #4
0
        public CaveCacheHttp(IConfiguration conf, IMediaCache cache, CaveContext db)
        {
            JsonConvert.DefaultSettings = () =>
            {
                var settings = new JsonSerializerSettings();
                settings.Converters.Add(new ObjectIdConverter());
                settings.Converters.Add(new Newtonsoft.Json.Converters.StringEnumConverter());

                return(settings);
            };

            _cmd   = new CommandRunnerMongo(conf, cache, db, false);
            _guard = new ExecutionGuard();

            _listener = new HttpListener();
            _listener.Prefixes.Add("http://127.0.0.1:1222/");
            _listener.Start();
            _listener.BeginGetContext(HandleAPI, _listener);
            Console.WriteLine("Listening");

            _timer = new Timer(OnUpdate, null, 0, 60 * 1000);
        }
예제 #5
0
 public MediaCacheCleanupWatchdog(IMediaCache mc)
 {
     mediaCache = mc;
 }
예제 #6
0
 public DownloadHandlerService(IMediaDownloader mediaDownloader, IMediaCache mediaCache)
 {
     downloader = mediaDownloader;
     cache      = mediaCache;
 }
예제 #7
0
 public LocalMediaCache(IMediaCache mc)
 {
     MediaCache = mc;
 }