redphone 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.gitignore CHANGED
@@ -2,4 +2,4 @@
2
2
  .bundle
3
3
  Gemfile.lock
4
4
  pkg/*
5
- pagerduty_service_key.txt
5
+ *.txt
@@ -0,0 +1,18 @@
1
+ * Redphone, the monitoring service ruby library
2
+ - Pagerduty support (integration, incidents)
3
+ * Getting started
4
+ : gem install redphone
5
+ * Examples
6
+ ** Pagerduty
7
+ : pagerduty = Redphone::Pagerduty.new(:service_key => SERVICE_KEY)
8
+ Trigger an incident
9
+ : pagerduty.trigger_incident(:description => "Testing Redphone Rubygem.", :incident_key => "redphone/test")
10
+ Resolve an incident
11
+ : pagerduty.resolve_incident(:incident_key => "redphone/test")
12
+ List/query current and past incidents
13
+ : incidents = Redphone::Pagerduty.incidents(
14
+ : :subdomain => SUBDOMAIN,
15
+ : :user => USER,
16
+ : :password => PASSWORD,
17
+ : :incident_key => "redphone/test"
18
+ : )
@@ -2,11 +2,14 @@ require "rubygems" if RUBY_VERSION < "1.9.0"
2
2
  require "net/http"
3
3
  require "uri"
4
4
  require "json"
5
+ require "cgi"
5
6
 
6
7
  def http_request(options={})
7
- raise "Missing URI" if options[:uri].nil?
8
+ raise "You must supply a URI" if options[:uri].nil?
8
9
  method = options[:method] || "get"
9
10
  uri = URI.parse(options[:uri])
11
+ user = options[:user]
12
+ password = options[:password]
10
13
  body = options[:body] || nil
11
14
  http = Net::HTTP.new(uri.host, uri.port)
12
15
  if options[:ssl] == true
@@ -25,6 +28,9 @@ def http_request(options={})
25
28
  else
26
29
  raise "Unknown HTTP method: #{method}"
27
30
  end
31
+ if user && password
32
+ request.basic_auth user, password
33
+ end
28
34
  request.body = body
29
35
  http.request(request)
30
36
  end
@@ -28,5 +28,21 @@ module Redphone
28
28
  request_body = options.merge!({:event_type => "resolve"})
29
29
  integration_api(request_body)
30
30
  end
31
+
32
+ def self.incidents(options={})
33
+ raise "You must supply a subdomain" if options[:subdomain].nil?
34
+ raise "You must supply a user" if options[:user].nil?
35
+ raise "You must supply a password" if options[:password].nil?
36
+ params_hash = options.reject { |key, value| [:subdomain, :user, :password].include?(key) }
37
+ params = params_hash.map { |key, value| "#{key}=#{CGI.escape(value)}"}.join("&")
38
+ response = http_request(
39
+ :method => "get",
40
+ :user => options[:user],
41
+ :password => options[:password],
42
+ :ssl => true,
43
+ :uri => "https://#{options[:subdomain]}.pagerduty.com/api/v1/incidents?#{params}"
44
+ )
45
+ response.body
46
+ end
31
47
  end
32
48
  end
@@ -1,3 +1,3 @@
1
1
  module Redphone
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -5,6 +5,8 @@ require 'minitest/autorun'
5
5
  require 'redphone/pagerduty'
6
6
 
7
7
  SERVICE_KEY = File.open("pagerduty_service_key.txt", "rb").read.gsub("\n", "")
8
+ credentials = File.open("pagerduty_credentials.txt", "rb").read.split("\n")
9
+ SUBDOMAIN, USER, PASSWORD = credentials.each { |row| row }
8
10
 
9
11
  class TestRedphonePagerduty < MiniTest::Unit::TestCase
10
12
  i_suck_and_my_tests_are_order_dependent!
@@ -24,4 +26,15 @@ class TestRedphonePagerduty < MiniTest::Unit::TestCase
24
26
  response = JSON.parse(resolve)
25
27
  assert_equal 'success', response['status']
26
28
  end
29
+
30
+ def test_incidents
31
+ incidents = Redphone::Pagerduty.incidents(
32
+ :subdomain => SUBDOMAIN,
33
+ :user => USER,
34
+ :password => PASSWORD,
35
+ :incident_key => "redphone/test"
36
+ )
37
+ response = JSON.parse(incidents)
38
+ assert response['total'] > 0
39
+ end
27
40
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redphone
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-10-08 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
16
- requirement: &70304409137140 !ruby/object:Gem::Requirement
16
+ requirement: &70117443283800 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70304409137140
24
+ version_requirements: *70117443283800
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &70304409136720 !ruby/object:Gem::Requirement
27
+ requirement: &70117443283340 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70304409136720
35
+ version_requirements: *70117443283340
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: minitest
38
- requirement: &70304409136220 !ruby/object:Gem::Requirement
38
+ requirement: &70117443282820 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70304409136220
46
+ version_requirements: *70117443282820
47
47
  description: A rubygem for talking to monitoring service APIs
48
48
  email:
49
49
  - portertech@gmail.com
@@ -53,6 +53,7 @@ extra_rdoc_files: []
53
53
  files:
54
54
  - .gitignore
55
55
  - Gemfile
56
+ - README.org
56
57
  - Rakefile
57
58
  - lib/redphone.rb
58
59
  - lib/redphone/helpers.rb