コード例 #1
0
ファイル: FieldsProcessor.cs プロジェクト: rkapl123/logjoint
 public FieldsProcessorImpl(
     InitializationParams initializationParams,
     IEnumerable <string> inputFieldNames,
     IEnumerable <ExtensionInfo> extensions,
     Persistence.IStorageEntry cacheEntry,
     LJTraceSource trace,
     Telemetry.ITelemetryCollector telemetryCollector,
     IMetadataReferencesProvider metadataReferencesProvider,
     IAssemblyLoader assemblyLoader
     )
 {
     if (inputFieldNames == null)
     {
         throw new ArgumentNullException(nameof(inputFieldNames));
     }
     initializationParams.InitializeInstance(this);
     if (extensions != null)
     {
         this.extensions.AddRange(extensions);
     }
     this.inputFieldNames            = inputFieldNames.Select((name, idx) => name ?? string.Format("Field{0}", idx)).ToList();
     this.cacheEntry                 = cacheEntry;
     this.trace                      = trace;
     this.telemetryCollector         = telemetryCollector;
     this.metadataReferencesProvider = metadataReferencesProvider;
     this.assemblyLoader             = assemblyLoader;
 }
コード例 #2
0
        // Similar to [RafaelEstevam.Simple.Spider.Test.Sample.BooksToScrape],
        //   see for more in depth cover of the crawling part
        public static void run()
        {
            // Creates a new instance
            var storage = new Storage.SQLiteStorage <Quote>();
            // set the spider to use it
            var init = new InitializationParams()
                       .SetStorage(storage);

            var spider = new SimpleSpider("QuotesToScrape",
                                          new Uri("http://quotes.toscrape.com/"),
                                          init);

            Console.WriteLine($"The sqlite database is at {storage.DatabaseFilePath}");
            Console.WriteLine($"The quotes are being stored in the table {storage.TableNameOfT}");

            spider.FetchCompleted += spider_FetchCompleted;
            spider.ShouldFetch    += Spider_ShouldFetch;
            spider.Execute();

            Console.WriteLine("Quotes from Albert Einstein");
            foreach (Quote q in storage.GetItemsWith("Author", "Albert Einstein"))
            {
                Console.WriteLine($"{q.Author}: {q.Text}");
            }
            Console.WriteLine("All Quotes");
            foreach (Quote q in spider.Storage.RetrieveAllItems())
            {
                Console.WriteLine($"{q.Author}: {q.Text}");
            }
        }
コード例 #3
0
        private TraceListener(InitializationParams initializationParams)
            : base(initializationParams.FileName)
        {
            writer = new Lazy <TextWriter>(() =>
            {
                if (string.IsNullOrEmpty(initializationParams.FileName))
                {
                    return(null);
                }
                try
                {
                    return(new StreamWriter(initializationParams.FileName, false));
                }
                catch
                {
                    return(null);
                }
            }, true);
            if (initializationParams.EnableMemBuffer)
            {
                enableMemBuffer = true;
                memBuffer       = new CircularBuffer(memBufMaxSize);
            }
            enableConsole            = initializationParams.EnableConsole;
            this.enableLogicalThread = initializationParams.EnableLogicalThread;

            lastInstance = this;
        }
コード例 #4
0
        public static void run()
        {
            var init = new InitializationParams()
                       .SetCacher(new ContentCacher())
                       .SetDownloader(new WebClientDownloader())
                       //.SetOfflineMode() // Remove all downloaders (sets a NullDownloader)
                       .SetConfig(c => c.Enable_Caching()
                                  .Disable_Cookies()
                                  .Enable_AutoAnchorsLinks() // enable automatic link following
                                  .Set_CachingNoLimit()
                                  .Set_DownloadDelay(5000));

            var spider = new SimpleSpider("QuotesToScrape", new Uri("http://quotes.toscrape.com/"), init);

            // Defines pages that should not be fetched
            spider.ShouldFetch += (_, args)
                                                                    // ShouldFetch args also supports chaining to easy cancel resources
                                                                    // Note: the order is very important
                                  => args.CancelIfContains("/login")
                                  .CancelIfContains("/tag/")        // not fetch tags
                                  .AllowIfContains("/tag/choices/") // I like to have choices =)
            ;

            //Defines pages (or ages) that should not use local cache
            spider.ShouldUseCache += (_, args)
                                     // can be chained too
                                     => args.CancelIfOlderThan(new TimeSpan(24, 0, 0));


            // Sets up the fetch completed callback
            spider.FetchCompleted += Spider_FetchCompleted;
            // execute
            spider.Execute();
        }
