Пример #1
0
        public async void TransferFile()
        {
            AutoFacContainer autoFacContainer = new AutoFacContainer();

            autoFacContainer.RegisterOptions <AWSS3Options>();
            autoFacContainer.RegisterOptions <SshOptions>();
            autoFacContainer.ContainerBuilder.RegisterModule <DataTransferCoreModule>();
            var services     = autoFacContainer.ContainerBuilder.Build();
            var dataTransfer = services.Resolve <DataTransferCore>();
            var filename     = await dataTransfer.Transfer();
        }
Пример #2
0
        protected override void OnStartup(StartupEventArgs e)
        {
            var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
            AutoFacContainer autoFacContainer = new AutoFacContainer(environment);

            autoFacContainer.RegisterOptions <AWSAthenaOptions>();
            autoFacContainer.RegisterOptions <AWSS3Options>();
            autoFacContainer.RegisterOptions <AthenaClientOptions>();
            autoFacContainer.ContainerBuilder.RegisterModule <AWSAthenaModule>();
            autoFacContainer.ContainerBuilder.RegisterModule <AWSS3Module>();
            Services = autoFacContainer.ContainerBuilder.Build();
            base.OnStartup(e);
        }
Пример #3
0
        /// <summary>
        /// A simple function that takes a string and does a ToUpper
        /// </summary>
        /// <param name="input"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public async Task <string> FunctionHandler(string input, ILambdaContext context)
        {
            AutoFacContainer autoFacContainer = new AutoFacContainer();

            autoFacContainer.RegisterOptions <AWSS3Options>();
            autoFacContainer.RegisterOptions <SshOptions>();
            autoFacContainer.ContainerBuilder.RegisterModule <DataTransferCoreModule>();
            var services     = autoFacContainer.ContainerBuilder.Build();
            var dataTransfer = services.Resolve <DataTransferCore>();
            var filename     = await dataTransfer.Transfer();

            return(filename == null ? "No File Transferred." : $"File {filename} Transferred.");
        }
Пример #4
0
        public void SetupAndInsertObject()
        {
            AutoFacContainer container = new AutoFacContainer();

            container.RegisterOptions <PostgreSQLEFOptions>();

            container.ContainerBuilder.Register(context =>
            {
                var options = context.Resolve <PostgreSQLEFOptions>();
                var builder = new DbContextOptionsBuilder <CodeFirstContext>();
                builder.UseNpgsql(options.ConnectionString);
                return(builder.Options);
            });

            container.ContainerBuilder.RegisterType <CodeFirstContext>();

            var serivcesContainer = container.ContainerBuilder.Build();

            using (CodeFirstContext context = serivcesContainer.Resolve <CodeFirstContext>())
            {
                context.Database.EnsureCreated();
                context.Users.Add(new User()
                {
                    Name      = "Tom",
                    YearBirth = 2001,
                    IsMale    = true
                });
                context.SaveChanges();
            }
        }
        public async void SendMessageToSQS()
        {
            AutoFacContainer autoFacContainer = new AutoFacContainer("dev");

            autoFacContainer.RegisterOptions <AWSSQSOptions>();
            autoFacContainer.ContainerBuilder.RegisterModule <AWSSQSModule>();

            var services = autoFacContainer.ContainerBuilder.Build();

            var awsSQSAPI = services.Resolve <AWSSQSAPI>();

            JsonSerializerSettings jsonSerializerSettings = new JsonSerializerSettings()
            {
                Converters = { new StringEnumConverter() }
            };


            for (int i = 0; i < 100; i++)
            {
                await awsSQSAPI.SendMessage(JsonConvert.SerializeObject(new CustomizedMessage()
                {
                    Type         = MessageTypeEnum.Promotional,
                    CustomerName = $"John Smith  #{i}",
                    Value        = "hello!"
                }, jsonSerializerSettings));
            }
        }
