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
STORABLE_CONFIGURATION_KEYS =

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

%w(subdomain api_key open_timeout read_timeout).freeze
CONFIG_FILE_PATH =
default_config_file_path

Instance Attribute Summary collapse

Class Method 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.



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/brick_ftp/configuration.rb', line 59

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_key ⇒ String

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_path ⇒ String (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_formatter ⇒ Logger::Formatter

Log formatter

Returns:

  • (Logger::Formatter)


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

def log_formatter
  @log_formatter
end

#log_level ⇒ Integer

Log level

Returns:

  • (Integer)


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

def log_level
  @log_level
end

#logger ⇒ Logger

Logger.

Returns:

  • (Logger) —

    logger



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

def logger
  @logger
end

#open_timeout ⇒ Integer

Open timeout

Returns:

  • (Integer)


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

def open_timeout
  @open_timeout
end

#profile ⇒ String (readonly)

Name of configuration profile.

Returns:

  • (String) —

    profile



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

def profile
  @profile
end

#read_timeout ⇒ Integer

Read timeout

Returns:

  • (Integer)


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

def read_timeout
  @read_timeout
end

#session ⇒ BrickFTP::API::Authentication::Session

Authentication session for cookie auth.

Returns:



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

def session
  @session
end

#subdomain ⇒ String

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

Class Method Details

.default_config_file_path ⇒ Object



51
52
53
54
55
56
# File 'lib/brick_ftp/configuration.rb', line 51

def self.default_config_file_path
  File.expand_path('~/.brick_ftp/config')
rescue ArgumentError
  # couldn't find login name -- expanding `~'
  nil
end

Instance Method Details

#api_host ⇒ String

Host name of API endpoint.

Returns:

  • (String) —

    API host



79
80
81
# File 'lib/brick_ftp/configuration.rb', line 79

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

#save! ⇒ Object



97
98
99
100
101
102
103
# File 'lib/brick_ftp/configuration.rb', line 97

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