eco-helpers 0.6.13 → 0.6.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/eco-helpers.gemspec +1 -1
- data/lib/eco/api.rb +1 -2
- data/lib/eco/api/common/people/person_entry.rb +1 -1
- data/lib/eco/api/common/people/person_factory.rb +3 -3
- data/lib/eco/api/common/session/base_session.rb +14 -2
- data/lib/eco/api/common/session/environment.rb +9 -7
- data/lib/eco/api/common/version_patches/external_person.rb +16 -2
- data/lib/eco/api/common/version_patches/internal_person.rb +17 -0
- data/lib/eco/api/session.rb +13 -19
- data/lib/eco/api/session/batch.rb +4 -17
- data/lib/eco/api/session/batch_job.rb +4 -13
- data/lib/eco/api/session/{job_group.rb → batch_jobs.rb} +6 -8
- data/lib/eco/api/session/batch_status.rb +3 -7
- data/lib/eco/api/session/config.rb +186 -0
- data/lib/eco/api/session/config/api.rb +49 -0
- data/lib/eco/api/session/config/apis.rb +91 -0
- data/lib/eco/api/session/config/files.rb +32 -0
- data/lib/eco/api/session/config/logger.rb +56 -0
- data/lib/eco/api/session/config/mailer.rb +67 -0
- data/lib/eco/api/session/config/people.rb +95 -0
- data/lib/eco/api/session/config/s3_storage.rb +64 -0
- data/lib/eco/api/session/config/use_cases.rb +33 -0
- data/lib/eco/api/session/job_groups.rb +4 -6
- data/lib/eco/api/session/task.rb +2 -13
- data/lib/eco/version.rb +1 -1
- metadata +18 -11
- data/lib/eco/api/session_config.rb +0 -187
- data/lib/eco/api/session_config/api.rb +0 -47
- data/lib/eco/api/session_config/apis.rb +0 -89
- data/lib/eco/api/session_config/files.rb +0 -30
- data/lib/eco/api/session_config/logger.rb +0 -54
- data/lib/eco/api/session_config/mailer.rb +0 -65
- data/lib/eco/api/session_config/people.rb +0 -93
- data/lib/eco/api/session_config/s3_storage.rb +0 -62
- data/lib/eco/api/session_config/use_cases.rb +0 -31
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 12bd692f0b9d72b4116b42bfba1159f32d0be43f
         | 
| 4 | 
            +
              data.tar.gz: 9e5d0d188d6a5b2ea908e96c2ac5ff17e8b322a4
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: e3d1a520ec06cb397d3a24b3daf3113d1a4766db082649fc0317cbd29bf0088374a1380c66e6724159fff070cbdacbf71fc7157649cc913c86a21df941513271
         | 
| 7 | 
            +
              data.tar.gz: 30feb556fd73cf5c3fca8c39769ba2e0749394d6e1c0de4e608151ed8d6f0f4fa19da76dc2737f2eef146ed86e1a8aafddc386f0d9c335674458625f4fce4deb
         | 
    
        data/eco-helpers.gemspec
    CHANGED
    
    | @@ -26,7 +26,7 @@ Gem::Specification.new do |s| | |
| 26 26 | 
             
              s.add_development_dependency "yard",      "~> 0.9", ">= 0.9.18"
         | 
| 27 27 | 
             
              s.add_development_dependency "redcarpet", "~> 3.4", ">= 3.4.0"
         | 
| 28 28 |  | 
| 29 | 
            -
              s.add_dependency 'ecoportal-api', '~> 0.3', '>= 0.3.6'
         | 
| 29 | 
            +
              s.add_dependency 'ecoportal-api', '~> 0.3', '>= 0.3.6', '< 0.4.0'
         | 
| 30 30 | 
             
              s.add_dependency 'faker',         '~> 1',   '>= 1.9'
         | 
| 31 31 | 
             
              s.add_dependency 'distribution',  '~> 0.7', '>= 0.7.3'
         | 
| 32 32 | 
             
              s.add_dependency 'thor',          '~> 0',   '>= 0.20'
         | 
    
        data/lib/eco/api.rb
    CHANGED
    
    
| @@ -237,7 +237,7 @@ module Eco | |
| 237 237 | 
             
                        unserialized_entry.merge(serial_attrs)
         | 
| 238 238 | 
             
                      end
         | 
| 239 239 |  | 
| 240 | 
            -
                      # returns entry with  | 
| 240 | 
            +
                      # returns entry with internal names and values
         | 
| 241 241 | 
             
                      def internal_entry(data)
         | 
| 242 242 | 
             
                        return parsed_entry(data) if parsing?
         | 
