Class: Copperegg::Alerts::Schedule

Inherits:
Object
  • Object
show all
Defined in:
lib/copperegg/alerts/schedule.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeSchedule

Returns a new instance of Schedule.



9
10
11
12
# File 'lib/copperegg/alerts/schedule.rb', line 9

def initialize
  @client = Copperegg::Alerts::Client.instance
  @schedules = @client.get('alerts/schedules.json')
end

Instance Attribute Details

#schedulesObject (readonly)

Returns the value of attribute schedules.



7
8
9
# File 'lib/copperegg/alerts/schedule.rb', line 7

def schedules
  @schedules
end

Instance Method Details

#add(name, *args) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
# File 'lib/copperegg/alerts/schedule.rb', line 36

def add(name, *args)
  defaults = {
    'name' => name,
    'state' => 'enabled',
    'duration' => 10,
    'start_time' => Time.now.gmtime.strftime('%Y-%m-%dt%H:%M:%Sz')
  }
  args.each { |arg| defaults.deep_merge!(arg) }
  result = @client.post?('alerts/schedules.json', defaults)
  @schedules << result.parsed_response if result
end

#create(name, tags = {}) ⇒ Object



14
15
16
17
# File 'lib/copperegg/alerts/schedule.rb', line 14

def create(name, tags = {})
  delete(name)
  add(name, tags)
end

#delete(name) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
# File 'lib/copperegg/alerts/schedule.rb', line 48

def delete(name)
  selected_schedules = @schedules.select { |h| h['name'] == name }
  if selected_schedules
    @schedules -= selected_schedules
    selected_schedules.each do |s|
      if @client.delete?("alerts/schedules/#{s['id']}.json").nil?
        @schedules << s
      end
    end
  end
end

#update(name, *args) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/copperegg/alerts/schedule.rb', line 19

def update(name, *args)
  body = {}
  args.each { |arg| body.deep_merge!(arg) }
  selected_schedules = @schedules.select { |h| h['name'] == name }
  if selected_schedules
    @schedules -= selected_schedules
    selected_schedules.each do |s|
      result = @client.put?("alerts/schedules/#{s['id']}.json", body)
      @schedules << if result.nil?
                      s
                    else
                      result
                    end
    end
  end
end