Module: Puddle

Defined in:
lib/puddle.rb,
lib/puddle/version.rb,
lib/puddle/cli/main.rb,
lib/puddle/resources.rb,
lib/puddle/cli/base_cli.rb,
lib/puddle/http_adapter.rb,
lib/puddle/resources/show_account.rb

Defined Under Namespace

Modules: Cli, Resources Classes: HttpAdapter

Constant Summary collapse

VERSION =
"0.2.2"

Class Method Summary collapse

Class Method Details

.create_adapter(token, settings = {}) ⇒ Object



15
16
17
18
# File 'lib/puddle.rb', line 15

def create_adapter(token, settings = {})
  class_constant = settings['http_adapter_class'] || HttpAdapter
  class_constant.new(token, settings)
end

.digital_ocean(name, settings = {}) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/puddle.rb', line 26

def digital_ocean(name, settings = {})
  results = {}
  begin
    token    = validate_token(settings)
    adapter  = create_adapter(token, settings)
    resource = load_resource(name).new(adapter, settings)
    results[:content] = resource.execute
  rescue Exception => e
    results[:error] = e
  end

  return results
end

.load_resource(name) ⇒ Object



20
21
22
23
24
# File 'lib/puddle.rb', line 20

def load_resource(name)
  class_name  = name.to_s.split(/_/).map{|word| word.capitalize}.join('')

  Puddle::Resources.const_get(class_name)
end

.validate_token(settings = {}) ⇒ Object



9
10
11
12
13
# File 'lib/puddle.rb', line 9

def validate_token(settings = {})
  token = settings['token'] || ENV['DO_API_TOKEN']
  fail 'api token is required but missing' unless token
  token
end