| 243 243 | 
             
                        unserialized_entry(data)
         | 
| @@ -10,9 +10,9 @@ module Eco | |
| 10 10 |  | 
| 11 11 | 
             
                      def initialize(person: {}, schema: {}, account: {}, modifier: Common::People::PersonModifier.new)
         | 
| 12 12 | 
             
                        @modifier = Common::People::PersonModifier.new(modifier)
         | 
| 13 | 
            -
                        @person | 
| 13 | 
            +
                        @person  = person
         | 
| 14 14 | 
             
                        @account = account
         | 
| 15 | 
            -
                        @schema | 
| 15 | 
            +
                        @schema  = schema
         | 
| 16 16 | 
             
                        @schema_attrs = @schema&.fields&.map { |fld| fld.alt_id }
         | 
| 17 17 | 
             
                      end
         | 
| 18 18 |  | 
| @@ -21,7 +21,7 @@ module Eco | |
| 21 21 | 
             
                        return PersonFactory.new(person: person, schema: @schema, modifier: in_raw_modifier).new unless !person
         | 
| 22 22 | 
             
                        person = klass.new(person_hash(@person))
         | 
| 23 23 | 
             
                        person.account = account_hash(@account) if @modifier.add_account? && @modifier.internal?
         | 
| 24 | 
            -
                        person. | 
| 24 | 
            +
                        person.add_details(@schema) unless @modifier.no_details?
         | 
| 25 25 | 
             
                        person
         | 
| 26 26 | 
             
                      end
         | 
| 27 27 |  | 
| @@ -6,6 +6,7 @@ module Eco | |
| 6 6 |  | 
| 7 7 | 
             
                      include Common::People
         | 
| 8 8 |  | 
| 9 | 
            +
                      attr_accessor :session
         | 
| 9 10 | 
             
                      attr_accessor :environment, :config
         | 
| 10 11 | 
             
                      alias_method :enviro, :environment
         | 
| 11 12 | 
             
                      alias_method :enviro=, :environment=
         | 
| @@ -14,8 +15,13 @@ module Eco | |
| 14 15 | 
             
                      alias_method :fm, :file_manager
         | 
| 15 16 |  | 
| 16 17 | 
             
                      def initialize(e)
         | 
| 17 | 
            -
                         | 
| 18 | 
            -
                         | 
| 18 | 
            +
                        raise "Expected object Eco::API::Common::Session::Environment. Given: #{e.class}" unless e.is_a?(Environment)
         | 
| 19 | 
            +
                        #e = Environment.new(e) if !e.is_a?(Environment)
         | 
| 20 | 
            +
                        self.environment = e   #if e.is_a?(Environment)
         | 
| 21 | 
            +
                      end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                      def session
         | 
| 24 | 
            +
                        enviro.session
         | 
| 19 25 | 
             
                      end
         | 
| 20 26 |  | 
| 21 27 | 
             
                      def environment=(value)
         | 
| @@ -39,6 +45,12 @@ module Eco | |
| 39 45 | 
             
                        enviro.logger
         | 
| 40 46 | 
             
                      end
         | 
| 41 47 |  | 
| 48 | 
            +
                      # TODO: paremeter for the exception
         | 
| 49 | 
            +
                      def fatal(msg)
         | 
| 50 | 
            +
                        logger.fatal(msg)
         | 
| 51 | 
            +
                        raise msg
         | 
| 52 | 
            +
                      end
         | 
| 53 | 
            +
             | 
| 42 54 | 
             
                    end
         | 
| 43 55 | 
             
                  end
         | 
| 44 56 | 
             
                end
         | 
| @@ -6,18 +6,20 @@ module Eco | |
| 6 6 |  | 
| 7 7 | 
             
                      include Common::People
         | 
| 8 8 |  | 
| 9 | 
            -
                      attr_reader :config
         | 
| 9 | 
            +
                      attr_reader :config, :session
         | 
| 10 10 | 
             
                      attr_reader :api #, :host, :version
         | 
| 11 11 | 
             
                      attr_reader :file_manager, :logger
         | 
| 12 12 |  | 
| 13 13 | 
             
                      alias_method :fm, :file_manager
         | 
| 14 14 |  | 
| 15 | 
            -
                      def initialize(init = {})
         | 
| 15 | 
            +
                      def initialize(init = {}, session:)
         | 
| 16 16 | 
             
                        init = init.conf if init.is_a?(Environment)
         | 
| 17 | 
            -
                        msg = " | 
