mackerel-client 0.10.0 → 0.11.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: defff3c3d0b9980e41b4fc6d9cc38c89a28f0093617a3f9bc32b5dc02307b7c3
4
- data.tar.gz: 8d72678528c3f43c2c9772b7583fccc40abbe021afb67a89d14214f895542a40
3
+ metadata.gz: 68b096795c66861001227bf41e3cb6a7b940306dc404b555691a239031fd8fd6
4
+ data.tar.gz: e6516bd4b135f946b3198e5971fca264cfb3e66d8d35e695d5c49773252bb4b9
5
5
  SHA512:
6
- metadata.gz: '08d0ea5a016ae5cdda43fddfbf57fa9868f05fb42b1ab8cd0f3f630fd4b2eb80e94d19856b4746c215b26784e95e90fcca320fcae7a092b625534319c781f8a0'
7
- data.tar.gz: b2e3ca3de0d0e95dfc302a808d4648ed0ded2ebe2445980b4aa6f20007bcb359e6d8d0fcc372e403471892d9ae9481a2448e9ada6e97c8a2da3a3b600db0cd5d
6
+ metadata.gz: dd58f6dae6a96848018b4cdd5ba2686bb0ce96f4c521465f782dd45a016c6def438e90b7646a357bc5f93a5905f3e561bcf504124956205c54d9f03543495146
7
+ data.tar.gz: 1640a65f29e6641551769642cac689a3e7c1b9d497bb5ee0b33da1c6081c1083bed6c6dc4b225727f95c2ca4d74de6ea66bdf9eade658fb692c43fe6896ac3ee
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.11.0 (2021-03-24)
4
+
5
+ * Implements downtime API #61 (myoan)
6
+
3
7
  ## v0.10.0 (2021-03-15)
4
8
 
5
9
  ## Breaking change
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.10.0
1
+ 0.11.0
@@ -21,6 +21,7 @@ require 'mackerel/metric'
21
21
  require 'mackerel/metadata'
22
22
  require 'mackerel/notification_group'
23
23
  require 'mackerel/channel'
24
+ require 'mackerel/downtime'
24
25
 
25
26
  module Mackerel
26
27
  class Client
@@ -38,6 +39,7 @@ module Mackerel
38
39
  include Mackerel::REST::Metadata
39
40
  include Mackerel::REST::Channel
40
41
  include Mackerel::REST::NotificationGroup
42
+ include Mackerel::REST::Downtime
41
43
 
42
44
  def initialize(args = {})
43
45
  @origin = args[:mackerel_origin] || 'https://api.mackerelio.com'
@@ -0,0 +1,27 @@
1
+ module Mackerel
2
+ module REST
3
+ module Downtime
4
+ def post_downtime(downtime)
5
+ command = ApiCommand.new(:post, "/api/v0/downtimes", @api_key)
6
+ command.body = downtime.to_json
7
+ command.execute(client)
8
+ end
9
+
10
+ def get_downtimes()
11
+ command = ApiCommand.new(:get, "/api/v0/downtimes", @api_key)
12
+ command.execute(client)
13
+ end
14
+
15
+ def update_downtime(downtime_id, downtime)
16
+ command = ApiCommand.new(:put, "/api/v0/downtimes/#{downtime_id}", @api_key)
17
+ command.body = downtime.to_json
18
+ command.execute(client)
19
+ end
20
+
21
+ def delete_downtime(downtime_id)
22
+ command = ApiCommand.new(:delete, "/api/v0/downtimes/#{downtime_id}", @api_key)
23
+ command.execute(client)
24
+ end
25
+ end
26
+ end
27
+ end
@@ -1,3 +1,3 @@
1
1
  module Mackerel
2
- VERSION = "0.10.0"
2
+ VERSION = "0.11.0"
3
3
  end
