Class: RunscopeStatuspage::StatuspageAPI

Inherits:
Object
  • Object
show all
Includes:
HTTParty
Defined in:
lib/runscope_statuspage/statuspage_api.rb

Instance Method Summary collapse

Constructor Details

#initialize(token) ⇒ StatuspageAPI

Set credentials



11
12
13
# File 'lib/runscope_statuspage/statuspage_api.rb', line 11

def initialize(token)
  @options = { headers: {"Authorization" => "OAuth #{token}"} }
end

Instance Method Details

#clear_metric_data(page_id, metric_id) ⇒ Object

Delete all data for a custom page metric

Raises:



40
41
42
43
44
45
# File 'lib/runscope_statuspage/statuspage_api.rb', line 40

def clear_metric_data(page_id, metric_id)
  reply = self.class.delete("/pages/#{page_id}/metrics/#{metric_id}/data.json", @options)

  raise StatuspageAPIException.new,
        "Could not delete all data for #{page_id}/#{metric_id}: #{reply}" if reply.key?('error')
end

#create_realtime_incident(page, name, msg, status, twitter) ⇒ Object

Create incident

Raises:



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/runscope_statuspage/statuspage_api.rb', line 16

def create_realtime_incident(page, name, msg, status, twitter)
  incident = self.class.post("/pages/#{page}/incidents.json", @options.merge!(body: {"incident" => {
                                                                            "name" => name,
                                                                            "message" => msg,
                                                                            "status" => status.nil? ? 'investigating' : status,
                                                                            "wants_twitter_update" => twitter
  }}))

  raise StatuspageAPIException.new,
        "Could not create incident: #{incident}" if incident.key?('error')
end

#push_metric_data(page_id, metric_id, data, timestamp) ⇒ Object

Publish data for a custom page metric

Raises:



29
30
31
32
33
34
35
36
37
# File 'lib/runscope_statuspage/statuspage_api.rb', line 29

def push_metric_data(page_id, metric_id, data, timestamp)
  reply = self.class.post("/pages/#{page_id}/metrics/#{metric_id}/data.json", @options.merge!(body: {"data" => {
                                                                                               "value" => data,
                                                                                               "timestamp" => timestamp
  }}))

  raise StatuspageAPIException.new,
        "Could not push to #{page_id}/#{metric_id}: #{reply}" if reply.key?('error')
end