| 18 | 
            -
                        raise msg unless init.is_a?(Eco::API:: | 
| 17 | 
            +
                        msg = "Expected object Eco::API::Session::Config or Environment. Given: #{init}"
         | 
| 18 | 
            +
                        raise msg unless init.is_a?(Eco::API::Session::Config)
         | 
| 19 | 
            +
                        raise "Expected an Eco::API::Session object. Given: #{session}" if session  && !session.is_a?(Eco::API::Session)
         | 
| 19 20 |  | 
| 20 | 
            -
                        @config | 
| 21 | 
            +
                        @config  = init
         | 
| 22 | 
            +
                        @session = session
         | 
| 21 23 | 
             
                        @file_manager = Eco::API::Common::Session::FileManager.new(enviro: self)
         | 
| 22 24 | 
             
                        @logger       = Eco::API::Common::Session::Logger.new(enviro: self)
         | 
| 23 25 | 
             
                        new_api
         | 
| @@ -27,9 +29,9 @@ module Eco | |
| 27 29 | 
             
                        return nil unless config.apis.active_api
         | 
| 28 30 |  | 
| 29 31 | 
             
                        log_connection = config.logger.log_connection?
         | 
| 30 | 
            -
                         | 
| 32 | 
            +
                        logg = log_connection ? logger : ::Logger.new(IO::NULL)
         | 
| 31 33 |  | 
| 32 | 
            -
                        api = config.api( | 
| 34 | 
            +
                        api = config.api(logg)
         | 
| 33 35 |  | 
| 34 36 | 
             
                        unless log_connection
         | 
| 35 37 | 
             
                          logger.info("Created connection pointing to '#{config.apis.active_api.host}' in '#{config.apis.active_api.mode}' mode")
         | 
| @@ -1,10 +1,24 @@ | |
| 1 1 | 
             
            module Ecoportal
         | 
| 2 2 | 
             
              module API
         | 
| 3 3 | 
             
                class V1
         | 
| 4 | 
            -
                  class Person | 
| 5 | 
            -
             | 
| 4 | 
            +
                  class Person
         | 
| 5 | 
            +
             | 
| 6 | 
            +
                    def consolidate!
         | 
| 6 7 | 
             
                      @original_doc = JSON.parse(@doc.to_json)
         | 
| 7 8 | 
             
                    end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                    def sync
         | 
| 11 | 
            +
                      consolidate!
         | 
| 12 | 
            +
                    end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                    #def reset_details!
         | 
| 15 | 
            +
                    #  doc["details"] = JSON.parse(original_doc["details"])
         | 
| 16 | 
            +
                    #end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                    #def consolidate_details!
         | 
| 19 | 
            +
                    #  original_doc["details"] = JSON.parse(doc["details"])
         | 
| 20 | 
            +
                    #end
         | 
| 21 | 
            +
             | 
| 8 22 | 
             
                  end
         | 
| 9 23 | 
             
                end
         | 
| 10 24 | 
             
              end
         | 
| @@ -0,0 +1,17 @@ | |
| 1 | 
            +
            module Ecoportal
         | 
| 2 | 
            +
              module API
         | 
| 3 | 
            +
                class Internal
         | 
| 4 | 
            +
                  class Person
         | 
| 5 | 
            +
             | 
| 6 | 
            +
                    #def reset_account!
         | 
| 7 | 
            +
                    #  doc["account"] = JSON.parse(original_doc["account"])
         | 
| 8 | 
            +
                    #end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                    #def consolidate_account!
         | 
| 11 | 
            +
                    #  original_doc["account"] = JSON.parse(doc["account"])
         | 
| 12 | 
            +
                    #end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
            end
         | 
    
        data/lib/eco/api/session.rb
    CHANGED
    
    | @@ -1,7 +1,6 @@ | |
| 1 1 | 
             
            module Eco
         | 
| 2 2 | 
             
              module API
         | 
| 3 3 | 
             
                class Session < Common::Session::BaseSession
         | 
| 4 | 
            -
             | 
| 5 4 | 
             
                  attr_reader :batch, :policy_groups
         | 
| 6 5 | 
             
                  attr_accessor :schema, :schemas_hash
         | 
| 7 6 | 
             
                  attr_reader :tagtree
         | 
| @@ -11,12 +10,17 @@ module Eco | |
| 11 10 | 
             
                  #alias_method :org, :organization
         | 
| 12 11 |  | 
| 13 12 | 
             
                  def initialize(init = {})
         | 
| 14 | 
            -
                     | 
| 13 | 
            +
                    e = init
         | 
| 14 | 
            +
                    msg = "Expected object Eco::API::Session::Config or Eco::API::Common::Session::Environment. Given: #{init}"
         | 
| 15 | 
            +
                    raise msg  unless e.is_a?(Session::Config) || e.is_a?(Eco::API::Common::Session::Environment)
         | 
| 16 | 
            +
                    e = Eco::API::Common::Session::Environment.new(init, session: self) if !e.is_a?(Eco::API::Common::Session::Environment)
         | 
| 17 | 
            +
                    super(e)
         | 
| 18 | 
            +
             | 
| 15 19 | 
             
                    logger.debug("LINE COMMAND: #{$0} #{ARGV.join(" ")}")
         | 
| 16 20 |  | 
| 17 21 | 
             
                    @batch        = Batch.new(enviro)
         | 
| 18 | 
            -
                    @task         = Task.new( | 
| 19 | 
            -
                    @job_groups   = JobGroups.new( | 
| 22 | 
            +
                    @task         = Task.new(enviro)
         | 
| 23 | 
            +
                    @job_groups   = JobGroups.new(enviro)
         | 
| 20 24 |  | 
| 21 25 | 
             
                    @use_cases    = Eco::API::UseCases::DefaultCases.new.merge(config.usecases.use_group)
         | 
| 22 26 |  | 
| @@ -46,16 +50,12 @@ module Eco | |
| 46 50 | 
             
                  end
         | 
| 47 51 |  | 
| 48 52 | 
             
                  def self.configure
         | 
| 49 | 
            -
                    # | 
| 50 | 
            -
                    conf =  | 
| 53 | 
            +
                    # TODO: change to  Session::Config.new.tap
         | 
| 54 | 
            +
                    conf = Session::Config.new
         | 
| 51 55 | 
             
                    yield(conf) if block_given?
         | 
| 52 56 | 
             
                    conf
         | 
| 53 57 | 
             
                  end
         | 
| 54 58 |  | 
| 55 | 
            -
                  def config
         | 
| 56 | 
            -
                    enviro.config
         | 
| 57 | 
            -
                  end
         | 
| 58 | 
            -
             | 
| 59 59 | 
             
                  # TASKS & JOBS
         | 
| 60 60 | 
             
                  def do
         | 
| 61 61 | 
             
                    @task
         | 
| @@ -100,7 +100,7 @@ module Eco | |
| 100 100 | 
             
                    case value
         | 
| 101 101 | 
             
                    when String
         | 
| 102 102 | 
             
                      sch = @schemas_hash[value.downcase]
         | 
| 103 | 
            -
                       | 
| 103 | 
            +
                      fatal "The schema with id or name '#{value}' does not exist" if !sch
         | 
| 104 104 | 
             
                      @schema = sch
         | 
| 105 105 | 
             
                    when Ecoportal::API::V1::PersonSchema
         | 
| 106 106 | 
             
                      @schema = value
         | 
| @@ -163,20 +163,14 @@ module Eco | |
| 163 163 | 
             
                    @use_cases.case(name, type: type).process(**args)
         | 
| 164 164 | 
             
                  end
         | 
| 165 165 |  | 
| 166 | 
            -
                  private
         | 
| 167 | 
            -
             | 
| 168 | 
            -
                  def fatal(msg)
         | 
| 169 | 
            -
                    logger.fatal(msg)
         | 
| 170 | 
            -
                    raise msg
         | 
| 171 | 
            -
                  end
         | 
| 172 | 
            -
             | 
| 173 166 | 
             
                end
         | 
| 174 167 | 
             
              end
         | 
| 175 168 | 
             
            end
         | 
| 176 169 |  | 
| 170 | 
            +
            require_relative 'session/config'
         | 
| 177 171 | 
             
            require_relative 'session/batch'
         | 
| 178 172 | 
             
            require_relative 'session/batch_status'
         | 
| 179 173 | 
             
            require_relative 'session/task'
         | 
| 180 174 | 
             
            require_relative 'session/batch_job'
         | 
| 181 | 
            -
            require_relative 'session/ | 
| 175 | 
            +
            require_relative 'session/batch_jobs'
         | 
| 182 176 | 
             
            require_relative 'session/job_groups'
         | 
| @@ -15,11 +15,7 @@ module Eco | |
| 15 15 | 
             
                    end
         | 
| 16 16 |  | 
| 17 17 | 
             
                    def launch(people = nil, method:, api: nil, params: {per_page: DEFAULT_BATCH_BLOCK})
         | 
| 18 | 
            -
                      if !valid_method?(method)
         | 
| 19 | 
            -
                        msg = "Invalid batch method: #{method}."
         | 
| 20 | 
            -
                        logger.fatal(msg)
         | 
| 21 | 
            -
                        raise msg
         | 
| 22 | 
            -
                      end
         | 
| 18 | 
            +
                      fatal "Invalid batch method: #{method}." if !valid_method?(method)
         | 
| 23 19 | 
             
                      return nil if !people || !people.is_a?(Array)
         | 
| 24 20 | 
             
                      batch_from(people, method, api || self.api, params: params)
         | 
| 25 21 | 
             
                    end
         | 
| @@ -35,11 +31,7 @@ module Eco | |
| 35 31 | 
             
                    end
         | 
| 36 32 |  | 
| 37 33 | 
             
                    def batch_get(api, params: {})
         | 
| 38 | 
            -
                      unless people_api = api&.people
         | 
| 39 | 
            -
                        msg = "cannot batch get without api connnection, please provide a valid api connection!"
         | 
| 40 | 
            -
                        logger.fatal(msg)
         | 
| 41 | 
            -
                        raise msg
         | 
| 42 | 
            -
                      end
         | 
| 34 | 
            +
                      fatal "cannot batch get without api connnection, please provide a valid api connection!" unless people_api = api&.people
         | 
| 43 35 |  | 
| 44 36 | 
             
                      params = {per_page: DEFAULT_BATCH_BLOCK}.merge(params)
         | 
| 45 37 | 
             
                      client = people_api.client
         | 
| @@ -69,8 +61,7 @@ module Eco | |
| 69 61 | 
             
                      unless response.success?
         | 
| 70 62 | 
             
                        msg = "Request failed - params: #{params}"
         | 
| 71 63 | 
             
                        msg += "\n Error message: - Status #{response.status}: #{response.body}"
         | 
| 72 | 
            -
                         | 
| 73 | 
            -
                        raise msg
         | 
| 64 | 
            +
                        fatal(msg)
         | 
| 74 65 | 
             
                      end
         | 
| 75 66 | 
             
                      people = []
         | 
| 76 67 | 
             
                      response.body["results"].each do |person_hash|
         | 
| @@ -83,11 +74,7 @@ module Eco | |
| 83 74 |  | 
| 84 75 | 
             
                    def batch_from(people, method, api, params: {})
         | 
| 85 76 | 
             
                      return nil if !people || !people.is_a?(Array)
         | 
| 86 | 
            -
                      unless people_api = api&.people
         | 
| 87 | 
            -
                        msg = "cannot batch #{method} without api connnection, please provide a valid api connection!"
         | 
| 88 | 
            -
                        logger.fatal(msg)
         | 
| 89 | 
            -
                        raise msg
         | 
| 90 | 
            -
                      end
         | 
| 77 | 
            +
                      fatal "cannot batch #{method} without api connnection, please provide a valid api connection!" unless people_api = api&.people
         | 
| 91 78 |  | 
| 92 79 | 
             
                      # batch Status
         | 
| 93 80 | 
             
                      status = new_status(people, method)
         | 
| @@ -7,16 +7,15 @@ module Eco | |
| 7 7 |  | 
| 8 8 | 
             
                    attr_reader :name, :status
         | 
| 9 9 |  | 
| 10 | 
            -
                    def initialize( | 
| 10 | 
            +
                    def initialize(e, name:, type:, sets:)
         | 
| 11 11 | 
             
                      raise "A name is required to refer a job. Given: #{name}" if !name
         | 
| 12 12 | 
             
                      raise "Type should be one of #{TYPES}. Given: #{type}"    if !BatchJob.valid_type?(type)
         | 
| 13 13 | 
             
                      raise "Sets should be some of #{SETS}. Given: #{sets}"    if !BatchJob.valid_sets?(sets)
         | 
| 14 | 
            -
                      super( | 
| 14 | 
            +
                      super(e)
         | 
| 15 15 |  | 
| 16 16 | 
             
                      @name = name
         | 
| 17 17 | 
             
                      @type = type
         | 
| 18 | 
            -
                      @sets = [sets].flatten
         | 
| 19 | 
            -
                      @root = root
         | 
| 18 | 
            +
                      @sets = [sets].flatten.compact
         | 
| 20 19 | 
             
                      reset
         | 
| 21 20 | 
             
                    end
         | 
| 22 21 |  | 
| @@ -66,7 +65,7 @@ module Eco | |
| 66 65 |  | 
| 67 66 | 
             
                      if !simulate && queue.length > 0
         | 
| 68 67 | 
             
                        backup_update(queue)
         | 
| 69 | 
            -
                        @status = batch.launch(queue, method: @type.to_s)
         | 
| 68 | 
            +
                        @status = session.batch.launch(queue, method: @type.to_s)
         | 
| 70 69 | 
             
                        @status.root = self
         | 
| 71 70 | 
             
                      end
         | 
| 72 71 |  | 
| @@ -141,14 +140,6 @@ module Eco | |
| 141 140 | 
             
                      file_manager.save_json(data_body, file, :timestamp)
         | 
| 142 141 | 
             
                    end
         | 
| 143 142 |  | 
| 144 | 
            -
                    def session
         | 
| 145 | 
            -
                      @root.session
         | 
| 146 | 
            -
                    end
         | 
| 147 | 
            -
             | 
| 148 | 
            -
                    def batch
         | 
| 149 | 
            -
                      session.batch
         | 
| 150 | 
            -
                    end
         | 
| 151 | 
            -
             | 
| 152 143 | 
             
                  end
         | 
| 153 144 |  | 
| 154 145 | 
             
                end
         | 
| @@ -2,13 +2,11 @@ module Eco | |
| 2 2 | 
             
              module API
         | 
| 3 3 | 
             
                class Session
         | 
| 4 4 | 
             
                  class BatchJobs < API::Common::Session::BaseSession
         | 
| 5 | 
            -
                    attr_reader :name | 
| 5 | 
            +
                    attr_reader :name
         | 
| 6 6 |  | 
| 7 | 
            -
                    def initialize( | 
| 8 | 
            -
                       | 
| 9 | 
            -
                       | 
| 10 | 
            -
                      @session = session
         | 
| 11 | 
            -
                      @name     = name
         | 
| 7 | 
            +
                    def initialize(e, name:)
         | 
| 8 | 
            +
                      super(e)
         | 
| 9 | 
            +
                      @name = name
         | 
| 12 10 | 
             
                      reset
         | 
| 13 11 | 
             
                    end
         | 
| 14 12 |  | 
| @@ -26,9 +24,9 @@ module Eco | |
| 26 24 | 
             
                    end
         | 
| 27 25 |  | 
| 28 26 | 
             
                    def new(name, type:, sets:)
         | 
| 29 | 
            -
                       | 
| 27 | 
            +
                      fatal "Can't create job named '#{name}' because it already exists." if exists?(name)
         | 
| 30 28 |  | 
| 31 | 
            -
                      job = BatchJob.new(name, type: type, sets: sets | 
| 29 | 
            +
                      job = BatchJob.new(enviro, name: name, type: type, sets: sets)
         | 
| 32 30 | 
             
                      @jobs[name] = job
         | 
| 33 31 | 
             
                      @callbacks[job] = Proc.new if block_given?
         | 
| 34 32 |  | 
| @@ -7,12 +7,8 @@ module Eco | |
| 7 7 |  | 
| 8 8 | 
             
                    def initialize(e, queue:, method:)
         | 
| 9 9 | 
             
                      super(e)
         | 
| 10 | 
            +
                      fatal("In batch operations you must batch an array. Received: #{queue}")  unless queue && queue.is_a?(Array)
         | 
| 10 11 |  | 
| 11 | 
            -
                      unless queue && queue.is_a?(Array)
         | 
| 12 | 
            -
                        msg = "In batch operations you must batch an array. Received: #{queue}"
         | 
| 13 | 
            -
                        logger.fatal(msg)
         | 
| 14 | 
            -
                        raise msg
         | 
| 15 | 
            -
                      end
         | 
| 16 12 | 
             
                      @method = method
         | 
| 17 13 | 
             
                      @queue = queue
         | 
| 18 14 | 
             
                      @hash  = @queue.each_with_index.map do |entry, i|
         | 
| @@ -42,7 +38,7 @@ module Eco | |
| 42 38 | 
             
                    end
         | 
| 43 39 |  | 
| 44 40 | 
             
                    def people
         | 
| 45 | 
            -
                       | 
| 41 | 
            +
                      fatal "This batch wasn't a 'get'. Can't obtain people without 'get' method" unless method == "get"
         | 
| 46 42 | 
             
                      out = Array(0..queue.length-1)
         | 
| 47 43 | 
             
                      @responses.each_with_index do |respose, i|
         | 
| 48 44 | 
             
                        out[i] = response.result
         | 
| @@ -123,7 +119,7 @@ module Eco | |
| 123 119 | 
             
                    def valid_index(index: nil, entry: nil)
         | 
| 124 120 | 
             
                      index ||= @hash[entry]
         | 
| 125 121 | 
             
                      unless index && index < @queue.length
         | 
| 126 | 
            -
                         | 
| 122 | 
            +
                        fatal "You must provide either the index or the original entry object of the batch"
         | 
| 127 123 | 
             
                      end
         | 
| 128 124 | 
             
                      index
         | 
| 129 125 | 
             
                    end
         | 
| @@ -0,0 +1,186 @@ | |
| 1 | 
            +
            module Eco
         | 
| 2 | 
            +
              module API
         | 
| 3 | 
            +
                class Session
         | 
| 4 | 
            +
                  class Config < Hash
         | 
| 5 | 
            +
                    def initialize()
         | 
| 6 | 
            +
                      super(nil)
         | 
| 7 | 
            +
                      self["org"] = {}
         | 
| 8 | 
            +
                    end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                    def reopen
         | 
| 11 | 
            +
                      yield(self)
         | 
| 12 | 
            +
                    end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                    def apis
         | 
| 15 | 
            +
                      self["apis"] ||= Session::Config::Apis.new(root: self)
         | 
| 16 | 
            +
                    end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                    def logger
         | 
| 19 | 
            +
                      self["logger"] ||= Session::Config::Logger.new(root: self)
         | 
| 20 | 
            +
                    end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                    def s3storage
         | 
| 23 | 
            +
                      self["s3_storage"] ||= Session::Config::S3Storage.new(root: self)
         | 
| 24 | 
            +
                    end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                    def files
         | 
| 27 | 
            +
                      self["files"] ||= Session::Config::Files.new(root: self)
         | 
| 28 | 
            +
                    end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                    def mailer
         | 
| 31 | 
            +
                      self["mailer"] ||= Session::Config::Mailer.new(root: self)
         | 
| 32 | 
            +
                    end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                    def org
         | 
| 35 | 
            +
                      self["org"]
         | 
| 36 | 
            +
                    end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                    def people
         | 
| 39 | 
            +
                      self["people"] ||= Session::Config::People.new(root: self)
         | 
| 40 | 
            +
                    end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                    def usecases
         | 
| 43 | 
            +
                      self["usecases"] ||= Session::Config::UseCases.new(root: self)
         | 
| 44 | 
            +
                    end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                    # LOGGER
         | 
| 47 | 
            +
                    def log_console_level=(value)
         | 
| 48 | 
            +
                      logger.console_level= value
         | 
| 49 | 
            +
                    end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                    def log_file_level=(value)
         | 
| 52 | 
            +
                      logger.file_level = value
         | 
| 53 | 
            +
                    end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
                    def log_file=(file)
         | 
| 56 | 
            +
                      logger.file = file
         | 
| 57 | 
            +
                    end
         | 
| 58 | 
            +
             | 
| 59 | 
            +
                    def timestamp_console=(value)
         | 
| 60 | 
            +
                      logger.timestamp_console = value
         | 
| 61 | 
            +
                    end
         | 
| 62 | 
            +
             | 
| 63 | 
            +
                    def log_connection=(value)
         | 
| 64 | 
            +
                      logger.log_connection = value
         | 
| 65 | 
            +
                    end
         | 
| 66 | 
            +
             | 
| 67 | 
            +
                    # API
         | 
| 68 | 
            +
                    def dry_run!
         | 
| 69 | 
            +
                      self["dry-run"] = true
         | 
| 70 | 
            +
                    end
         | 
| 71 | 
            +
             | 
| 72 | 
            +
                    def dry_run?
         | 
| 73 | 
            +
                      self["dry-run"]
         | 
| 74 | 
            +
                    end
         | 
| 75 | 
            +
             | 
| 76 | 
            +
                    def run_mode=(mode)
         | 
| 77 | 
            +
                      apis.active_api.mode = mode
         | 
| 78 | 
            +
                    end
         | 
| 79 | 
            +
             | 
| 80 | 
            +
                    def run_mode_local?
         | 
| 81 | 
            +
                      apis.active_api.local?
         | 
| 82 | 
            +
                    end
         | 
| 83 | 
            +
             | 
| 84 | 
            +
                    def run_mode_remote?
         | 
| 85 | 
            +
                      apis.active_api.remote?
         | 
| 86 | 
            +
                    end
         | 
| 87 | 
            +
             | 
| 88 | 
            +
                    def apis?
         | 
| 89 | 
            +
                      apis.apis?
         | 
| 90 | 
            +
                    end
         | 
| 91 | 
            +
             | 
| 92 | 
            +
                    def add_api(name, **kargs)
         | 
| 93 | 
            +
                      apis.add(name, **kargs)
         | 
| 94 | 
            +
                      self
         | 
| 95 | 
            +
                    end
         | 
| 96 | 
            +
             | 
| 97 | 
            +
                    def active_api(name)
         | 
| 98 | 
            +
                      apis.active_name = name
         | 
| 99 | 
            +
                      self
         | 
| 100 | 
            +
                    end
         | 
| 101 | 
            +
             | 
| 102 | 
            +
                    def api(logger = ::Logger.new(IO::NULL))
         | 
| 103 | 
            +
                      apis.api(logger)
         | 
| 104 | 
            +
                    end
         | 
| 105 | 
            +
             | 
| 106 | 
            +
                    def policy_groups
         | 
| 107 | 
            +
                      policy_groups = api&.policy_groups.to_a.compact
         | 
| 108 | 
            +
                      Eco::API::Organization::PolicyGroups.new(policy_groups)
         | 
| 109 | 
            +
                    end
         | 
| 110 | 
            +
             | 
| 111 | 
            +
                    # FILES
         | 
| 112 | 
            +
                    def working_directory=(path)
         | 
| 113 | 
            +
                      files.working_directory = path
         | 
| 114 | 
            +
                    end
         | 
| 115 | 
            +
             | 
| 116 | 
            +
                    def file_timestamp_pattern=(pattern)
         | 
| 117 | 
            +
                      files.timestamp_pattern = pattern
         | 
| 118 | 
            +
                    end
         | 
| 119 | 
            +
             | 
| 120 | 
            +
                    def file_manager
         | 
| 121 | 
            +
                      Eco::API::Common::Session::FileManager.new(self)
         | 
| 122 | 
            +
                    end
         | 
| 123 | 
            +
             | 
| 124 | 
            +
                    def require(file)
         | 
| 125 | 
            +
                      require_relative "#{File.expand_path(file_manager.dir.file(file))}"
         | 
| 126 | 
            +
                    end
         | 
| 127 | 
            +
             | 
| 128 | 
            +
                    # ORG
         | 
| 129 | 
            +
                    def tagtree=(file)
         | 
| 130 | 
            +
                      org["tagtree"] = file
         | 
| 131 | 
            +
                    end
         | 
| 132 | 
            +
             | 
| 133 | 
            +
                    # PEOPLE
         | 
| 134 | 
            +
                    def discarded_people_file=(value)
         | 
| 135 | 
            +
                      people.discarded_file = value
         | 
| 136 | 
            +
                    end
         | 
| 137 | 
            +
             | 
| 138 | 
            +
                    def people_cache=(file)
         | 
| 139 | 
            +
                      people.cache = file
         | 
| 140 | 
            +
                    end
         | 
| 141 | 
            +
             | 
| 142 | 
            +
                    def requests_backup_folder=(folder)
         | 
| 143 | 
            +
                      people.requests_folder = folder
         | 
| 144 | 
            +
                    end
         | 
| 145 | 
            +
             | 
| 146 | 
            +
                    # PERSON FIELDS MAPPER
         | 
| 147 | 
            +
                    def person_fields_mapper=(file)
         | 
| 148 | 
            +
                      people.fields_mapper = file
         | 
| 149 | 
            +
                    end
         | 
| 150 | 
            +
             | 
| 151 | 
            +
                    def default_schema=(name)
         | 
| 152 | 
            +
                      people.default_schema = name
         | 
| 153 | 
            +
                    end
         | 
| 154 | 
            +
             | 
| 155 | 
            +
                    # ACCOUNT PRESETS
         | 
| 156 | 
            +
                    def presets_custom=(file)
         | 
| 157 | 
            +
                      people.presets_custom = file
         | 
| 158 | 
            +
                    end
         | 
| 159 | 
            +
             | 
| 160 | 
            +
                    def presets_map=(file)
         | 
| 161 | 
            +
                      people.presets_map = file
         | 
| 162 | 
            +
                    end
         | 
| 163 | 
            +
             | 
| 164 | 
            +
                    # CUSTOM PERSON PARSERS
         | 
| 165 | 
            +
                    def person_parser(format: :csv, &block)
         | 
| 166 | 
            +
                      people.add_parser(format: format, &block)
         | 
| 167 | 
            +
                    end
         | 
| 168 | 
            +
             | 
| 169 | 
            +
                    # CUSTOM USE CASES
         | 
| 170 | 
            +
                    def use_cases(&block)
         | 
| 171 | 
            +
                      usecases.add(&block)
         | 
| 172 | 
            +
                    end
         | 
| 173 | 
            +
             | 
| 174 | 
            +
                  end
         | 
| 175 | 
            +
                end
         | 
| 176 | 
            +
              end
         | 
| 177 | 
            +
            end
         | 
| 178 | 
            +
             | 
| 179 | 
            +
            require_relative 'config/api'
         | 
| 180 | 
            +
            require_relative 'config/apis'
         | 
| 181 | 
            +
            require_relative 'config/logger'
         | 
| 182 | 
            +
            require_relative 'config/mailer'
         | 
| 183 | 
            +
            require_relative 'config/s3_storage'
         | 
| 184 | 
            +
            require_relative 'config/files'
         | 
| 185 | 
            +
            require_relative 'config/people'
         | 
| 186 | 
            +
            require_relative 'config/use_cases'
         |