コード例 #5
0
        public void Catalogar(int ano)
        {
            Senadores = new List <Lib.Senado.Leg.Senador>();

            // obter listagem
            var page = FetchHelper.FetchResourceDocument(new Uri("https://www25.senado.leg.br/web/transparencia/sen/"),
                                                         enableCaching: true);
            var select       = new Select(page.DocumentNode.SelectSingleNode("//select"));
            var idsSenadores = select.GetItems()
                               .Select(id => id.Value.Trim())
                               .Where(id => !string.IsNullOrEmpty(id));

            // caminhar pelo site do senado obtendo os demais dados
            var init = InitializationParams
                       .Default002()
                       .SetConfig(c => c.Disable_AutoAnchorsLinks());
            var spider = new SimpleSpider("Senado.Leg",
                                          new System.Uri("https://www6g.senado.leg.br/"),
                                          init);

            spider.FetchCompleted += Spider_FetchCompleted;

            foreach (var i in idsSenadores)
            {
                spider.AddPage(montarUriSenador(ano, i),
                               spider.BaseUri);
            }

            spider.Execute();
        }
コード例 #6
0
        private async Task SavePayrollCompanyConfigurationAsync(InitializationParams parameters, Guid companyID)
        {
            var middlewareManager = new MiddlewareManager <PayrollCompanyConfiguration>(new BaseRecordManager <PayrollCompanyConfiguration>(),
                                                                                        new PayrollCompanyConfigurationValidator());

            await middlewareManager.CreateAsync(new List <PayrollCompanyConfiguration>() { parameters.PayrollCompanyConfiguration }, companyID);
        }
コード例 #7
0
        private TraceListener(InitializationParams initializationParams)
            : base(initializationParams.FileName)
        {
            writer = new Lazy <TextWriter>(() =>
            {
                if (string.IsNullOrEmpty(initializationParams.FileName))
                {
                    return(null);
                }
                try
                {
                    return(new StreamWriter(initializationParams.FileName, false));
                }
                catch
                {
                    return(null);
                }
            }, true);
            if (initializationParams.EnableMemBuffer)
            {
                enableMemBuffer = true;
                memBuffer       = new ConcurrentQueue <Entry>();
            }

            lastInstance = this;
        }
コード例 #8
0
        public void InitializationParams_SafetyCheck_Default002()
        {
            var init = InitializationParams.Default002();
            var ls   = serializeParams(init).ToArray();

            string[] expected =
            {
                "Cacher: RafaelEstevam.Simple.Spider.Cachers.ContentCacher",
                "Downloader: RafaelEstevam.Simple.Spider.Downloaders.HttpClientDownloader",
                "LinkCollector: RafaelEstevam.Simple.Spider.LinkProcessors.SimpleProcessor",
                "SpiderDirectory: ",
                "Parsers: 0",
                "Config.SpiderDirectory ",
                "Config.SpiderDataDirectory ",
                "Config.Spider_LogFile ",
                "Config.Logger ",
                "Config.Auto_RewriteRemoveFragment True",
                "Config.Cache_Enable True",
                "Config.Cache_Lifetime ",
                "Config.DownloadDelay 5000",
                "Config.Cookies_Enable False",
                "Config.Paused False",
                "Config.Paused_Cacher False",
                "Config.Paused_Downloader False",
                "Config.Auto_AnchorsLinks True",
                "Config.SpiderAllowHostViolation False",
            };
            Assert.Equal(expected.Length, ls.Length);

            for (int i = 0; i < ls.Length; i++)
            {
                Assert.Equal(expected[i], ls[i]);
            }
        }