Пример #6
0
        public void DownloadFile()
        {
            AutoFacContainer container = new AutoFacContainer();

            container.RegisterOptions <SshOptions>();
            container.ContainerBuilder.RegisterModule <SshModule>();
            var servicesContainer = container.ContainerBuilder.Build();

            using (var client = servicesContainer.Resolve <SftpClient>())
            {
                client.Connect();
                using (FileStream fs = new FileStream($"{AppContext.BaseDirectory}/downloaded.zip", FileMode.OpenOrCreate))
                {
                    client.DownloadFile("./4117.zip", fs);
                }

                using (MemoryStream ms = new MemoryStream())
                {
                    client.DownloadFile("./test2.txt", ms);
                    var text = Encoding.UTF8.GetString(ms.ToArray());
                    Debugger.Break();
                }
                client.Disconnect();
            }
        }
Пример #7
0
        private IContainer BuildContainer(string environment)
        {
            AutoFacContainer autoFacContainer = new AutoFacContainer(environment);

            autoFacContainer.RegisterOptions <MongoOptions>();
            autoFacContainer.ContainerBuilder.RegisterModule <MongoModule>();
            return(autoFacContainer.ContainerBuilder.Build());
        }
        public PostgresSQLDataContext CreateDbContext(string[] args)
        {
            AutoFacContainer autoFacContainer = new AutoFacContainer();

            autoFacContainer.RegisterOptions <PostgresSQLOptions>();
            autoFacContainer.ContainerBuilder.RegisterModule <PostgresSQLModule>();
            var services = autoFacContainer.ContainerBuilder.Build();

            return(services.Resolve <PostgresSQLDataContext>());
        }
Пример #9
0
        public async void DeleteAzureBlobStorageFile(string filename, string blobContainer)
        {
            AutoFacContainer container = new AutoFacContainer();

            container.RegisterOptions <AzureBlobStorageOptions>();
            container.ContainerBuilder.RegisterModule <AzureBlobStorageModule>();
            var servicesContainer = container.ContainerBuilder.Build();
            var api = servicesContainer.Resolve <AzureBlobStorageAPI>();
            await api.Delete(filename, blobContainer);
        }
Пример #10
0
        public async void DeleteS3Bucket(string bucket)
        {
            AutoFacContainer container = new AutoFacContainer();

            container.RegisterOptions <AWSS3Options>();
            container.ContainerBuilder.RegisterModule <AWSS3Module>();
            var servicesContainer = container.ContainerBuilder.Build();
            var api = servicesContainer.Resolve <AWSS3API>();
            await api.DeleteBucket(bucket);
        }
Пример #11
0
        public void Test1()
        {
            AutoFacContainer container = new AutoFacContainer();

            container.RegisterOptions <SshOptions>();
            container.ContainerBuilder.RegisterModule <SshModule>();
            var services   = container.ContainerBuilder.Build();
            var sftpClient = services.Resolve <SftpClient>();

            sftpClient.Connect();
            Random rnd = new Random((int)(DateTime.Now - new DateTime(2018, 1, 1)).TotalMilliseconds);

            TRandom random = new TRandom();

            for (int i = 51; i < 53; i++)
            {
                var sales = new List <SaleRecord>();
                for (int j = 0; j < 50000; j++)
                {
                    SaleRecord saleRecord = new SaleRecord()
                    {
                        StoreNo         = rnd.Next(99999).ToString().PadLeft(5, '0'),
                        HourOfDay       = rnd.Next(24),
                        MinuteOfHour    = rnd.Next(60),
                        NumberApple     = random.Poisson(12),
                        NumberOfBanana  = random.Poisson(5),
                        NumberOfBeer    = random.Poisson(4),
                        NumberOfChicken = random.Poisson(8),
                        TimeStamp       = DateTime.Now.AddSeconds(-rnd.Next(365 * 24 * 3600))
                    };

                    saleRecord.TotalValueEclGST =
                        saleRecord.NumberApple * 4 +
                        saleRecord.NumberOfBanana * 8 +
                        saleRecord.NumberOfBeer * 5 +
                        saleRecord.NumberOfChicken * 6;

                    sales.Add(saleRecord);
                }

                using (MemoryStream stream = new MemoryStream())
                {
                    stream.WriteCsv(sales);
                    using (MemoryStream upload = new MemoryStream(stream.ToArray()))
                    {
                        sftpClient.UploadFile(upload, $"/root/{i.ToString().PadLeft(3,'0')}.csv");
                    }
                }
            }

            sftpClient.Disconnect();
            sftpClient.Dispose();
        }
