Module: Xcal::Parktronic::Routes::Alarms

Included in:
Xcal::Parktronic::Routes
Defined in:
lib/xcal/parktronic/routes/alarms.rb

Instance Method Summary collapse

Instance Method Details

#get_alarm(id) ⇒ Object Also known as: alarm

Fetches alarm with specific ID

Parameters

  • id alarm ID

Examples

api.get_alarm(2)


36
37
38
39
40
41
# File 'lib/xcal/parktronic/routes/alarms.rb', line 36

def get_alarm(id)
  response = get_response("/#{api_version}/alarms/#{id}?access_token=#{access_token}")

  generic_response = Xcal::Parktronic::GenericResponse.new(response.body)
  response.code == '200' ? Xcal::Parktronic::GenericResponse.new(generic_response.alarm, self) : generic_response
end

#get_paged_alarms(args = {}) ⇒ Object Also known as: alarms

Fetches latest alarms

Parameters

  • page page number, defaults to 1

  • per_page per page value, defaults to 100

Examples

api.get_paged_alarms
api.get_paged_alarms(page: 2, per_page: 5)
api.alarms
api.alarms(page: 2, per_page: 5)


18
19
20
21
22
23
24
25
26
# File 'lib/xcal/parktronic/routes/alarms.rb', line 18

def get_paged_alarms(args = {})
  args.merge!(:access_token => access_token)
  response = get_response("/#{api_version}/alarms?#{URI.encode_www_form(args)}")

  generic_response = Xcal::Parktronic::GenericResponse.new(response.body)

  response.code == '200' && generic_response.has_key?(:alarms) ?
    generic_response.alarms.map { |alarm| Xcal::Parktronic::GenericResponse.new(alarm.alarm, self) } : generic_response
end

#post_alarm(args = {}) ⇒ Object

Posts new alarm

Parameters

  • alarm hash of Alarm data.

  • events array of Events or leave blank for creating alarm without events.

Examples

# Creates only Alarm, without Events
api.post_alarm(alarm: {name: 'alarm name', originating_system: 'Source System', impact_level: 'low'})
# Creates Alarm with Events
alarm_params    = {name: 'alarm name', originating_system: 'Source System', impact_level: 'low'}
event_1_params  = {subject: 'EventSubj', description: 'EventDesc', host_impacted: 'host', initiated_at: '2013-11-22T01:00:24Z', service_impacted: 'EventSvc', incident_status: 'CRITICAL'}
api.post_alarm( alarm: alarm_params, events: [event_1_params, event_2_params, ...] )


58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/xcal/parktronic/routes/alarms.rb', line 58

def post_alarm(args = {})
  url_path  = args[:events].nil? ? 'alarms/create_without_events' : 'alarms'
  request   = Net::HTTP::Post.new("/#{api_version}/#{url_path}", 'Content-Type' => 'application/json')

  params    = { access_token: access_token, alarm: args[:alarm] }
  params.merge!(events: args[:events]) unless args[:events].nil?

  request.body = params.to_json
  response = http.start { |net| net.request(request) }

  Xcal::Parktronic::GenericResponse.new(response.body)
end

#update_alarm(id, params) ⇒ Object

Update alarm with specific ID

Parameters

  • id alarm ID

  • params alarm params

Examples

api.update_alarm(2, name: 'new name')
api.update_alarm(5, name: 'new name', originating_system: 'new system', description: 'test')


80
81
82
83
84
85
86
# File 'lib/xcal/parktronic/routes/alarms.rb', line 80

def update_alarm(id, params)
  request = Net::HTTP::Patch.new("/#{api_version}/alarms/#{id}", 'Content-Type' => 'application/json')
  request.body = { access_token: access_token, alarm: params }.to_json

  response = http.start { |net| net.request(request) }
  Xcal::Parktronic::GenericResponse.new(response.body)
end