コード例 #9
0
        private async Task SaveWorkshiftDefaultAsync(InitializationParams parameters, Guid companyID, Guid instanceID, Guid user)
        {
            var memoryTest        = new MemoryStorageContext();
            var result            = memoryTest.GetDefaultWorkShift(companyID, instanceID, user);
            var middlewareManager = new MiddlewareManager <Workshift>(new BaseRecordManager <Workshift>(),
                                                                      new WorkshiftValidator());

            await middlewareManager.CreateAsync(result, companyID);
        }
コード例 #10
0
        private async Task SaveMinimiumSalaryDefaultAsync(InitializationParams parameters, Guid companyID, Guid instanceID, Guid user)
        {
            var memoryTest        = new MemoryStorageContext();
            var result            = memoryTest.GetDefaultMinimunSalaries(companyID, instanceID, user);
            var middlewareManager = new MiddlewareManager <MinimunSalary>(new BaseRecordManager <MinimunSalary>(),
                                                                          new MinimunSalaryValidator());

            await middlewareManager.CreateAsync(result, companyID);
        }
コード例 #11
0
        private async Task SaveIMSSWorkRiskDefaultAsync(InitializationParams initializationParams, Guid companyID, Guid instanceID, Guid user)
        {
            var memoryTest        = new MemoryStorageContext();
            var result            = memoryTest.GetDefaultIMSSWorkRisk(companyID, instanceID, user);
            var middlewareManager = new MiddlewareManager <IMSSWorkRisk>(new BaseRecordManager <IMSSWorkRisk>(),
                                                                         new IMSSWorkRiskValidator());

            await middlewareManager.CreateAsync(result, companyID);
        }
コード例 #12
0
        private async Task SaveSettlementCatalogDefaultAsync(InitializationParams initializationParams, Guid companyID, Guid instanceID, Guid user)
        {
            var memoryTest        = new MemoryStorageContext();
            var result            = memoryTest.GetDefaultSettlementCatalogTable(companyID, instanceID, user);
            var middlewareManager = new MiddlewareManager <SettlementCatalog>(new BaseRecordManager <SettlementCatalog>(),
                                                                              new SettlementCatalogValidator());

            await middlewareManager.CreateAsync(result, companyID);
        }
コード例 #13
0
        private async Task SaveAnualEmploymentSubsidyDefaultAsync(InitializationParams parameters, Guid companyID, Guid instanceID, Guid user)
        {
            var memoryTest        = new MemoryStorageContext();
            var result            = memoryTest.GetDefaultAnualEmploymentSubsidy(companyID, instanceID, user);
            var middlewareManager = new MiddlewareManager <AnualEmploymentSubsidy>(new BaseRecordManager <AnualEmploymentSubsidy>(),
                                                                                   new AnualEmploymentSubsidyValidator());

            await middlewareManager.CreateAsync(result, companyID);
        }
コード例 #14
0
        private async Task <List <IncidentType> > SaveIncidentTypeDefaultAsync(InitializationParams parameters, Guid companyID, Guid instanceID, Guid user, List <AccumulatedType> accumulatedTypes)
        {
            var memoryTest        = new MemoryStorageContext();
            var result            = memoryTest.GetDefaultIncidentType(companyID, instanceID, user, accumulatedTypes);
            var middlewareManager = new MiddlewareManager <IncidentType>(new BaseRecordManager <IncidentType>(),
                                                                         new IncidentTypeValidator());

            await middlewareManager.CreateAsync(result, companyID);

            return(result);
        }
コード例 #15
0
        private static IEnumerable <string> serializeParams(InitializationParams init)
        {
            var cfg  = init.ConfigurationPrototype;
            var type = init.GetType();

            foreach (var p in type.GetProperties())
            {
                if (!p.CanRead)
                {
                    continue;
                }
                if (p.Name == "Parsers")
                {
                    continue;                      // Will be checked later
                }
                if (p.Name == "ConfigurationPrototype")
                {
                    continue;                                     // Will be checked later
                }
                if (p.Name == "StorageEngine")
                {
                    continue;                            // Will be checked later
                }
                string val = "";
                if (p.PropertyType.IsInterface)
                {
                    val = p.GetValue(init).GetType().FullName;
                }
                else
                {
                    val = p.GetValue(init)?.ToString();
                }
                yield return($"{p.Name}: {val}");
            }

            yield return($"Parsers: {init.Parsers.Count()}");

            for (int i = 0; i < init.Parsers.Count; i++)
            {
                yield return($"Parsers[{i}]: {init.Parsers[i]}");
            }

            type = cfg.GetType();
            foreach (var p in type.GetProperties())
            {
                if (!p.CanRead)
                {
                    continue;
                }

                var pVal = p.GetValue(cfg);
                yield return($"Config.{p.Name} {pVal}");
            }
        }
