Class: BrickFTP::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/brick_ftp/configuration.rb

Constant Summary collapse

DEFAULT_OPEN_TIMEOUT =
10
DEFAULT_READ_TIMEOUT =
30
DEFAULT_PROFILE =
'global'.freeze
CONFIG_FILE_PATH =
File.expand_path('~/.brick_ftp/config').freeze
STORABLE_CONFIGURATION_KEYS =

Name of storable configurations. (TODO: log_path, log_level, log_formatter)

%w(subdomain api_key open_timeout read_timeout).freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(profile: DEFAULT_PROFILE, config_file_path: CONFIG_FILE_PATH) ⇒ Configuration

Returns a new instance of Configuration.



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/brick_ftp/configuration.rb', line 52

def initialize(profile: DEFAULT_PROFILE, config_file_path: CONFIG_FILE_PATH)
  @profile = profile
  @config_file_path = config_file_path
  load_config_file(config_file_path)

  self.subdomain = ENV.fetch('BRICK_FTP_SUBDOMAIN', inifile[profile]['subdomain'])
  self.api_key = ENV.fetch('BRICK_FTP_API_KEY', inifile[profile]['api_key'])
  self.session = nil
  self.open_timeout = (inifile[profile]['open_timeout'] || DEFAULT_OPEN_TIMEOUT).to_i
  self.read_timeout = (inifile[profile]['read_timeout'] || DEFAULT_READ_TIMEOUT).to_i
  self.logger = Logger.new(STDOUT)
  self.log_level = Logger::WARN
  self.log_formatter = Logger::Formatter.new
  logger.level = log_level

  dirty_attributes.clear
end

Instance Attribute Details

#api_keyString

Access key of API. If not specified, get value from enviroment variable ‘BRICK_FTP_API_KEY`.

Returns:

  • (String)

    API access key



17
18
19
# File 'lib/brick_ftp/configuration.rb', line 17

def api_key
  @api_key
end

#config_file_pathString (readonly)

Path for configuration file.

Returns:

  • (String)

    path



11
12
13
# File 'lib/brick_ftp/configuration.rb', line 11

def config_file_path
  @config_file_path
end

#log_formatterLogger::Formatter

Log formatter

Returns:

  • (Logger::Formatter)


29
30
31
# File 'lib/brick_ftp/configuration.rb', line 29

def log_formatter
  @log_formatter
end

#log_levelInteger

Log level

Returns:

  • (Integer)


26
27
28
# File 'lib/brick_ftp/configuration.rb', line 26

def log_level
  @log_level
end

#loggerLogger

Logger.

Returns:

  • (Logger)

    logger



23
24
25
# File 'lib/brick_ftp/configuration.rb', line 23

def logger
  @logger
end

#open_timeoutInteger

Open timeout

Returns:

  • (Integer)


32
33
34
# File 'lib/brick_ftp/configuration.rb', line 32

def open_timeout
  @open_timeout
end

#profileString (readonly)

Name of configuration profile.

Returns:

  • (String)

    profile



8
9
10
# File 'lib/brick_ftp/configuration.rb', line 8

def profile
  @profile
end

#read_timeoutInteger

Read timeout

Returns:

  • (Integer)


35
36
37
# File 'lib/brick_ftp/configuration.rb', line 35

def read_timeout
  @read_timeout
end

#sessionBrickFTP::API::Authentication::Session

Authentication session for cookie auth.

Returns:



20
21
22
# File 'lib/brick_ftp/configuration.rb', line 20

def session
  @session
end

#subdomainString

Subdomain of API endpoint. If not specified, get value from enviroment variable ‘BRICK_FTP_SUBDOMAIN`.

Returns:

  • (String)

    subdomain



14
15
16
# File 'lib/brick_ftp/configuration.rb', line 14

def subdomain
  @subdomain
end

Instance Method Details

#api_hostString

Host name of API endpoint.

Returns:

  • (String)

    API host



72
73
74
# File 'lib/brick_ftp/configuration.rb', line 72

def api_host
  "#{subdomain}.brickftp.com"
end

#save!Object



90
91
92
93
94
95
96
# File 'lib/brick_ftp/configuration.rb', line 90

def save!
  dirty_attributes.each do |key|
    inifile[profile][key] = send(key)
  end
  FileUtils.mkdir_p(File.dirname(inifile.filename)) unless File.exist?(File.dirname(inifile.filename))
  inifile.save
end