Class: Kennel::Importer

Inherits:
Object
  • Object
show all
Defined in:
lib/kennel/importer.rb

Constant Summary collapse

SORT_ORDER =
[:title, :name, :board_title, :id, :kennel_id, :query, :message, :description, :template_variables].freeze

Instance Method Summary collapse

Constructor Details

#initialize(api) ⇒ Importer

Returns a new instance of Importer.



7
8
9
# File 'lib/kennel/importer.rb', line 7

def initialize(api)
  @api = api
end

Instance Method Details

#import(resource, id) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/kennel/importer.rb', line 11

def import(resource, id)
  model =
    begin
      Kennel::Models.const_get(resource.capitalize)
    rescue NameError
      raise ArgumentError, "#{resource} is not supported"
    end

  data = @api.show(model.api_resource, id)
  data = data[resource.to_sym] || data
  model.normalize({}, data)
  data[:id] = id
  data[:kennel_id] = "pick_something_descriptive"

  # flatten monitor options so they are all on the base
  if resource == "monitor"
    data.merge!(data.delete(:options))
    data.merge!(data.delete(:thresholds) || {})
    data = data.slice(*model.instance_methods)
  end

  <<~RUBY
    #{model.name}.new(
      self,
      #{pretty_print(data).lstrip}
    )
  RUBY
end