Пример #12
0
        static void Main(string[] args)
        {
            Console.WriteLine("Execute AWS EC2 Job!");
            AutoFacContainer autoFacContainer = new AutoFacContainer();

            autoFacContainer.RegisterOptions <AWSEC2Options>();
            autoFacContainer.ContainerBuilder.RegisterModule <AWSEC2Module>();
            var services = autoFacContainer.ContainerBuilder.Build();
            var api      = services.Resolve <AWSEC2API>();

            api.ExecuteJob().Wait();
        }
Пример #13
0
 public void ExecuteCommand(string command)
 {
     AutoFacContainer container = new AutoFacContainer();
     container.RegisterOptions<SshOptions>();
     container.ContainerBuilder.RegisterModule<SshModule>();
     var servicesContainer = container.ContainerBuilder.Build();
     using (var client = servicesContainer.Resolve<SshClient>())
     {
         client.Connect();
         var result = client.CreateCommand(command).Execute();
         Debugger.Break();
         client.Disconnect();
     }
 }
Пример #14
0
        public async void WriteStringToS3Bucket(string key, string bucket)
        {
            AutoFacContainer container = new AutoFacContainer();

            container.RegisterOptions <AWSS3Options>();
            container.ContainerBuilder.RegisterModule <AWSS3Module>();
            var servicesContainer = container.ContainerBuilder.Build();
            var api = servicesContainer.Resolve <AWSS3API>();
            await api.UploadAsJson(key, new
            {
                Name  = "Jack",
                Value = "First"
            }, bucket);
        }
Пример #15
0
 public void DeleteAFile(string filename)
 {
     AutoFacContainer container = new AutoFacContainer();
     container.RegisterOptions<SshOptions>();
     container.ContainerBuilder.RegisterModule<SshModule>();
     var servicesContainer = container.ContainerBuilder.Build();
     using (var client = servicesContainer.Resolve<SftpClient>())
     {
         client.Connect();
         client.DeleteFile(filename);
         Debugger.Break();
         client.Disconnect();
     }
 }
Пример #16
0
        public async void CreateAzureBlobStorageFile(string filename, string blobContainer)
        {
            AutoFacContainer container = new AutoFacContainer();

            container.RegisterOptions <AzureBlobStorageOptions>();
            container.ContainerBuilder.RegisterModule <AzureBlobStorageModule>();
            var servicesContainer = container.ContainerBuilder.Build();
            var api = servicesContainer.Resolve <AzureBlobStorageAPI>();
            await api.UploadAsJson(filename, new
            {
                Name  = "Jack",
                Value = "Test"
            }, blobContainer);
        }
Пример #17
0
 public static AutoFacContainer Setup(this AutoFacContainer autoFacContainer)
 {
     autoFacContainer.RegisterOptions <SshOptions>();
     autoFacContainer.RegisterOptions <AWSS3Options>();
     autoFacContainer.RegisterOptions <AzureBlobStorageOptions>();
     autoFacContainer.RegisterOptions <AzureTableStorageOptions>();
     autoFacContainer.RegisterOptions <AWSDynamoDBOptions>();
     autoFacContainer.RegisterOptions <AWSAthenaOptions>();
     autoFacContainer.RegisterOptions <AthenaOptions>();
     autoFacContainer.ContainerBuilder.RegisterModule <VsExamplesAthenaModule>();
     autoFacContainer.ContainerBuilder.RegisterModule <AzureBlobStorageModule>();
     autoFacContainer.ContainerBuilder.RegisterModule <AzureTableStorageModule>();
     autoFacContainer.ContainerBuilder.RegisterModule <AWSDynamoDBModule>();
     return(autoFacContainer);
 }
Пример #18
0
 public void UploadStringAsFile(string content)
 {
     AutoFacContainer container = new AutoFacContainer();
     container.RegisterOptions<SshOptions>();
     container.ContainerBuilder.RegisterModule<SshModule>();
     var servicesContainer = container.ContainerBuilder.Build();
     using (var client = servicesContainer.Resolve<SftpClient>())
     {
         client.Connect();
         using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(content)))
         {
             client.UploadFile(stream, "./test2.txt");
             Debugger.Break();
         }
         client.Disconnect();
     }
 }
