class FloodCli
Public Class Methods
new(endpoint: nil, proxy: nil, config: nil, verbose: nil)
click to toggle source
# File lib/flood-cli/flood-cli.rb, line 2 def initialize(endpoint: nil, proxy: nil, config: nil, verbose: nil) @endpoint = endpoint @verbose = verbose load_configuration(config: config) configure_rest_client(proxy: proxy) end
Public Instance Methods
floods_index()
click to toggle source
# File lib/flood-cli/flood-cli.rb, line 27 def floods_index get 'floods' end
login(email:, password:)
click to toggle source
# File lib/flood-cli/flood-cli.rb, line 9 def login(email:, password:) response = post '/api/auth', { email: email, password: password } if response && response.code == 200 logger.info 'Logged in to Flood IO.' config = { endpoint: endpoint, proxy: @proxy, token: JSON.parse(response)['token'] } File.open(@config_file, 'w') { |file| file.write(config.to_yaml) } end end
Private Instance Methods
configure_rest_client(proxy:)
click to toggle source
# File lib/flood-cli/flood-cli.rb, line 41 def configure_rest_client(proxy:) @proxy = proxy if proxy RestClient.proxy = @proxy if @proxy RestClient.log = STDOUT if @verbose end
endpoint()
click to toggle source
# File lib/flood-cli/flood-cli.rb, line 90 def endpoint @endpoint ||= (@config && @config[:endpoint]) || 'https://api.flood.io' @endpoint end
error(response)
click to toggle source
# File lib/flood-cli/flood-cli.rb, line 65 def error(response) "HTTP #{response.code.to_s} #{JSON.parse(response)['error']}" rescue JSON::ParserError "HTTP #{response.code.to_s} #{response}" end
get(url)
click to toggle source
# File lib/flood-cli/flood-cli.rb, line 47 def get(url) response = RestClient.get [endpoint, url].join('/'), headers_with_token parse(response) response rescue => e logger.fatal error(e.response) response end
headers()
click to toggle source
# File lib/flood-cli/flood-cli.rb, line 99 def headers if version == 1 { content_type: :json } else { content_type: :json, accept: 'application/vnd.flood.v2' } end end
headers_with_token()
click to toggle source
# File lib/flood-cli/flood-cli.rb, line 112 def headers_with_token headers.merge(authorization: token) end
load_configuration(config:)
click to toggle source
# File lib/flood-cli/flood-cli.rb, line 33 def load_configuration(config:) config ||= "#{Dir.home}/.fio" if File.file?(config) @config_file = config @config = YAML::load_file(config) end end
logger()
click to toggle source
# File lib/flood-cli/flood-cli.rb, line 116 def logger @log ||= Logger.new(STDOUT) @log.level = @verbose ? Logger::DEBUG : Logger::INFO @log.formatter = proc do |severity, datetime, progname, msg| "#{datetime}: #{msg}\n" end @log end
parse(response)
click to toggle source
# File lib/flood-cli/flood-cli.rb, line 71 def parse(response) if response.code == 200 if @verbose logger.ap JSON.parse(response) else puts JSON.pretty_unparse(JSON.parse(response)) end end end
post(url, params={})
click to toggle source
# File lib/flood-cli/flood-cli.rb, line 56 def post(url, params={}) response = RestClient.post [endpoint, url].join('/'), params, headers parse(response) response rescue => e logger.fatal error(e.response) response end
token()
click to toggle source
# File lib/flood-cli/flood-cli.rb, line 81 def token raw_token = @config && @config[:token] if version == 1 'Basic ' + Base64.encode64("#{raw_token}:").chomp else raw_token end end
version()
click to toggle source
# File lib/flood-cli/flood-cli.rb, line 95 def version (@config && @config[:version].to_i) || 2 end