@@ -0,0 +1,192 @@
1
+ RSpec.describe Mackerel::Client do
2
+ let(:api_key) { 'xxxxxxxx' }
3
+ let(:client) { Mackerel::Client.new(:mackerel_api_key => api_key) }
4
+
5
+ describe '#post_downtime' do
6
+ let(:stubbed_response) {
7
+ [
8
+ 200,
9
+ {},
10
+ JSON.dump(response_object)
11
+ ]
12
+ }
13
+
14
+ let(:test_client) {
15
+ Faraday.new do |builder|
16
+ builder.response :raise_error
17
+ builder.adapter :test do |stubs|
18
+ stubs.post(api_path) { stubbed_response }
19
+ end
20
+ end
21
+ }
22
+
23
+ let(:api_path) { '/api/v0/downtimes' }
24
+ let(:downtime_id) { 'abcxyz' }
25
+ let(:name) { 'HogeHoge' }
26
+ let(:start) { 1234567890 }
27
+ let(:duration) { 10 }
28
+
29
+ let(:response_object) {
30
+ {
31
+ 'id' => downtime_id,
32
+ 'name' => name,
33
+ 'start' => start,
34
+ 'duration' => duration
35
+ }
36
+ }
37
+
38
+ let(:downtime) {
39
+ {
40
+ 'name' => name,
41
+ 'start' => start,
42
+ 'duration' => duration
43
+ }
44
+ }
45
+
46
+ before do
47
+ allow(client).to receive(:http_client).and_return(test_client)
48
+ end
49
+
50
+ it "successfully post downtime" do
51
+ expect(client.post_downtime(downtime).to_h).to eq(response_object)
52
+ end
53
+ end
54
+
55
+ describe '#get_downtimes' do
56
+ let(:stubbed_response) {
57
+ [
58
+ 200,
59
+ {},
60
+ JSON.dump(response_object)
61
+ ]
62
+ }
63
+
64
+ let(:test_client) {
65
+ Faraday.new do |builder|
66
+ builder.response :raise_error
67
+ builder.adapter :test do |stubs|
68
+ stubs.get(api_path) { stubbed_response }
69
+ end
70
+ end
71
+ }
72
+
73
+ let(:api_path) { '/api/v0/downtimes' }
74
+ let(:downtime_id) { 'abcxyz' }
75
+ let(:name) { 'HogeHoge' }
76
+ let(:start) { 1234567890 }
77
+ let(:duration) { 10 }
78
+
79
+ let(:response_object) {
80
+ {
81
+ 'downtimes' => [
82
+ {
83
+ 'id' => downtime_id,
84
+ 'name' => name,
85
+ 'start' => start,
86
+ 'duration' => duration
87
+ }
88
+ ]
89
+ }
90
+ }
91
+
92
+ before do
93
+ allow(client).to receive(:http_client).and_return(test_client)
94
+ end
95
+
96
+ it "successfully get downtimes" do
97
+ expect(client.get_downtimes.to_h).to eq(response_object)
98
+ end
99
+ end
100
+
101
+ describe '#update_downtime' do
102
+ let(:stubbed_response) {
103
+ [
104
+ 200,
105
+ {},
106
+ JSON.dump(response_object)
107
+ ]
108
+ }
109
+
110
+ let(:test_client) {
111
+ Faraday.new do |builder|
112
+ builder.response :raise_error
113
+ builder.adapter :test do |stubs|
114
+ stubs.put(api_path) { stubbed_response }
115
+ end
116
+ end
117
+ }
118
+
119
+ let(:api_path) { "/api/v0/downtimes/#{downtime_id}" }
120
+ let(:downtime_id) { 'abcxyz' }
121
+ let(:name) { 'HogeHoge' }
122
+ let(:start) { 1234567890 }
123
+ let(:duration) { 10 }
124
+
125
+ let(:response_object) {
126
+ {
127
+ 'id' => downtime_id,
128
+ 'name' => name,
129
+ 'start' => start,
130
+ 'duration' => duration
131
+ }
132
+ }
133
+
134
+ let(:downtime) {
135
+ {
136
+ 'name' => name,
137
+ 'start' => start,
138
+ 'duration' => duration
139
+ }
140
+ }
141
+
142
+ before do
143
+ allow(client).to receive(:http_client).and_return(test_client)
144
+ end
145
+
146
+ it "successfully update downtime" do
147
+ expect(client.update_downtime(downtime_id, downtime).to_h).to eq(response_object)
148
+ end
149
+ end
150
+
151
+ describe '#delete_downtime' do
152
+ let(:stubbed_response) {
153
+ [
154
+ 200,
155
+ {},
156
+ JSON.dump(response_object)
157
+ ]
158
+ }
159
+
160
+ let(:test_client) {
161
+ Faraday.new do |builder|
162
+ builder.response :raise_error
163
+ builder.adapter :test do |stubs|
164
+ stubs.delete(api_path) { stubbed_response }
165
+ end
166
+ end
167
+ }
168
+
169
+ let(:api_path) { "/api/v0/downtimes/#{downtime_id}" }
170
+ let(:downtime_id) { 'abcxyz' }
171
+ let(:name) { 'HogeHoge' }
172
+ let(:start) { 1234567890 }
173
+ let(:duration) { 10 }
174
+
175
+ let(:response_object) {
176
+ {
177
+ 'id' => downtime_id,
178
+ 'name' => name,
179
+ 'start' => start,
180
+ 'duration' => duration
181
+ }
182
+ }
183
+
184
+ before do
185
+ allow(client).to receive(:http_client).and_return(test_client)
186
+ end
187
+
188
+ it "successfully delete downtime" do
189
+ expect(client.delete_downtime(downtime_id).to_h).to eq(response_object)
190
+ end
191
+ end
192
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mackerel-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mackerel developer team
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-15 00:00:00.000000000 Z
11
+ date: 2021-03-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -102,6 +102,7 @@ files:
102
102
  - lib/mackerel/client.rb
