Пример #1
0
        private static void RegisterDependencies(HttpConfiguration httpConfiguration, IConfigurationService configuration, Action <ContainerBuilder> register)
        {
            var builder = new ContainerBuilder();

            DefaultContainerBuilder.Register(builder, configuration);
            SupportContainerBuilder.Register(builder, SupportEnvironment.WebApp);

            builder.RegisterType <NullPackageProcessor>()
            .As <IPackageProcessor>();

            builder.RegisterType <DataController>();
            builder.RegisterType <PackagesController>();

            builder.RegisterWebApiFilterProvider(httpConfiguration);

            builder.RegisterType <AuthenticationFilter>()
            .WithParameter(TypedParameter.From <AuthenticatedAreaAttribute>(null))
            .AsWebApiAuthenticationFilterFor <DataController>();

            //var metadataAreaAttribute = new AuthenticatedAreaAttribute(
            //   AuthenticatedArea.None, "feedName");

            //builder.RegisterType<AuthenticationFilter>()
            //    .WithParameter(TypedParameter.From(metadataAreaAttribute))
            //    .AsWebApiAuthenticationFilterFor<ODataMetadataController>();

            var queryingAreaAttribute = new AuthenticatedAreaAttribute(
                AuthenticatedArea.Querying, "feedName");

            builder.RegisterType <AuthenticationFilter>()
            .WithParameter(TypedParameter.From(queryingAreaAttribute))
            .AsWebApiAuthenticationFilterFor <ODataController>();

            builder.RegisterType <AuthenticationFilter>()
            .WithParameter(TypedParameter.From(queryingAreaAttribute))
            .AsWebApiAuthenticationFilterFor <PackagesController>();

            builder.RegisterType <AuthenticationNoneFilter>()
            .Keyed <IAutofacAuthenticationFilter>(AuthenticationMode.None);

            builder.RegisterType <AuthenticationBasicFilter>()
            .Keyed <IAutofacAuthenticationFilter>(AuthenticationMode.Basic);

            builder.RegisterType <AuthenticationNuGetApiKeyFilter>()
            .Keyed <IAutofacAuthenticationFilter>(AuthenticationMode.NuGetApiKey);

            register?.Invoke(builder);

            var container = builder.Build();

            httpConfiguration.DependencyResolver = new AutofacWebApiDependencyResolver(container);
        }
Пример #2
0
        static void Main(string[] args)
        {
            Trace.Listeners.Add(new ConsoleTraceListener());

            foreach (var assembly in typeof(PackageProcessor).Assembly.GetReferencedAssemblies())
            {
                Trace.WriteLine(assembly.FullName);
            }

            var cancelSource = new CancellationTokenSource();

            System.Console.CancelKeyPress += (o, e) =>
            {
                cancelSource.Cancel();
                e.Cancel = true;
            };

            var shutdownWatcher = new WebJobsShutdownWatcher();
            var shutdownSource  = CancellationTokenSource.CreateLinkedTokenSource(new[]
            {
                shutdownWatcher.Token,
                cancelSource.Token
            });

            var configuration = new DefaultConfigurationService();
            var builder       = new ContainerBuilder();

            DefaultContainerBuilder.Register(builder, configuration);
            SupportContainerBuilder.Register(builder, SupportEnvironment.WebJob);
            EmailContainerBuilder.Register(builder);
            PackageProcessorContainerBuilder.Register(builder);

            var container = builder.Build();

            var support = container.Resolve <ISupportConfiguration>();

            if (!string.IsNullOrWhiteSpace(support.InsightsInstrumentationKey))
            {
                TelemetryConfiguration.Active.InstrumentationKey = support.InsightsInstrumentationKey;
            }

            var scheduler = container.Resolve <ISchedulerService>();

            scheduler.ListenAndProcess(shutdownSource.Token);
        }
Пример #3
0
        protected override void OnStart(string[] args)
        {
            Trace.Listeners.Add(new ConsoleTraceListener());

            foreach (var assembly in typeof(PackageProcessor).Assembly.GetReferencedAssemblies())
            {
                Trace.WriteLine(assembly.FullName);
            }

            _stopSource = new CancellationTokenSource();


            var configuration = new DefaultConfigurationService();
            var builder       = new ContainerBuilder();

            DefaultContainerBuilder.Register(builder, configuration);
            SupportContainerBuilder.Register(builder, SupportEnvironment.WebJob);
            PackageProcessorContainerBuilder.Register(builder);

            var container = builder.Build();

            var support = container.Resolve <ISupportConfiguration>();

            var scheduler = container.Resolve <ISchedulerService>();

            Task.Run(() =>
            {
                int i = 0;
                while (!_stopSource.IsCancellationRequested)
                {
                    try
                    {
                        scheduler.ListenAndProcess(_stopSource.Token);
                    }
                    catch
                    {
                        i++;
                        if (i > 10)
                        {
                            Stop();
                        }
                    }
                }
            });
        }