class Eco::API::Session::Config
Attributes
Public Class Methods
# File lib/eco/api/session/config.rb, line 7 def initialize(name = :default) super(nil) @name = name self["org"] = {} end
Public Instance Methods
Set the active api by `name` @see Eco::API::Session::Config::Apis#active_api= @return [Eco::API::Session::Config] this configuration
# File lib/eco/api/session/config.rb, line 106 def active_api(name) apis.active_name = name self end
@see Eco::API::Session::Config::Apis#active_root_name
# File lib/eco/api/session/config.rb, line 112 def active_enviro apis.active_root_name end
@param (see Eco::API::Session::Config::Apis#add
) @return [Eco::API::Session::Config] this configuration
# File lib/eco/api/session/config.rb, line 98 def add_api(name, **kargs) apis.add(name, **kargs) self end
@see Eco::API::Session::Config::Apis#api
# File lib/eco/api/session/config.rb, line 117 def api(logger = ::Logger.new(IO::NULL), version: nil) apis.api(logger, version: version) end
@return [Eco::API::Session::Config::Apis]
# File lib/eco/api/session/config.rb, line 87 def apis self["apis"] ||= Eco::API::Session::Config::Apis.new(config: self) end
@return [Boolean] `true` if there is any api configuration defined, `false` otherwise
# File lib/eco/api/session/config.rb, line 92 def apis? apis.apis? end
@return [Eco::API::Session::Batch::Policies]
# File lib/eco/api/session/config.rb, line 338 def batch_policies @batch_policies = self["batch_policies"] ||= Eco::API::Session::Batch::Policies.new("batch_policy") if block_given? yield(@batch_policies) self else @batch_policies end end
@!group Config
instance pure methods
# File lib/eco/api/session/config.rb, line 15 def clone(name) keys.each_with_object(self.class.new(name)) do |key, cnf| begin cnf[key] = self[key].clone(config: cnf) rescue ArgumentError cnf[key] = self[key].clone end end end
Set the **default schema** this `api` org configuration should work on.
# File lib/eco/api/session/config.rb, line 296 def default_schema=(name) people.default_schema = name end
Define the default usergroup that should be given to people with no usergroups.
# File lib/eco/api/session/config.rb, line 271 def default_usergroup=(value) people.default_usergroup = value end
Specify the file that holds the `csv` with people to be excluded from `API` updates.
# File lib/eco/api/session/config.rb, line 276 def discarded_people_file=(value) people.discarded_file = value end
@deprecated old helper to fix the dry-run mode @note this is now done via `options`, parsed as an option
# File lib/eco/api/session/config.rb, line 138 def dry_run! self["dry-run"] = true end
@deprecated old helper to check if we are in dry-run mode @note this is now done via `options`, which is parsed as an option
# File lib/eco/api/session/config.rb, line 144 def dry_run? self["dry-run"] end
@return [Eco::API::Error::Handlers]
# File lib/eco/api/session/config.rb, line 349 def error_handlers @error_handlers = self["error_handlers"] ||= Eco::API::Error::Handlers.new if block_given? yield(@error_handlers) self else @error_handlers end end
# File lib/eco/api/session/config.rb, line 183 def file_manager Eco::API::Common::Session::FileManager.new(self) end
# File lib/eco/api/session/config.rb, line 179 def file_timestamp_pattern=(pattern) files.timestamp_pattern = pattern end
@return [Eco::API::Session::Config::Files]
# File lib/eco/api/session/config.rb, line 152 def files self["files"] ||= Eco::API::Session::Config::Files.new(config: self) end
# File lib/eco/api/session/config.rb, line 216 def location_codes org["location_codes"] end
# File lib/eco/api/session/config.rb, line 212 def location_codes=(file) org["location_codes"] = file end
# File lib/eco/api/session/config.rb, line 220 def locations_mapper return @locations_mapper if instance_variable_defined?(:@locations_mapper) file = file_manager.newest(location_codes) @locations_mapper = Eco::Data::Mapper.new(file_manager.load_json(file), internal: :first) end
# File lib/eco/api/session/config.rb, line 74 def log_connection=(value) logger.log_connection = value end
# File lib/eco/api/session/config.rb, line 58 def log_console_level=(value) logger.console_level= value end
# File lib/eco/api/session/config.rb, line 66 def log_file=(file) logger.file = file end
# File lib/eco/api/session/config.rb, line 62 def log_file_level=(value) logger.file_level = value end
@return [Eco::API::Session::Config::Logger]
# File lib/eco/api/session/config.rb, line 54 def logger self["logger"] ||= Eco::API::Session::Config::Logger.new(config: self) end
@return [Eco::API::Organization::LoginProviders]
# File lib/eco/api/session/config.rb, line 255 def login_providers return @login_providers if instance_variable_defined?(:@login_providers) provs = api&.login_providers.to_a @login_providers = Eco::API::Organization::LoginProviders.new(provs) end
Helper to send emails. @return [Eco::API::Session::Config::Mailer]
# File lib/eco/api/session/config.rb, line 46 def mailer self["mailer"] ||= Eco::API::Session::Config::Mailer.new(config: self) end
@!group Organization
related shortcuts
# File lib/eco/api/session/config.rb, line 208 def org self["org"] end
@return [Eco::API::Session::Config::People]
# File lib/eco/api/session/config.rb, line 266 def people self["people"] ||= Eco::API::Session::Config::People.new(config: self) end
Set the base folder/name.ext name of the fieles where people will be cached.
# File lib/eco/api/session/config.rb, line 281 def people_cache=(file) people.cache = file end
Specify the `.json` file name with the mappings [`DataInputColumnName`, `internal-name`].
# File lib/eco/api/session/config.rb, line 291 def person_fields_mapper=(file) people.fields_mapper = file end
@see Eco::API::Session::Config::People
@param (see Eco::API::Session::Config::People
) @return [Eco::API::Common::People::PersonParser] parser/serializer for the defined `format`.
# File lib/eco/api/session/config.rb, line 303 def person_parser(format: :csv, &block) people.parser(format: format, &block) end
@return [Eco::API::Policies]
# File lib/eco/api/session/config.rb, line 327 def policies @policies = self["policies"] ||= Eco::API::Policies.new if block_given? yield(@policies) self else @policies end end
@return [Eco::API::Organization::PolicyGroups]
# File lib/eco/api/session/config.rb, line 241 def policy_groups return @policy_groups if instance_variable_defined?(:@policy_groups) pgs = api&.policy_groups.to_a @policy_groups = Eco::API::Organization::PolicyGroups.new(pgs) end
@return [Eco::API::Session::Config::PostLaunch]
# File lib/eco/api/session/config.rb, line 322 def post_launch self["post_launch"] ||= Eco::API::Session::Config::PostLaunch.new(config: self) end
# File lib/eco/api/session/config.rb, line 25 def reopen yield(self) end
Set the base folder name where requests launched to the server will be saved for future reference.
# File lib/eco/api/session/config.rb, line 286 def requests_backup_folder=(folder) people.requests_folder = folder end
# File lib/eco/api/session/config.rb, line 187 def require(file = nil, match: nil) begin if match file_manager.dir.dir_files(pattern: match).each do |file| require_relative File.expand_path(file) end else target = File.expand_path(file_manager.dir.file(file)) require_relative target end rescue LoadError => e if apis.active_api.one_off? pp e.to_s else raise end end end
Sets the `mode` of the active api @see Eco::API::Session::Config::Api#mode
@param (see Eco::API::Session::Config::Api#mode
)
# File lib/eco/api/session/config.rb, line 124 def run_mode=(mode) apis.active_api.mode = mode end
# File lib/eco/api/session/config.rb, line 128 def run_mode_local? apis.active_api.local? end
# File lib/eco/api/session/config.rb, line 132 def run_mode_remote? apis.active_api.remote? end
Helper to upload files and folders to `S3`. @return [Eco::API::Session::Config::S3Storage]
# File lib/eco/api/session/config.rb, line 40 def s3storage self["s3_storage"] ||= Eco::API::Session::Config::S3Storage.new(config: self) end
@return pEco::API::Organization::PersonSchemas
# File lib/eco/api/session/config.rb, line 248 def schemas return @schemas if instance_variable_defined?(:@schemas) schs = api&.person_schemas.to_a @schemas = Eco::API::Organization::PersonSchemas.new(schs) end
@return [Eco::API::Session] the `session` linked to this `config`
# File lib/eco/api/session/config.rb, line 82 def session @session ||= Eco::API::Session.new(self) end
Helper to manage `SFTP` files and folders. @return [Eco::API::Session::Config::SFTP]
# File lib/eco/api/session/config.rb, line 34 def sftp self["sftp"] ||= Eco::API::Session::Config::SFTP.new(config: self) end
@return [Eco::API::Organization::TagTree]
# File lib/eco/api/session/config.rb, line 231 def tagtree(enviro: nil) return @tagtree if instance_variable_defined?(:@tagtree) && @tagtree.enviro == enviro if tree_file = org["tagtree"] tree = [] tree = file_manager.load_json(tree_file) unless !tree_file @tagtree = Eco::API::Organization::TagTree.new(tree, enviro: enviro) end end
# File lib/eco/api/session/config.rb, line 226 def tagtree=(file) org["tagtree"] = file end
# File lib/eco/api/session/config.rb, line 70 def timestamp_console=(value) logger.timestamp_console = value end
@return [Eco::API::UseCases]
# File lib/eco/api/session/config.rb, line 311 def usecases @usecases = self["usecases"] ||= Eco::API::UseCases.new if block_given? yield(@usecases) self else @usecases end end
@return [Eco::API::Session::Config::Workflow]
# File lib/eco/api/session/config.rb, line 360 def workflow @workflow = self["workflow"] ||= Eco::API::Session::Config::Workflow.new(config: self) @workflow.tap do |wf| yield(wf) if block_given? end end
# File lib/eco/api/session/config.rb, line 161 def working_directory(mode: nil) return files.working_directory if apis.active_api&.one_off? unless mode wd = files.working_directory return wd unless wd.to_s.strip.empty? end mode ||= :active_api if mode == :active_api apis.active_root_name elsif mode == :raw_api_name apis.active_name else files.working_directory end end
Defines in the base folder from where files are expected to be found when relative paths are used
# File lib/eco/api/session/config.rb, line 157 def working_directory=(path) files.working_directory = path end