コード例 #16
0
        public static void run()
        {
            var iP = new InitializationParams()
                                                                  // Defines a Storage Engine
                                                                  // All stored items will be in spider folder as JsonLines
                     .SetStorage(new Storage.JsonLinesStorage()); // JsonLines: https://jsonlines.org/

            var spider = new SimpleSpider("BooksToScrape", new Uri("http://books.toscrape.com/"), iP);

            // callback to gather items
            spider.FetchCompleted += fetchCompleted_items;
            // Ignore (cancel) the pages containing "/reviews/"
            spider.ShouldFetch += (s, a) => { a.Cancel = a.Link.Uri.ToString().Contains("/reviews/"); };
            // execute from first page
            spider.Execute();
        }
コード例 #17
0
        public static void run(SqliteDB database)
        {
            db = database;
            db.CreateTables()
            .Add <PessoalModel>()
            .Add <Deputado>()
            .Commit();

            var init = InitializationParams.Default002()
                       .SetConfig(c => c.Disable_AutoAnchorsLinks()
                                  .Set_DownloadDelay(0));

            var spider = new SimpleSpider("camara_gabinete", new Uri("https://www.camara.leg.br/"), init);

            spider.FetchCompleted += Spider_FetchCompleted;
            spider.AddPage(new Uri("https://www.camara.leg.br/deputados/quem-sao"), spider.BaseUri);
            spider.Execute();
        }
コード例 #18
0
 public FieldsProcessor(
     InitializationParams initializationParams,
     IEnumerable <string> inputFieldNames,
     IEnumerable <ExtensionInfo> extensions,
     ITempFilesManager tempFilesManager)
 {
     if (inputFieldNames == null)
     {
         throw new ArgumentNullException(nameof(inputFieldNames));
     }
     initializationParams.InitializeInstance(this);
     if (extensions != null)
     {
         this.extensions.AddRange(extensions);
     }
     this.inputFieldNames  = inputFieldNames.Select((name, idx) => name ?? string.Format("Field{0}", idx)).ToList();
     this.tempFilesManager = tempFilesManager;
 }
コード例 #19
0
        private async Task SaveEmployerRegistrationAsync(InitializationParams parameters, Guid companyID, Guid instanceID, Guid user)
        {
            if (parameters.EmployerRegistration != null && parameters.EmployerRegistration.ID != Guid.Empty)
            {
                parameters.EmployerRegistration.CompanyID  = companyID;
                parameters.EmployerRegistration.InstanceID = instanceID;
                parameters.EmployerRegistration.company    = companyID;
                parameters.EmployerRegistration.user       = user;
                parameters.EmployerRegistration.Name       = parameters.EmployerRegistration.Code;

                var result = new List <EmployerRegistration> {
                    parameters.EmployerRegistration
                };
                var middlewareManager = new MiddlewareManager <EmployerRegistration>(new BaseRecordManager <EmployerRegistration>(),
                                                                                     new EmployerRegistrationValidator());

                await middlewareManager.CreateAsync(result, companyID);
            }
        }
