opsgenie-schedule 0.0.1 → 0.1.0
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.
- checksums.yaml +4 -4
- data/.rspec +1 -0
- data/Gemfile.lock +3 -7
- data/README.md +4 -4
- data/lib/opsgenie.rb +1 -0
- data/lib/opsgenie/rotation.rb +47 -0
- data/lib/opsgenie/schedule.rb +7 -6
- data/opsgenie-schedule.gemspec +1 -3
- metadata +3 -30
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fc6e0e949d909c453328c4ad695aebb4b4c05d6aefe60c71926112ed1376f18b
|
4
|
+
data.tar.gz: 7f5732c274402cea99e7be2c595c39bb0008894856aea5678609c471503c0ac8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e48d76aa2f7e2cbb6f1b27f33f9626c315ebfe5695acac88dedb39cb290ec96592039332999b41505e505ed2884e407b0993636d62a178d70b46e374684933f5
|
7
|
+
data.tar.gz: 672a690dd7a6f9713a1922df8f7f0227052137b29a1cbe7052dda7c2a3db047745bde455634905ab10642cc5516da41dc58e4f946f70e1a7e03bee1db58d1110
|
data/.rspec
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
opsgenie-schedule (0.0
|
4
|
+
opsgenie-schedule (0.1.0)
|
5
5
|
httparty (~> 0.17)
|
6
6
|
|
7
7
|
GEM
|
@@ -23,7 +23,7 @@ GEM
|
|
23
23
|
method_source (0.9.2)
|
24
24
|
mime-types (3.3)
|
25
25
|
mime-types-data (~> 3.2015)
|
26
|
-
mime-types-data (3.2019.
|
26
|
+
mime-types-data (3.2019.1009)
|
27
27
|
multi_xml (0.6.0)
|
28
28
|
parallel (1.17.0)
|
29
29
|
parser (2.6.4.1)
|
@@ -61,9 +61,7 @@ GEM
|
|
61
61
|
standard (0.1.4)
|
62
62
|
rubocop (~> 0.72.0)
|
63
63
|
rubocop-performance (~> 1.4.0)
|
64
|
-
timecop (0.9.1)
|
65
64
|
unicode-display_width (1.6.0)
|
66
|
-
vcr (5.0.0)
|
67
65
|
webmock (3.7.6)
|
68
66
|
addressable (>= 2.3.6)
|
69
67
|
crack (>= 0.3.2)
|
@@ -80,9 +78,7 @@ DEPENDENCIES
|
|
80
78
|
rake (~> 10.0)
|
81
79
|
rspec (~> 3.0)
|
82
80
|
standard (~> 0.1)
|
83
|
-
timecop (~> 0.9)
|
84
|
-
vcr (~> 5.0)
|
85
81
|
webmock (~> 3.5)
|
86
82
|
|
87
83
|
BUNDLED WITH
|
88
|
-
2.0.
|
84
|
+
2.0.2
|
data/README.md
CHANGED
@@ -29,9 +29,9 @@ $ gem install opsgenie-schedule
|
|
29
29
|
Require and initialize the gem like so:
|
30
30
|
|
31
31
|
```ruby
|
32
|
-
require 'opsgenie
|
32
|
+
require 'opsgenie'
|
33
33
|
|
34
|
-
Opsgenie
|
34
|
+
Opsgenie.configure(api_key: "YOUR_OPSGENIE_API_KEY")
|
35
35
|
```
|
36
36
|
|
37
37
|
And fetch a schedule by its name:
|
@@ -53,10 +53,10 @@ schedule.on_calls
|
|
53
53
|
#=> ["someone@example.com", "someone-else@example.com"]
|
54
54
|
```
|
55
55
|
|
56
|
-
Or a given date like so:
|
56
|
+
Or a given date time like so:
|
57
57
|
|
58
58
|
```ruby
|
59
|
-
date =
|
59
|
+
date = DateTime.parse("2019-01-01T10:00:00")
|
60
60
|
schedule.on_calls(date)
|
61
61
|
#=> ["someone@example.com", "someone-else@example.com"]
|
62
62
|
```
|
data/lib/opsgenie.rb
CHANGED
@@ -0,0 +1,47 @@
|
|
1
|
+
module Opsgenie
|
2
|
+
class Rotation
|
3
|
+
attr_reader :schedule,
|
4
|
+
:id,
|
5
|
+
:name,
|
6
|
+
:time_restriction,
|
7
|
+
:start_date,
|
8
|
+
:type,
|
9
|
+
:participants
|
10
|
+
|
11
|
+
def initialize(schedule, attrs)
|
12
|
+
@schedule = schedule
|
13
|
+
@id = attrs["id"]
|
14
|
+
@name = attrs["name"]
|
15
|
+
@time_restriction = attrs["timeRestriction"]
|
16
|
+
@start_date = DateTime.parse(attrs["startDate"])
|
17
|
+
@type = attrs["type"]
|
18
|
+
@participants = attrs["participants"]
|
19
|
+
end
|
20
|
+
|
21
|
+
def on_call_for_date(date)
|
22
|
+
day_of_the_week = date.strftime("%A").downcase
|
23
|
+
restriction = time_restriction["restrictions"].find { |r|
|
24
|
+
r["startDay"] == day_of_the_week
|
25
|
+
}
|
26
|
+
|
27
|
+
return unless restriction
|
28
|
+
|
29
|
+
time = Time.new(
|
30
|
+
date.year,
|
31
|
+
date.month,
|
32
|
+
date.day,
|
33
|
+
restriction["startHour"],
|
34
|
+
restriction["startMin"]
|
35
|
+
)
|
36
|
+
|
37
|
+
on_calls = schedule.on_calls((time + 60).to_datetime)
|
38
|
+
on_calls.select { |name| participant_usernames.include?(name) }
|
39
|
+
end
|
40
|
+
|
41
|
+
private
|
42
|
+
|
43
|
+
def participant_usernames
|
44
|
+
participants.map { |p| p["username"] }
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
data/lib/opsgenie/schedule.rb
CHANGED
@@ -2,11 +2,11 @@ require "date"
|
|
2
2
|
|
3
3
|
module Opsgenie
|
4
4
|
class Schedule
|
5
|
-
attr_reader :id, :name
|
5
|
+
attr_reader :id, :name, :rotations
|
6
6
|
|
7
7
|
class << self
|
8
8
|
def all
|
9
|
-
body = Opsgenie::Client.get("schedules")
|
9
|
+
body = Opsgenie::Client.get("schedules?expand=rotation")
|
10
10
|
body["data"].map { |s| new(s) }
|
11
11
|
end
|
12
12
|
|
@@ -20,18 +20,19 @@ module Opsgenie
|
|
20
20
|
|
21
21
|
def find(id_or_name, type = "id")
|
22
22
|
body = Opsgenie::Client.get("schedules/#{id_or_name}?identifierType=#{type}")
|
23
|
-
new(body["data"])
|
23
|
+
new(body["data"]) unless body["data"].nil?
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
27
|
def initialize(attrs)
|
28
28
|
@id = attrs["id"]
|
29
29
|
@name = attrs["name"]
|
30
|
+
@rotations = attrs["rotations"].map { |r| Rotation.new(self, r) }
|
30
31
|
end
|
31
32
|
|
32
|
-
def on_calls(
|
33
|
-
|
34
|
-
endpoint
|
33
|
+
def on_calls(datetime = nil)
|
34
|
+
endpoint = "schedules/#{id}/on-calls"
|
35
|
+
endpoint += "?date=#{CGI.escape datetime.to_s}" unless datetime.nil?
|
35
36
|
body = Opsgenie::Client.get(endpoint)
|
36
37
|
get_participants(body).map { |u| u["name"] }
|
37
38
|
end
|
data/opsgenie-schedule.gemspec
CHANGED
@@ -3,7 +3,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |spec|
|
5
5
|
spec.name = "opsgenie-schedule"
|
6
|
-
spec.version = "0.0
|
6
|
+
spec.version = "0.1.0"
|
7
7
|
spec.authors = ["Stuart Harrison"]
|
8
8
|
spec.email = ["stuart@dxw.com"]
|
9
9
|
|
@@ -25,8 +25,6 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.add_development_dependency "rake", "~> 10.0"
|
26
26
|
spec.add_development_dependency "rspec", "~> 3.0"
|
27
27
|
spec.add_development_dependency "standard", "~> 0.1"
|
28
|
-
spec.add_development_dependency "timecop", "~> 0.9"
|
29
|
-
spec.add_development_dependency "vcr", "~> 5.0"
|
30
28
|
spec.add_development_dependency "webmock", "~> 3.5"
|
31
29
|
spec.add_development_dependency "dotenv", "~> 2.7"
|
32
30
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opsgenie-schedule
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stuart Harrison
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-02-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -80,34 +80,6 @@ dependencies:
|
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0.1'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: timecop
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - "~>"
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0.9'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - "~>"
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0.9'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: vcr
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - "~>"
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '5.0'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - "~>"
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '5.0'
|
111
83
|
- !ruby/object:Gem::Dependency
|
112
84
|
name: webmock
|
113
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -171,6 +143,7 @@ files:
|
|
171
143
|
- lib/opsgenie.rb
|
172
144
|
- lib/opsgenie/client.rb
|
173
145
|
- lib/opsgenie/config.rb
|
146
|
+
- lib/opsgenie/rotation.rb
|
174
147
|
- lib/opsgenie/schedule.rb
|
175
148
|
- opsgenie-schedule.gemspec
|
176
149
|
homepage: https://github.com/dxw/opsgenie-schedule
|