redphone 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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