コード例 #20
0
        private async Task <List <PeriodType> > SavePeriodTypeDefaultAsync(InitializationParams parameters, Guid companyID, Guid instanceID, Guid user)
        {
            var memoryTest = new MemoryStorageContext();
            List <PeriodType> lstPeriodTypes = new List <PeriodType>();

            //Quincenal
            var forceUpdate = parameters.PayrollCompanyConfiguration.PaymentPeriodicity == PaymentPeriodicity.Biweekly;

            lstPeriodTypes.AddRange(memoryTest.GetDefaultPeriodType(companyID, instanceID, user,
                                                                    PaymentPeriodicity.Biweekly,
                                                                    parameters.PayrollCompanyConfiguration.PaymentDays,
                                                                    parameters.PayrollCompanyConfiguration.AdjustmentPay, forceUpdate));

            //Mensual
            forceUpdate = parameters.PayrollCompanyConfiguration.PaymentPeriodicity == PaymentPeriodicity.Monthly;
            lstPeriodTypes.AddRange(memoryTest.GetDefaultPeriodType(companyID, instanceID, user,
                                                                    PaymentPeriodicity.Monthly,
                                                                    parameters.PayrollCompanyConfiguration.PaymentDays,
                                                                    parameters.PayrollCompanyConfiguration.AdjustmentPay, forceUpdate));

            //Semanal
            forceUpdate = parameters.PayrollCompanyConfiguration.PaymentPeriodicity == PaymentPeriodicity.Weekly;
            lstPeriodTypes.AddRange(memoryTest.GetDefaultPeriodType(companyID, instanceID, user,
                                                                    PaymentPeriodicity.Weekly,
                                                                    parameters.PayrollCompanyConfiguration.PaymentDays,
                                                                    parameters.PayrollCompanyConfiguration.AdjustmentPay, forceUpdate, parameters.PayrollCompanyConfiguration.WeeklySeventhDay));

            //Extraordinario
            forceUpdate = parameters.PayrollCompanyConfiguration.PaymentPeriodicity == PaymentPeriodicity.OtherPeriodicity;
            lstPeriodTypes.AddRange(memoryTest.GetDefaultPeriodType(companyID, instanceID, user,
                                                                    PaymentPeriodicity.OtherPeriodicity,
                                                                    parameters.PayrollCompanyConfiguration.PaymentDays,
                                                                    parameters.PayrollCompanyConfiguration.AdjustmentPay, forceUpdate));

            var middlewareManager = new MiddlewareManager <PeriodType>(new BaseRecordManager <PeriodType>(),
                                                                       new PeriodTypeValidator());

            await middlewareManager.CreateAsync(lstPeriodTypes, companyID);

            return(lstPeriodTypes);
        }
