Class: ConnectionConfigurationMailchain
- Inherits:
-
Object
- Object
- ConnectionConfigurationMailchain
- Defined in:
- lib/connection_configuration/mailchain.rb
Constant Summary collapse
- FOLDER_STRUCTURE =
{ 'by_network' => 'Protocol>Network>Address', 'by_address' => 'Address>Protocol>Network' }.freeze
Instance Attribute Summary collapse
-
#config ⇒ Object
readonly
Returns the value of attribute config.
Instance Method Summary collapse
-
#configuration_wizard ⇒ Object
Runs the Mailchain API configuration wizard Returns hash or either: { “save” => true, “config” => “{ #config }” } - or - { “save” => false }.
-
#initialize(config) ⇒ ConnectionConfigurationMailchain
constructor
A new instance of ConnectionConfigurationMailchain.
-
#print_settings ⇒ Object
Prints the Mailchain API settings as output in a nice format.
-
#prompt_confirm_save_settings ⇒ Object
Confirm settings with user.
-
#prompt_folder_format ⇒ Object
Folder format.
-
#prompt_hostname ⇒ Object
Get Mailchain server config.
-
#prompt_mainnet_to_inbox ⇒ Object
Mainnet to Inbox.
-
#prompt_polling_interval ⇒ Object
Polling Interval.
-
#prompt_port ⇒ Object
Get Mailchain port.
-
#prompt_ssl ⇒ Object
Get Mailchain ssl status.
Constructor Details
#initialize(config) ⇒ ConnectionConfigurationMailchain
Returns a new instance of ConnectionConfigurationMailchain.
7 8 9 |
# File 'lib/connection_configuration/mailchain.rb', line 7 def initialize(config) @config = config end |
Instance Attribute Details
#config ⇒ Object (readonly)
Returns the value of attribute config.
6 7 8 |
# File 'lib/connection_configuration/mailchain.rb', line 6 def config @config end |
Instance Method Details
#configuration_wizard ⇒ Object
Runs the Mailchain API configuration wizard Returns hash or either: { “save” => true, “config” => “{ #config }” }
-
or -
{ “save” => false }
15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/connection_configuration/mailchain.rb', line 15 def configuration_wizard @prompt = TTY::Prompt.new prompt_hostname prompt_ssl prompt_port prompt_folder_format prompt_mainnet_to_inbox prompt_polling_interval result = prompt_confirm_save_settings @prompt = nil result end |
#print_settings ⇒ Object
Prints the Mailchain API settings as output in a nice format
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/connection_configuration/mailchain.rb', line 29 def print_settings ssl = @config['mailchain']['ssl'] ? 'https' : 'http' hostname = @config['mailchain']['hostname'] port = @config['mailchain']['port'] folders = @config['mailchain']['folders'] mainnet_inbox = @config['mailchain']['mainnet_to_inbox'] ? 'To Inbox' : 'To Mainnet Folder' interval = @config['mailchain']['interval'].to_i > 60 ? @config['mailchain']['interval'].to_i : 60 puts "Mailchain Settings:\n" \ "-------------------\n" \ "http/https:\t#{ssl}\n" \ "Hostname:\t#{hostname}\n" \ "Port:\t\t#{port}\n" \ "API URL:\t#{ssl}://#{hostname}:#{port}/api\n" \ "Mainnet messages: #{mainnet_inbox}\n" \ "Store messages: #{FOLDER_STRUCTURE[folders]}\n" \ "Polling interval: #{interval} seconds #{'(' + (interval / 60).to_s + ' minutes)' if interval > 60}" end |
#prompt_confirm_save_settings ⇒ Object
Confirm settings with user
126 127 128 129 130 131 132 133 134 135 136 137 138 |
# File 'lib/connection_configuration/mailchain.rb', line 126 def prompt_confirm_save_settings settings = print_settings mailchain_confirm_val = @prompt.select( "Would you like to save the following settings?\n" \ "NOTE: Any existing configuration will be overwritten\n\n" \ "#{settings}", cycle: true ) do || .choice 'Save', true .choice 'Cancel', false end mailchain_confirm_val ? { 'save' => true, 'config' => @config } : { 'save' => false } end |
#prompt_folder_format ⇒ Object
Folder format
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/connection_configuration/mailchain.rb', line 86 def prompt_folder_format choices = { 1 => 'by_network', 'by_network' => 1, 2 => 'by_address', 'by_address' => 2 } folder_choice = @prompt.select( 'How would you like to structure your folders in IMAP?', cycle: true ) do || .default choices[@config['mailchain']['folders']] || 1 .choice FOLDER_STRUCTURE['by_network'], 1 .choice FOLDER_STRUCTURE['by_address'], 2 end @config['mailchain']['folders'] = choices[folder_choice] end |
#prompt_hostname ⇒ Object
Get Mailchain server config
49 50 51 52 53 54 |
# File 'lib/connection_configuration/mailchain.rb', line 49 def prompt_hostname @config['mailchain']['hostname'] = @prompt.ask( 'Enter your Mailchain client hostname (e.g. 127.0.0.1 or mailchain.example.com)', default: @config['mailchain']['hostname'] || '127.0.0.1' ) end |
#prompt_mainnet_to_inbox ⇒ Object
Mainnet to Inbox
106 107 108 109 110 111 112 113 114 |
# File 'lib/connection_configuration/mailchain.rb', line 106 def prompt_mainnet_to_inbox @config['mailchain']['mainnet_to_inbox'] = @prompt.select( "Most email clients don't alert you when messages are delivered to your folders. Would you like 'Mainnet' messages delivered to your Inbox folder so you get new message alerts?", cycle: true ) do || .choice 'Yes', true .choice 'No', false end end |
#prompt_polling_interval ⇒ Object
Polling Interval
117 118 119 120 121 122 123 |
# File 'lib/connection_configuration/mailchain.rb', line 117 def prompt_polling_interval @config['mailchain']['interval'] = @config['mailchain']['interval'] || '300' @config['mailchain']['interval'] = @prompt.ask( 'How often would you like to check for messages (in seconds)? (e.g. 300 = 5 minutes; Minimum interval is 1 minute)', default: @config['mailchain']['interval'] ) end |
#prompt_port ⇒ Object
Get Mailchain port
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/connection_configuration/mailchain.rb', line 69 def prompt_port custom_port = @prompt.yes?('Connect to a custom port?') case custom_port when false && @config['mailchain']['ssl'] @config['mailchain']['port'] = 443 when false && !@config['mailchain']['ssl'] @config['mailchain']['port'] = 80 when true @config['mailchain']['port'] = @config['mailchain']['port'] || '8080' @config['mailchain']['port'] = @prompt.ask( 'Enter the port to connect to the Mailchain client (e.g. 8080)', default: @config['mailchain']['port'] ) end end |
#prompt_ssl ⇒ Object
Get Mailchain ssl status
57 58 59 60 61 62 63 64 65 66 |
# File 'lib/connection_configuration/mailchain.rb', line 57 def prompt_ssl @config['mailchain']['ssl'] = @config['mailchain']['ssl'] != false ssl_val = @config['mailchain']['ssl'] ? 1 : 2 ssl_val = @prompt.select('Use https (SSL)?', cycle: true) do || .default ssl_val .choice 'https (SSL)', 1 .choice 'http', 2 end @config['mailchain']['ssl'] = ssl_val == 1 end |