Пример #19
0
        public void QueryObject()
        {
            AutoFacContainer container = new AutoFacContainer();

            container.RegisterOptions <PostgreSQLEFOptions>();

            container.ContainerBuilder.Register(context =>
            {
                var options = context.Resolve <PostgreSQLEFOptions>();
                var builder = new DbContextOptionsBuilder <CodeFirstContext>();
                builder.UseNpgsql(options.ConnectionString);
                return(builder.Options);
            });

            container.ContainerBuilder.RegisterType <CodeFirstContext>();

            var serivcesContainer = container.ContainerBuilder.Build();

            using (CodeFirstContext context = serivcesContainer.Resolve <CodeFirstContext>())
            {
                context.Database.EnsureCreated();
                // select * from "Users" where IsMale = true and Age > 80
                var users = context.Users
                            //.Where(u => u.IsMale == true && u.YearBirth > 2005)
                            //.GroupBy(u => u.YearBirth)
                            .ToList();

                var cars = context.Cars.ToList();

                var avgCarYear = users//.AsParallel()
                                 .Select(user => cars.Where(car => car.Year == user.YearBirth && car.Id % 2 == 1))
                                 .Aggregate(new List <Car>(), (seed, _cars) =>
                {
                    seed.AddRange(_cars);
                    return(seed);
                })
                                 .Average(car => car.Year);

                Debugger.Break();
                context.SaveChanges();
            }
        }
Пример #20
0
        public void InsertRandomUsers()
        {
            AutoFacContainer container = new AutoFacContainer();

            container.RegisterOptions <PostgreSQLEFOptions>();

            container.ContainerBuilder.Register(context =>
            {
                var options = context.Resolve <PostgreSQLEFOptions>();
                var builder = new DbContextOptionsBuilder <CodeFirstContext>();
                builder.UseNpgsql(options.ConnectionString);
                return(builder.Options);
            });

            container.ContainerBuilder.RegisterType <CodeFirstContext>();

            var serivcesContainer = container.ContainerBuilder.Build();

            using (CodeFirstContext context = serivcesContainer.Resolve <CodeFirstContext>())
            {
                context.Database.EnsureCreated();
                Random rnd = new Random(DateTime.Now.Millisecond);
                for (int i = 0; i < 100; i++)
                {
                    context.Users.Add(new User()
                    {
                        Name      = $"User {i}",
                        YearBirth = (int)(1985 + rnd.NextDouble() * 30),
                        IsMale    = rnd.NextDouble() > 0.5d
                    });

                    context.Cars.Add(new Car()
                    {
                        Year = (int)(1985 + rnd.NextDouble() * 30),
                        Made = rnd.NextDouble() > 5d ? "Toyota":"BMW"
                    });
                }
                context.SaveChanges();
            }
        }
Пример #21
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public IServiceProvider ConfigureServices(IServiceCollection services)
        {
            logger.Information($"{nameof(ConfigureServices)} Start");
            var environment = Environment.GetEnvironmentVariable(Program.ASPNETCORE_ENVIRONMENT);

            logger.Information($"AutoFacContainer Environment: {environment}");
            logger.Information($"AutoFacContainer Current Path: {AppContext.BaseDirectory}");
            AutoFacContainer autoFacContainer = new AutoFacContainer(environment);

            autoFacContainer.RegisterOptions <AuthOptions>();
            autoFacContainer.RegisterOptions <JwtSecretOptions>();

            autoFacContainer.ContainerBuilder.RegisterModule <JwtModule>();

            autoFacContainer.RegisterOptions <MySQLOptions>();
            autoFacContainer.ContainerBuilder.RegisterModule <MySQLDataModule>();
            autoFacContainer.RegisterOptions <PostgresSQLOptions>();
            autoFacContainer.ContainerBuilder.RegisterModule <PostgresSQLModule>();
            autoFacContainer.RegisterOptions <SQLServerOptions>();
            autoFacContainer.ContainerBuilder.RegisterModule <SQLServerModule>();


            autoFacContainer.RegisterOptions <MongoOptions>();
            autoFacContainer.ContainerBuilder.RegisterModule <MongoModule>();

            autoFacContainer.ContainerBuilder.RegisterInstance(Program.GetLogger());

            autoFacContainer.ContainerBuilder.Register(context =>
            {
                var httpContextAccessor = context.Resolve <IHttpContextAccessor>();
                return(httpContextAccessor.HttpContext.Request.ReadJWTCookie());
            });

            services.TryAddSingleton <IHttpContextAccessor, HttpContextAccessor>();

            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

            services.AddCors(options =>
                             options.AddPolicy(CorsPolicy, builder =>
                                               builder.SetIsOriginAllowed(url => true)
                                               .AllowAnyHeader()
                                               .AllowCredentials()
                                               .AllowAnyMethod()
                                               ));

            services.AddSwaggerGen(
                setup =>
                setup.SwaggerDoc(SwaggerApiName,
                                 new Info
            {
                Version        = "1",
                Title          = "VsExampeles API",
                Description    = "VsExampeles API",
                TermsOfService = "N/A"
            })
                );


            services.AddMvc().AddJsonOptions(json =>
            {
                json.SerializerSettings.Error            = OnJsonError;
                json.SerializerSettings.ContractResolver = new DefaultContractResolver();
                json.SerializerSettings.Converters.Add(new StringEnumConverter());
            });

            autoFacContainer.ContainerBuilder.Populate(services);
            ApplicationContainer = autoFacContainer.ContainerBuilder.Build();

            logger.Information($"{nameof(ConfigureServices)} End");
            return(new AutofacServiceProvider(ApplicationContainer));
        }