コード例 #21
0
        public async Task <InitializationResult> InitializeAsync(string authTkn, Guid licenseServiceID, string socialReason,
                                                                 string RFC, PayrollCompanyConfiguration payrollCompanyConfiguration, EmployerRegistration employerRegistration)
        {
            var createParmas = new InitializationParams()
            {
                AuthTkn          = authTkn,
                LicenseServiceID = licenseServiceID,
                SocialReason     = socialReason,
                RFC = RFC,
                PayrollCompanyConfiguration = payrollCompanyConfiguration,
                EmployerRegistration        = employerRegistration
            };

            string serializedResult = await ServiceHelperExtensions.CallRestServiceAsync(Format.JSON, RestMethod.POST, _authorizationHeader,
                                                                                         new Uri($"{_cotorraUri}"), new object[] { createParmas });

            if (!String.IsNullOrEmpty(serializedResult))
            {
                return(JsonConvert.DeserializeObject <InitializationResult>(serializedResult));
            }
            return(default);
コード例 #22
0
        public static void run()
        {
            var init = new InitializationParams()
                       .SetCacher(new ContentCacher())
                       .SetDownloader(new WebClientDownloader())
                                                                                                        // create a json parser for our QuotesObject class
                       .AddParser(new Parsers.JsonDeserializeParser <QuotesObject>(parsedResult_event)) // Received Json class
                                                                                                        // Adds a SQLite storage to keep all collected quotes
                       .SetStorage(new Storage.SQLiteStorage <Quote>())                                 // Single quote class
                       .SetConfig(c => c.Enable_Caching()
                                  .Disable_Cookies()
                                  .Disable_AutoAnchorsLinks()
                                  .Set_CachingNoLimit()
                                  .Set_DownloadDelay(5000));

            var spider = new SimpleSpider("QuotesToScrape", new Uri("http://quotes.toscrape.com/"), init);

            // add first
            spider.AddPage(buildPageUri(1), spider.BaseUri);
            // execute
            spider.Execute();
        }
コード例 #23
0
        private async Task SavePeriodDefaultAsync(InitializationParams parameters, Guid companyID, Guid instanceID, Guid user,
                                                  List <PeriodType> periodTypes)
        {
            var memoryTest = new MemoryStorageContext();

            var result = memoryTest.GetDefaultPeriod(companyID, instanceID, user,
                                                     parameters.PayrollCompanyConfiguration.PeriodInitialDate,
                                                     parameters.PayrollCompanyConfiguration.PeriodInitialDate.AddYears(1).Date,
                                                     parameters.PayrollCompanyConfiguration.CurrentExerciseYear,
                                                     periodTypes.FirstOrDefault(p => p.PaymentPeriodicity == parameters.PayrollCompanyConfiguration.PaymentPeriodicity));

            result.AddRange(memoryTest.GetDefaultPeriod(companyID, instanceID, user,
                                                        parameters.PayrollCompanyConfiguration.PeriodInitialDate,
                                                        parameters.PayrollCompanyConfiguration.PeriodInitialDate.AddYears(1).Date,
                                                        parameters.PayrollCompanyConfiguration.CurrentExerciseYear,
                                                        periodTypes.FirstOrDefault(p => p.ExtraordinaryPeriod)));

            var middlewareManager = new MiddlewareManager <Period>(new BaseRecordManager <Period>(),
                                                                   new PeriodValidator());

            await middlewareManager.CreateAsync(result, companyID);
        }
コード例 #24
0
        public void Executar()
        {
            var init = InitializationParams
                       .Default002()                            // Usar configs padrão
                       .SetConfig(c => c.Set_DownloadDelay(000) // Aguardar 2s entre requisições
                                  .Disable_AutoAnchorsLinks()); // Não sair navegando

            var spider = new SimpleSpider("cota_camara", new Uri("https://www.camara.leg.br"), init);

            spider.Configuration.SpiderAllowHostViolation = true; // Permite sair do domínio *.camara.leg.br

            // Obter todos os palamentares
            spider.AddPage(new Uri("https://www.camara.leg.br/cota-parlamentar/index.jsp"), spider.BaseUri);
            // Obter páginas
            spider.FetchCompleted += Spider_FetchCompleted;

            spider.FetchFailed += spider_FetchFailed;

            // Ignorar alguns endereços
            spider.ShouldFetch += spider_ShouldFetch;
            // mandar ver ...
            spider.Execute();
        }
コード例 #25
0
        public void InitializationParams_Default000()
        {
            int delay = 4321;
            var init  = InitializationParams.Default000(delay);

            Assert.IsType <ContentCacher>(init.Cacher);
            Assert.IsType <WebClientDownloader>(init.Downloader);
            Assert.Empty(init.Parsers);
            Assert.Null(init.StorageEngine);
            Assert.Null(init.SpiderDirectory);

            var cfg = init.ConfigurationPrototype;

            Assert.False(cfg.Auto_RewriteRemoveFragment);
            Assert.True(cfg.Cache_Enable);
            Assert.Null(cfg.Cache_Lifetime);
            Assert.Equal(delay, cfg.DownloadDelay);
            Assert.False(cfg.Cookies_Enable);
            Assert.False(cfg.Paused);
            Assert.False(cfg.Paused_Cacher);
            Assert.False(cfg.Paused_Downloader);
            Assert.False(cfg.Auto_AnchorsLinks);
        }
コード例 #26
0
        private async Task SaveConceptPaymentDefaultAsync(InitializationParams parameters, Guid companyID, Guid instanceID, Guid user, List <AccumulatedType> accumulatedTypes)
        {
            //Get Memory Default Data
            var memoryTest  = new MemoryStorageContext();
            var resultTuple = memoryTest.GetDefaultConcept <ConceptPayment>(companyID, instanceID, user, accumulatedTypes);

            //Results
            var resultConcepts     = resultTuple.Item1.Cast <ConceptPayment>().ToList();
            var resultRelationship = resultTuple.Item2.ToList();

            //middlewareManagers
            var middlewareManager = new MiddlewareManager <ConceptPayment>(new BaseRecordManager <ConceptPayment>(),
                                                                           new ConceptPaymentValidator());

            var middlewareManagerConceptPaymentRelationship = new MiddlewareManager <ConceptPaymentRelationship>(new BaseRecordManager <ConceptPaymentRelationship>(),
                                                                                                                 new ConceptPaymentRelationshipValidator());

            //Create ConceptPayment
            await middlewareManager.CreateAsync(resultConcepts, companyID);

            //Create ConceptPayment relationship with accumulates
            await middlewareManagerConceptPaymentRelationship.CreateAsync(resultRelationship, companyID);
        }
コード例 #27
0
        private async Task <(Guid, Guid, Guid, Guid)> CreateInstanceAsync(InitializationParams parameters,
                                                                          Stack <Action> rollbackActions)
        {
            var companyID        = Guid.Empty;
            var instanceID       = Guid.Empty;
            var licenseID        = Guid.Empty;
            var licenseServiceID = Guid.Empty;

            rollbackActions.Push(() => instanceClient.DeleteInstance(parameters.AuthTkn, instanceID));

            var result = await instanceClient.CreateInstanceAsync(
                parameters.AuthTkn,
                parameters.LicenseServiceID,
                parameters.RFC,
                parameters.SocialReason);

            companyID        = result.CompanyID;
            instanceID       = result.InstanceID;
            licenseID        = result.LicenseID;
            licenseServiceID = result.LicenseServiceID;

            return(companyID, instanceID, licenseID, licenseServiceID);
        }
コード例 #28
0
        public void InitializationParams_Default002()
        {
            int delay = 4321;
            var init  = InitializationParams.Default002(delay);

            Assert.IsType <ContentCacher>(init.Cacher);
            Assert.IsType <HttpClientDownloader>(init.Downloader);                            // Different from 001
            Assert.NotEmpty((init.Downloader as HttpClientDownloader).IncludeRequestHeaders); // Different from 001 | Specific to HttpClientDownloader
            Assert.Empty(init.Parsers);
            Assert.Null(init.StorageEngine);
            Assert.Null(init.SpiderDirectory);

            var cfg = init.ConfigurationPrototype;

            Assert.True(cfg.Auto_RewriteRemoveFragment); // Different from 001
            Assert.True(cfg.Cache_Enable);
            Assert.Null(cfg.Cache_Lifetime);
            Assert.Equal(delay, cfg.DownloadDelay);
            Assert.False(cfg.Cookies_Enable);
            Assert.False(cfg.Paused);
            Assert.False(cfg.Paused_Cacher);
            Assert.False(cfg.Paused_Downloader);
            Assert.True(cfg.Auto_AnchorsLinks);
        }
コード例 #29
0
ファイル: BigBang.cs プロジェクト: Adri22/GameOfLife
 public BigBang(InitializationParams initParams, InitializationMode initMode)
 {
     world         = new World(initParams.worldSize);
     this.initMode = initMode;
     CreateCells(initParams.cellSpreadModifier);
 }
コード例 #30
0
        public async Task <InitializationResult> InitializeAsync(InitializationParams parameters)
        {
            Stack <Action>           rollbackActions = new Stack <Action>();
            InitializationnValidator validator       = new InitializationnValidator();

            validator.BeforeProcess(parameters);
            Guid companyID;
            Guid instanceID;
            Guid licenseID;
            Guid licenseServiceID;

            try
            {
                //Create company
                var creationResult = await CreateInstanceAsync(parameters, rollbackActions);

                companyID        = creationResult.Item1;
                instanceID       = creationResult.Item2;
                licenseID        = creationResult.Item3;
                licenseServiceID = creationResult.Item4;
                parameters.PayrollCompanyConfiguration.company    = companyID;
                parameters.PayrollCompanyConfiguration.InstanceID = instanceID;

                using (var scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
                {
                    //PayrollConfiguration
                    await SavePayrollCompanyConfigurationAsync(parameters, companyID);

                    /***Initialize fares and tables catalogs***/

                    //MinimiumSalary
                    await SaveMinimiumSalaryDefaultAsync(parameters, companyID, instanceID, parameters.PayrollCompanyConfiguration.user);

                    //Benefit Type
                    await SaveBenefitTypeDefaultAsync(parameters, companyID, instanceID, parameters.PayrollCompanyConfiguration.user);

                    //IncomeTax
                    await SaveMonthlyIncomeTaxDefaultAsync(parameters, companyID, instanceID, parameters.PayrollCompanyConfiguration.user);

                    //AnualIncomeTax
                    await SaveAnualIncomeTaxDefaultAsync(parameters, companyID, instanceID, parameters.PayrollCompanyConfiguration.user);

                    //Employment monthly subsidy
                    await SaveMonthlyEmploymentSubsidyDefaultAsync(parameters, companyID, instanceID, parameters.PayrollCompanyConfiguration.user);

                    //Employment anual subsidy
                    await SaveAnualEmploymentSubsidyDefaultAsync(parameters, companyID, instanceID, parameters.PayrollCompanyConfiguration.user);

                    //IMSS
                    await SaveIMSSFareDefaultAsync(parameters, companyID, instanceID, parameters.PayrollCompanyConfiguration.user);

                    //SGDFlimits
                    await SaveSGDFLimitsDefaultAsync(parameters, companyID, instanceID, parameters.PayrollCompanyConfiguration.user);

                    //IMSSEmployeeTable
                    await SaveIMSSEmployeeTableDefaultAsync(parameters, companyID, instanceID, parameters.PayrollCompanyConfiguration.user);

                    //IMSSEmployerTable
                    await SaveIMSSEmployerTableDefaultAsync(parameters, companyID, instanceID, parameters.PayrollCompanyConfiguration.user);

                    //IMSSWorkRisk
                    await SaveIMSSWorkRiskDefaultAsync(parameters, companyID, instanceID, parameters.PayrollCompanyConfiguration.user);

                    //UMA
                    await SaveUMADefaultAsync(parameters, companyID, instanceID, parameters.PayrollCompanyConfiguration.user);

                    //SettlementCatalog
                    await SaveSettlementCatalogDefaultAsync(parameters, companyID, instanceID, parameters.PayrollCompanyConfiguration.user);

                    //WorkShift
                    await SaveWorkshiftDefaultAsync(parameters, companyID, instanceID, parameters.PayrollCompanyConfiguration.user);

                    //AccumulatedType
                    var accumulated = await SaveAccumulatedTypeDefaultAsync(parameters, companyID, instanceID, parameters.PayrollCompanyConfiguration.user);

                    //Concepts (Salary. Liability, Deduction)
                    await SaveConceptPaymentDefaultAsync(parameters, companyID, instanceID, parameters.PayrollCompanyConfiguration.user, accumulated);

                    //Employer Registration
                    await SaveEmployerRegistrationAsync(parameters, companyID, instanceID, parameters.PayrollCompanyConfiguration.user);

                    //IncidentType
                    var incidentTypes = await SaveIncidentTypeDefaultAsync(parameters, companyID, instanceID, parameters.PayrollCompanyConfiguration.user, accumulated);

                    //Incident Type Relationship
                    await SaveIncidentTypeRelationshipDefaultAsync(parameters, companyID, instanceID, parameters.PayrollCompanyConfiguration.user, incidentTypes);

                    //Period Type
                    var periodTypes = await SavePeriodTypeDefaultAsync(parameters, companyID, instanceID, parameters.PayrollCompanyConfiguration.user);

                    //Period
                    await SavePeriodDefaultAsync(parameters, companyID, instanceID, parameters.PayrollCompanyConfiguration.user, periodTypes);

                    scope.Complete();
                }
            }
            catch (Exception ex)
            {
                rollbackActions.DoRollBack();

                if (ex is CotorraException)
                {
                    throw new CotorraException(0001, "Create Company", ex.Message, ex);
                }
                else
                {
                    throw new CotorraException(0002, "Create Company", "Ocurrio un error al crear la compañía por favor vuelve a intentarlo en unos minutos.",
                                               ex);
                }
            }

            return(new InitializationResult()
            {
                CompanyID = companyID,
                InstanceID = instanceID,
                LicenseID = licenseID,
                LicenseServiceID = licenseServiceID
            });
        }