103
103
  - lib/mackerel/client/helper.rb
104
104
  - lib/mackerel/dashboard.rb
105
+ - lib/mackerel/downtime.rb
105
106
  - lib/mackerel/error.rb
106
107
  - lib/mackerel/host.rb
107
108
  - lib/mackerel/invitation.rb
@@ -123,6 +124,7 @@ files:
123
124
  - spec/mackerel/client/helper_spec.rb
124
125
  - spec/mackerel/client_spec.rb
125
126
  - spec/mackerel/dashboard_spec.rb
127
+ - spec/mackerel/downtime_spec.rb
126
128
  - spec/mackerel/invitation_spec.rb
127
129
  - spec/mackerel/metric_spec.rb
128
130
  - spec/mackerel/monitor_spec.rb
@@ -136,7 +138,7 @@ homepage: https://mackerel.io/
136
138
  licenses:
137
139
  - Apache 2
138
140
  metadata: {}
139
- post_install_message:
141
+ post_install_message:
140
142
  rdoc_options: []
141
143
  require_paths:
142
144
  - lib
@@ -151,8 +153,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
151
153
  - !ruby/object:Gem::Version
152
154
  version: '0'
153
155
  requirements: []
154
- rubygems_version: 3.2.10
155
- signing_key:
156
+ rubygems_version: 3.0.3
157
+ signing_key:
156
158
  specification_version: 4
157
159
  summary: Mackerel client implemented by Ruby.
158
160
  test_files:
@@ -163,6 +165,7 @@ test_files:
163
165
  - spec/mackerel/client/helper_spec.rb
164
166
  - spec/mackerel/client_spec.rb
165
167
  - spec/mackerel/dashboard_spec.rb
168
+ - spec/mackerel/downtime_spec.rb
166
169
  - spec/mackerel/invitation_spec.rb
167
170
  - spec/mackerel/metric_spec.rb
168
171
  - spec/mackerel/monitor_spec.rb