Пример #22
0
        static void Main(string[] args)
        {
            var DotNetLog = args.GetParameter("--dot-net-log");

            if (DotNetLog == null)
            {
                DotNetLog = Environment.GetEnvironmentVariable("DOTNETLOG");
            }
            AutoFacContainer autoFacContainer = new AutoFacContainer(DotNetLog);

            autoFacContainer.RegisterOptions <LogWrapperOptions>();
            var services = autoFacContainer.ContainerBuilder.Build();
            var options  = services.Resolve <LogWrapperOptions>();

            MongoContext mongoContext = new MongoContext(new MongoOptions()
            {
                Url         = options.MongoDBUrl,
                SslProtocol = options.SslProtocol,
                Database    = options.Database
            });

            var collectionName = options.CollectionName;
            var useTime        = args.HasParameter("--use-time");
            var useGuid        = args.HasParameter("--use-guid");

            if (useTime)
            {
                collectionName += $"_{DateTime.UtcNow.ToString("yyyyMMddHHmmss")}";
            }
            if (useGuid)
            {
                collectionName += $"_{Guid.NewGuid().ToString().Replace("-", "")}";
            }
            if (!mongoContext.ListCollections().Any(name => name == collectionName))
            {
                if (options.Capped)
                {
                    mongoContext.MongoDatabase.CreateCollection(collectionName, new CreateCollectionOptions()
                    {
                        Capped       = true,
                        MaxDocuments = options.MaxDocuments,
                        MaxSize      = options.MaxSize
                    });
                }
                else
                {
                    mongoContext.MongoDatabase.CreateCollection(collectionName);
                }
            }
            IMongoCollection <LogMessage> collectionLogMessage = mongoContext.MongoDatabase.GetCollection <LogMessage>(collectionName);

            collectionLogMessage.InsertOne(new LogMessage()
            {
                Timestamp = DateTime.UtcNow,
                LogLevel  = "Wrap",
                Message   = $"Process Start: {options.Command} {(options.Arguments == null ? "" : string.Join(" ", options.Arguments))}"
            });

            ProcessExecutor processExecutor = new ProcessExecutor(options.Command);

            processExecutor.AddArguments(options.Arguments);

            processExecutor.StandardOutput
            .Where(value => !string.IsNullOrWhiteSpace(value))
            .Subscribe(
                line =>
            {
                Console.WriteLine(line);
                InsertLog(collectionLogMessage, "Log", line);
            });

            processExecutor.StandardError
            .Where(value => !string.IsNullOrWhiteSpace(value))
            .Subscribe(
                line =>
            {
                Console.Error.WriteLine(line);
                InsertLog(collectionLogMessage, "Error", line);
            });

            processExecutor.Execute();

            processExecutor.Dispose();

            collectionLogMessage.InsertOne(new LogMessage()
            {
                Timestamp = DateTime.UtcNow,
                LogLevel  = "Wrap",
                Message   = $"Process End: {options.Command} {(options.Arguments == null ? "" : string.Join(" ", options.Arguments))}"
            });

            Thread.Sleep(2000);
        }