copperegg-alerts 0.0.2 → 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/README.md +18 -7
- data/lib/copperegg/alerts.rb +4 -55
- data/lib/copperegg/alerts/client.rb +63 -0
- data/lib/copperegg/alerts/schedule.rb +64 -0
- data/lib/copperegg/alerts/version.rb +5 -0
- metadata +20 -6
- data/lib/copperegg.rb +0 -5
- data/lib/copperegg/client.rb +0 -48
- data/lib/copperegg/version.rb +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 60f86c02f2b84845f8148475383e391f6fcc7147
|
4
|
+
data.tar.gz: 3d4c3e906ac7cc21ab85fa8c6fcf978be49453a9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7051e964d2989bde9eeae23cd63316c93637f209ae64af32de0a6922ce31672c6933e40dc95ba161e5cf1a6a86d259020252aa74c9e74bad745a0ebd9cc5a7f5
|
7
|
+
data.tar.gz: 5c4402cfa23c097a1876ca0b89e147f2d4dce0a65991dcec3c73678bd78f6d85583f23fad7327f23433bf08ca76b45a1ca62d21b6949f9f6c9996df01a764e61
|
data/README.md
CHANGED
@@ -1,32 +1,43 @@
|
|
1
|
-
|
1
|
+
Copperegg::Alerts [](https://travis-ci.org/cargomedia/copperegg-alerts)
|
2
|
+
=================
|
2
3
|
|
3
4
|
Minimalistic API client to manipulate [Copperegg's alert schedules](http://dev.copperegg.com/alerts/schedules.html) aka Maintenance Mode
|
4
5
|
|
5
|
-
|
6
|
+
Installation
|
7
|
+
------------
|
6
8
|
|
7
9
|
Add this line to your application's Gemfile:
|
8
10
|
|
9
11
|
gem 'copperegg-alerts'
|
10
12
|
|
11
|
-
|
13
|
+
Usage
|
14
|
+
-----
|
15
|
+
see [http://dev.copperegg.com/alerts/schedules.html](http://dev.copperegg.com/alerts/schedules.html) for verbs and arguments
|
16
|
+
|
12
17
|
|
13
18
|
require 'copperegg'
|
14
19
|
|
15
20
|
# Set up client
|
16
21
|
|
17
|
-
Copperegg::Client.instance.auth_setup(API_KEY)
|
18
|
-
|
22
|
+
Copperegg::Alerts::Client.instance.auth_setup(API_KEY)
|
23
|
+
schedule = Copperegg::Alerts::Schedule.new
|
19
24
|
|
20
25
|
# Create a new alert schedule (maintenance mode)
|
21
26
|
#
|
22
27
|
# Arguments:
|
23
28
|
# title - A name for the alert schedule
|
24
29
|
# [<arg1>[..<argN>] - Any argument from 'The Alert Schedule Hash'
|
25
|
-
# see http://dev.copperegg.com/alerts/schedules.html
|
30
|
+
# see http://dev.copperegg.com/alerts/schedules.html for verbs and arguments
|
26
31
|
|
27
|
-
|
32
|
+
schedule.create('spec_test',
|
28
33
|
'match' => {'tag' => ['foo', 'foo-bar']},
|
29
34
|
'state' => 'enabled',
|
30
35
|
'duration' => 7,
|
31
36
|
'start_time' => '2014-09-14T10:21:40Z'
|
32
37
|
)
|
38
|
+
|
39
|
+
schedule.update('spec_test',
|
40
|
+
'state' => 'disabled'
|
41
|
+
)
|
42
|
+
|
43
|
+
schedule.destroy('spec_test')
|
data/lib/copperegg/alerts.rb
CHANGED
@@ -1,59 +1,8 @@
|
|
1
|
-
require '
|
1
|
+
require 'copperegg/alerts/client'
|
2
|
+
require 'copperegg/alerts/schedule'
|
3
|
+
require 'copperegg/alerts/version'
|
2
4
|
|
3
5
|
module Copperegg
|
4
|
-
|
5
|
-
attr_reader :schedules
|
6
|
-
|
7
|
-
def initialize
|
8
|
-
@client = Copperegg::Client.instance
|
9
|
-
@schedules = @client.get('alerts/schedules.json')
|
10
|
-
end
|
11
|
-
|
12
|
-
def set_schedule(name, tags = {})
|
13
|
-
delete_schedules(name)
|
14
|
-
create_schedule(name, tags)
|
15
|
-
end
|
16
|
-
|
17
|
-
def modify_schedule(name, *args)
|
18
|
-
body = {}
|
19
|
-
args.each { |arg| body.deep_merge!(arg) }
|
20
|
-
selected_schedules = @schedules.select { |h| h['name'] == name }
|
21
|
-
if selected_schedules
|
22
|
-
@schedules -= selected_schedules
|
23
|
-
selected_schedules.each do |s|
|
24
|
-
result = @client.put?("alerts/schedules/#{s['id']}.json", body)
|
25
|
-
if result == nil
|
26
|
-
@schedules << s
|
27
|
-
else
|
28
|
-
@schedules << result
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
def create_schedule(name, *args)
|
35
|
-
defaults = {
|
36
|
-
'name' => name,
|
37
|
-
'state' => 'enabled',
|
38
|
-
'duration' => 10,
|
39
|
-
'start_time' => Time.now.gmtime.strftime('%Y-%m-%dt%H:%M:%Sz'),
|
40
|
-
}
|
41
|
-
args.each { |arg| defaults.deep_merge!(arg) }
|
42
|
-
if result = @client.post?('alerts/schedules.json', defaults)
|
43
|
-
@schedules << result.parsed_response
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
def delete_schedules(name)
|
48
|
-
selected_schedules = @schedules.select { |h| h['name'] == name }
|
49
|
-
if selected_schedules
|
50
|
-
@schedules -= selected_schedules
|
51
|
-
selected_schedules.each do |s|
|
52
|
-
if @client.delete?("alerts/schedules/#{s['id']}.json") == nil
|
53
|
-
@schedules << s
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
6
|
+
module Alerts
|
58
7
|
end
|
59
8
|
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'singleton'
|
2
|
+
require 'httparty'
|
3
|
+
require 'deep_merge'
|
4
|
+
|
5
|
+
module Copperegg
|
6
|
+
module Alerts
|
7
|
+
class Client
|
8
|
+
include Singleton
|
9
|
+
|
10
|
+
attr_reader :api_base_uri
|
11
|
+
|
12
|
+
def initialize
|
13
|
+
@api_base_uri = 'https://api.copperegg.com/v2/'
|
14
|
+
end
|
15
|
+
|
16
|
+
def auth_setup(api_key)
|
17
|
+
@auth = {:basic_auth => {:username => api_key, :password => 'U'}}
|
18
|
+
return self
|
19
|
+
end
|
20
|
+
|
21
|
+
JSON = {'content-type' => 'application/json'}
|
22
|
+
|
23
|
+
def method_missing(method, resource, *args)
|
24
|
+
if method.to_s =~ /\?$/
|
25
|
+
method = method.to_s.sub!(/\?$/, '')
|
26
|
+
result = self.send(method.to_sym, resource, *args)
|
27
|
+
return result if result.code == 200
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def get(path)
|
32
|
+
_send(:get, path)
|
33
|
+
end
|
34
|
+
|
35
|
+
def post(path, body)
|
36
|
+
_send(:post, path, body)
|
37
|
+
end
|
38
|
+
|
39
|
+
def put(path, body)
|
40
|
+
_send(:put, path, body)
|
41
|
+
end
|
42
|
+
|
43
|
+
def delete(path)
|
44
|
+
_send(:delete, path)
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def _send(method, path, body = {})
|
50
|
+
auth = @auth.clone
|
51
|
+
unless body.empty?
|
52
|
+
auth.merge!({:headers => JSON}.merge!({:body => body.to_json}))
|
53
|
+
end
|
54
|
+
response = HTTParty.send(method.to_sym, @api_base_uri + path, auth.to_hash)
|
55
|
+
if response.code != 200
|
56
|
+
raise("HTTP/#{method} Request failed. Response code `#{response.code}`, message `#{response.message}`, body `#{response.body}`")
|
57
|
+
end
|
58
|
+
response
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'deep_merge'
|
2
|
+
require 'copperegg/alerts'
|
3
|
+
|
4
|
+
|
5
|
+
module Copperegg
|
6
|
+
module Alerts
|
7
|
+
class Schedule
|
8
|
+
attr_reader :schedules
|
9
|
+
|
10
|
+
def initialize
|
11
|
+
@client = Copperegg::Alerts::Client.instance
|
12
|
+
@schedules = @client.get('alerts/schedules.json')
|
13
|
+
end
|
14
|
+
|
15
|
+
def create(name, tags = {})
|
16
|
+
delete(name)
|
17
|
+
add(name, tags)
|
18
|
+
end
|
19
|
+
|
20
|
+
def update(name, *args)
|
21
|
+
body = {}
|
22
|
+
args.each { |arg| body.deep_merge!(arg) }
|
23
|
+
selected_schedules = @schedules.select { |h| h['name'] == name }
|
24
|
+
if selected_schedules
|
25
|
+
@schedules -= selected_schedules
|
26
|
+
selected_schedules.each do |s|
|
27
|
+
result = @client.put?("alerts/schedules/#{s['id']}.json", body)
|
28
|
+
if result == nil
|
29
|
+
@schedules << s
|
30
|
+
else
|
31
|
+
@schedules << result
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def add(name, *args)
|
38
|
+
defaults = {
|
39
|
+
'name' => name,
|
40
|
+
'state' => 'enabled',
|
41
|
+
'duration' => 10,
|
42
|
+
'start_time' => Time.now.gmtime.strftime('%Y-%m-%dt%H:%M:%Sz'),
|
43
|
+
}
|
44
|
+
args.each { |arg| defaults.deep_merge!(arg) }
|
45
|
+
if result = @client.post?('alerts/schedules.json', defaults)
|
46
|
+
@schedules << result.parsed_response
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def delete(name)
|
51
|
+
selected_schedules = @schedules.select { |h| h['name'] == name }
|
52
|
+
if selected_schedules
|
53
|
+
@schedules -= selected_schedules
|
54
|
+
selected_schedules.each do |s|
|
55
|
+
if @client.delete?("alerts/schedules/#{s['id']}.json") == nil
|
56
|
+
@schedules << s
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: copperegg-alerts
|
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
|
- Cargo Media
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-03-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: httparty
|
@@ -95,6 +95,20 @@ dependencies:
|
|
95
95
|
- - "~>"
|
96
96
|
- !ruby/object:Gem::Version
|
97
97
|
version: 1.18.0
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
name: safe_yaml
|
100
|
+
requirement: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - "~>"
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: 1.0.4
|
105
|
+
type: :development
|
106
|
+
prerelease: false
|
107
|
+
version_requirements: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - "~>"
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: 1.0.4
|
98
112
|
- !ruby/object:Gem::Dependency
|
99
113
|
name: vcr
|
100
114
|
requirement: !ruby/object:Gem::Requirement
|
@@ -131,10 +145,10 @@ extra_rdoc_files: []
|
|
131
145
|
files:
|
132
146
|
- LICENSE
|
133
147
|
- README.md
|
134
|
-
- lib/copperegg.rb
|
135
148
|
- lib/copperegg/alerts.rb
|
136
|
-
- lib/copperegg/client.rb
|
137
|
-
- lib/copperegg/
|
149
|
+
- lib/copperegg/alerts/client.rb
|
150
|
+
- lib/copperegg/alerts/schedule.rb
|
151
|
+
- lib/copperegg/alerts/version.rb
|
138
152
|
homepage: https://github.com/cargomedia/copperegg-alerts
|
139
153
|
licenses:
|
140
154
|
- MIT
|
@@ -155,7 +169,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
155
169
|
version: '0'
|
156
170
|
requirements: []
|
157
171
|
rubyforge_project:
|
158
|
-
rubygems_version: 2.4.
|
172
|
+
rubygems_version: 2.4.6
|
159
173
|
signing_key:
|
160
174
|
specification_version: 4
|
161
175
|
summary: A very minimalistic Copperegg API client for managing alert schedules
|
data/lib/copperegg.rb
DELETED
data/lib/copperegg/client.rb
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
require 'singleton'
|
2
|
-
require 'httparty'
|
3
|
-
require 'deep_merge'
|
4
|
-
|
5
|
-
module Copperegg
|
6
|
-
class Client
|
7
|
-
include Singleton
|
8
|
-
|
9
|
-
attr_reader :api_base_uri
|
10
|
-
|
11
|
-
def initialize
|
12
|
-
@api_base_uri = 'https://api.copperegg.com/v2/'
|
13
|
-
end
|
14
|
-
|
15
|
-
def auth_setup(api_key)
|
16
|
-
@auth = {:basic_auth => {:username => api_key, :password => 'U'}}
|
17
|
-
return self
|
18
|
-
end
|
19
|
-
|
20
|
-
def get(resource, *args)
|
21
|
-
HTTParty.get(@api_base_uri + resource, @auth.to_hash)
|
22
|
-
end
|
23
|
-
|
24
|
-
JSON = {'content-type' => 'application/json'}
|
25
|
-
|
26
|
-
def method_missing(method, resource, *args)
|
27
|
-
if method.to_s =~ /\?$/
|
28
|
-
method = method.to_s.sub!(/\?$/, '')
|
29
|
-
result = self.send(method.to_sym, resource, *args)
|
30
|
-
return result if result.code == 200
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
['post', 'put'].each do |method|
|
35
|
-
define_method(method) do |resource, *args|
|
36
|
-
body = {}
|
37
|
-
args.each { |arg| body.deep_merge!(arg) }
|
38
|
-
HTTParty.send(method.to_sym, @api_base_uri + resource, @auth.merge({:headers => JSON}.merge({:body => body.to_json})))
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
def delete(resource, *args)
|
43
|
-
HTTParty.delete(@api_base_uri + resource, @auth.to_hash)
|
44
|
-
end
|
45
|
-
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
data/lib/copperegg/version.rb
DELETED