cachet_api 1.0.0.pre

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a74ffacc97cfc8f3d53ef2560b16c6b62e924a3c
4
+ data.tar.gz: ab77ea80501284d0a11187a6d1f156f936e39d80
5
+ SHA512:
6
+ metadata.gz: cf05a911ec86ebf13a5d6555d61d99054e2fe494ff2e49dff70f4d089840271c7cee2fbc2b6497504447e3aacfb36003876cd2c64e77c75ef17114ab210f8503
7
+ data.tar.gz: aeaddf3b0fb96c5c0c656a97f4f9acd6866391aecb6be15cc55be06022c2e306fae04ee931bfef1a16bd800fee816b7f6677e78c96d58fa64979262368368580
data/.gitignore ADDED
@@ -0,0 +1,10 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ /.idea/
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
data/.travis.yml ADDED
@@ -0,0 +1,13 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.3.0
4
+ - 2.2.4
5
+ - 2.2.3
6
+ - 2.1.8
7
+ - 2.1.2
8
+ script:
9
+ - bundle exec rake all
10
+ - bundle exec rake yard
11
+ addons:
12
+ code_climate:
13
+ repo_token: ddaffc1830a7f175bcca559e29619daee62aa145360e2dfbc9dd8e9ac5ce14fb
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 Levi Smith
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,94 @@
1
+ # Cachet API Library Wrapper
2
+ [![Travis CI](https://travis-ci.org/TheFynx/cachet_api.svg)](https://travis-ci.org/TheFynx/cachet_api) [![Code Climate](https://codeclimate.com/github/TheFynx/cachet_api/badges/gpa.svg)](https://codeclimate.com/github/TheFynx/cachet_api) [![Test Coverage](https://codeclimate.com/github/TheFynx/cachet_api/badges/coverage.svg)](https://codeclimate.com/github/TheFynx/cachet_api/coverage) [![Issue Count](https://codeclimate.com/github/TheFynx/cachet_api/badges/issue_count.svg)](https://codeclimate.com/github/TheFynx/cachet_api) [![Inline docs](http://inch-ci.org/github/thefynx/cachet_api.svg?branch=master)](http://inch-ci.org/github/thefynx/cachet_api)
3
+
4
+ Ruby library wrapper for [CachetHQ.io](https://cachethq.io)
5
+
6
+ ## Installation
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'cachet_api'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ ```
16
+ $ bundle
17
+ ```
18
+
19
+ Or install it yourself as:
20
+
21
+ ```
22
+ $ gem install cachet_api
23
+ ```
24
+
25
+ ## Usage
26
+
27
+ ```ruby
28
+ # Under your profile in Cachet, get your api_key from the API Token section. Base url is https://demo.cachethq.io/api/v1/ or https://cachet.yourdomain.com/api/v1/
29
+
30
+ CachetClient = CachetClient.new(api_key, base_url)
31
+ CachetComponents = CachetComponents.new(api_key, base_url)
32
+ CachetIncidents = CachetIncidents.new(api_key, base_url)
33
+ CachetMetrics = CachetMetrics.new(api_key, base_url)
34
+ CachetSubscribers = CachetSubscribers.new(api_key, base_url)
35
+ ```
36
+
37
+ View the last release API documentation at: [https://docs.cachethq.io/](https://docs.cachethq.io/)
38
+
39
+ ## Library to API Quick Reference
40
+ ### Ping
41
+
42
+ Cachet API | Ruby Library
43
+ :--------- | :----------------
44
+ get/ping | CachetClient.ping
45
+
46
+ ### Components
47
+
48
+ Cachet API | Ruby Library
49
+ :--------------------------- | :------------------------------
50
+ get/components | CachetComponents.list
51
+ get/components/:id | CachetComponents.list_id
52
+ post/components | CachetComponents.create
53
+ put/components/:id | CachetComponents.update
54
+ delete/components/:id | CachetComponents.delete
55
+ get/components/groups | CachetComponents.groups_list
56
+ get/components/groups/:id | CachetComponents.groups_list_id
57
+ post/components/groups | CachetComponents.groups_create
58
+ put/components/groups/:id | CachetComponents.groups_update
59
+ delete/components/groups/:id | CachetComponents.groups_delete
60
+
61
+ ### Incidents
62
+
63
+ Cachet API | Ruby Library
64
+ :------------------- | :----------------------
65
+ get/incidents | CachetIncidents.list
66
+ get/incidents/:id | CachetIncidents.list_id
67
+ post/incidents | CachetIncidents.create
68
+ put/incidents/:id | CachetIncidents.update
69
+ delete/incidents/:id | CachetIncidents.delete
70
+
71
+ ### Metrics
72
+
73
+ Cachet API | Ruby Library
74
+ :---------------------------------- | :-------------------------
75
+ get/metrics | CachetMetrics.list
76
+ post/metrics | CachetMetrics.create
77
+ get/metrics/:id | CachetMetrics.list_id
78
+ delete/metrics/:id | CachetMetrics.delete
79
+ get/metrics/:id/points | CachetMetrics.point_list
80
+ post/metrics/:id/points | CachetMetrics.point_add
81
+ delete/metrics/:id/points/:point_id | CachetMetrics.point_delete
82
+
83
+ ### Subscribers
84
+
85
+ Cachet API | Ruby Library
86
+ :--------------------- | :-----------------------
87
+ get/subscribers | CachetSubscribers.list
88
+ post/subscribers | CachetSubscribers.create
89
+ delete/subscribers/:id | CachetSubscribers.delete
90
+
91
+ ## Development
92
+ After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
93
+
94
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
data/Rakefile ADDED
@@ -0,0 +1,28 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rake/testtask'
3
+ require 'yard'
4
+ require 'rspec'
5
+ require 'rspec/core/rake_task'
6
+
7
+ Rake::TestTask.new do |t|
8
+ t.test_files = FileList['spec/*_spec.rb', 'lib/cachet.rb']
9
+ t.verbose = true
10
+ end
11
+
12
+ RSpec::Core::RakeTask.new(:spec) do |t|
13
+ t.pattern = Dir.glob('spec/*_spec.rb')
14
+ end
15
+
16
+ YARD::Rake::YardocTask.new do |t|
17
+ t.options = ['--markup-provider=redcarpet', '--markup=markdown']
18
+ end
19
+
20
+ desc 'Open an irb session preloaded with this library'
21
+ task :console do
22
+ sh 'irb -rubygems -I lib -r cachet.rb'
23
+ end
24
+
25
+ desc 'Common task'
26
+ task all: [:test, :spec]
27
+
28
+ task :default => :test
data/bin/console ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "lib/cachet"
5
+
6
+ require "irb"
7
+ IRB.start
@@ -0,0 +1,40 @@
1
+ lib = File.expand_path('../lib', __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require 'irb'
4
+ require 'cachet.rb'
5
+
6
+ module IRB
7
+ def self.start_session(binding)
8
+ IRB.setup(nil)
9
+
10
+ workspace = WorkSpace.new(binding)
11
+
12
+ if @CONF[:SCRIPT]
13
+ irb = Irb.new(workspace, @CONF[:SCRIPT])
14
+ else
15
+ irb = Irb.new(workspace)
16
+ end
17
+
18
+ @CONF[:IRB_RC].call(irb.context) if @CONF[:IRB_RC]
19
+ @CONF[:MAIN_CONTEXT] = irb.context
20
+
21
+ trap("SIGINT") do
22
+ irb.signal_handle
23
+ end
24
+
25
+ catch(:IRB_EXIT) do
26
+ irb.eval_input
27
+ end
28
+ end
29
+ end
30
+
31
+ # we want to manipulate this in IRB
32
+ CachetComponents = CachetComponents.new('9yMHsdioQosnyVK4iCVR', 'https://demo.cachethq.io/api/v1/')
33
+ CachetIncidents = CachetIncidents.new('9yMHsdioQosnyVK4iCVR', 'https://demo.cachethq.io/api/v1/')
34
+ CachetMetrics = CachetMetrics.new('9yMHsdioQosnyVK4iCVR', 'https://demo.cachethq.io/api/v1/')
35
+ options = {}
36
+ options['id'] = '1'
37
+ options['name'] = 'API'
38
+ options['status'] = '1'
39
+
40
+ IRB.start_session(Kernel.binding)
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,31 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'cachet/rb/version'
5
+ require 'rbconfig'
6
+
7
+ Gem::Specification.new do |spec|
8
+ spec.name = 'cachet_api'
9
+ spec.version = CachetClient::VERSION
10
+ spec.authors = ['TheFynx']
11
+ spec.email = ['levi@fynx.me']
12
+
13
+ spec.summary = 'Ruby library wrapper for Cachet API'
14
+ spec.description = 'Ruby library wrapper for CachetHQ.io - Beautiful & simple service statuses - The open source status page system, for everyone'
15
+ spec.homepage = 'https://github.com/TheFynx/cachet_api'
16
+
17
+ spec.license = "MIT"
18
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
19
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
20
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
21
+ spec.require_paths = ["lib"]
22
+
23
+ spec.add_development_dependency "codeclimate-test-reporter"
24
+ spec.add_development_dependency "rake"
25
+ spec.add_development_dependency "rspec"
26
+ spec.add_development_dependency "httparty"
27
+ spec.add_development_dependency "pry"
28
+ spec.add_dependency "rest-client"
29
+ spec.add_dependency "yard"
30
+ spec.add_dependency "redcarpet"
31
+ end
@@ -0,0 +1,7 @@
1
+ ##
2
+ # Sets Version
3
+ class CachetClient
4
+ ##
5
+ # Sets Version of gem
6
+ VERSION = '1.0.0.pre'
7
+ end
data/lib/cachet.rb ADDED
@@ -0,0 +1,432 @@
1
+ require 'rubygems' if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'ruby' && RUBY_VERSION < '2.0'
2
+ require 'cachet/rb/version'
3
+ require 'rest-client'
4
+ require 'uri'
5
+ require 'json'
6
+
7
+ ###
8
+ # Basic client to call to make calls into rest-client
9
+ #
10
+ class CachetClient
11
+ ##
12
+ # class to catch errors
13
+ class Error < StandardError; end
14
+
15
+ ##
16
+ # Constant to utilize for Component Status Operational
17
+ STATUS_OPERATIONAL = 1
18
+ ##
19
+ # Constant to utilize for Component Status Peformance Issues
20
+ STATUS_PERFORMANCE_ISSUES = 2
21
+ ##
22
+ # Constant to utilize for Component Status Partial Outage
23
+ STATUS_PARTIAL_OUTAGE = 3
24
+ ##
25
+ # Constant to utilize for Component Status Major Outage
26
+ STATUS_MAJOR_OUTAGE = 4
27
+
28
+ ##
29
+ # Constant to utilize for Incident Status Scheduled Incident/Maintainence
30
+ INCIDENT_SCHEDULED = 0
31
+ ##
32
+ # Constant to utilize for Incident Status Investigating
33
+ INCIDENT_INVESTIGATING = 1
34
+ ##
35
+ # Constant to utilize for Incident Status Identified
36
+ INCIDENT_IDENTIFIED = 3
37
+ ##
38
+ # Constant to utilize for Incident Status Watching
39
+ INCIDENT_WATCHING = 3
40
+ ##
41
+ # Constant to utilize for Incident Status Fixed
42
+ INCIDENT_FIXED = 4
43
+
44
+ ##
45
+ # Providing Demo api/url information if none provided
46
+ # @param api_key [string] :api_key Your cachet API Token/Key
47
+ # @param base_url [string] :base_url Your cachet base api url
48
+ # @return object
49
+
50
+ def initialize(api_key, base_url)
51
+ @api_key = api_key
52
+ @base_url = base_url
53
+ @headers = {
54
+ 'X-Cachet-Token' => @api_key,
55
+ 'Content-Type' => 'application/json'
56
+ }
57
+ end
58
+
59
+ ##
60
+ # Posts token, url, headers, and any payloads to rest-client all params are passed by methods
61
+ # @param api_key [string] :api_key Your cachet API Token/Key
62
+ # @param url [string] :url Your complete cachet api url, built by methods
63
+ # @param method [string] :method Get, Post, Put, and Delete
64
+ # @param payload [hash] :options Set of options provided by the Cachet methods
65
+ # @param headers [hash] :headers provides by initialize methods
66
+ # @return object
67
+
68
+ def request(params)
69
+ response = RestClient::Request.execute(params.merge(headers: @headers))
70
+ code = response.code
71
+
72
+ if response.code == 200
73
+ body = JSON.parse(response.body)
74
+ return body
75
+ elsif response.code == 204
76
+ return code
77
+ else
78
+ fail Net::HTTPError, response.inspect
79
+ end
80
+ end
81
+
82
+ ##
83
+ # Ping.
84
+ #
85
+ # @return object
86
+
87
+ def ping
88
+ request method: :get,
89
+ url: @base_url + 'ping'
90
+ end
91
+ end
92
+
93
+ ###
94
+ # Inherits CachetClient and handles all Components API Calls
95
+ #
96
+ class CachetComponents < CachetClient
97
+ ##
98
+ # List all Components.
99
+ #
100
+ # @return object
101
+
102
+ def list
103
+ request method: :get,
104
+ url: @base_url + 'components'
105
+ end
106
+
107
+ ##
108
+ # List Component by ID.
109
+ # @option options [string] :id Numeric component id
110
+ # @return object
111
+ # id
112
+
113
+ def list_id(options)
114
+ request method: :get,
115
+ url: @base_url + 'components/' + options['id']
116
+ end
117
+
118
+ ##
119
+ # Create Component.
120
+ #
121
+ # @option options [string] :name **Required** Component name
122
+ # @option options [int] :status **Required** Numeric status of the component; 1-4
123
+ # @option options [string] :description Description of the component
124
+ # @option options [string] :link A hyperlink to the component
125
+ # @option options [int] :order Numeric order of the component
126
+ # @option options [int] :group_id Numeric group id component is within
127
+ # @option options [boolean] :enabled True/False to enable/disable component
128
+ # @return object
129
+
130
+ def create(options)
131
+ request method: :post,
132
+ url: @base_url + 'components',
133
+ payload: options
134
+ end
135
+
136
+ ##
137
+ # Update Component.
138
+ #
139
+ # @option options [string] :id **Required** Numeric component id
140
+ # @option options [int] :status **Required** Numeric status of the component; 1-4
141
+ # @option options [string] :name **Required** Component name
142
+ # @option options [string] :link A hyperlink to the component
143
+ # @option options [int] :order Numeric order of the component
144
+ # @option options [int] :group_id Numeric group id component is within
145
+ # @option options [boolean] :enabled True/False to enable/disable component
146
+ # @return object
147
+
148
+ def update(options)
149
+ request method: :put,
150
+ url: @base_url + 'components/' + options['id'],
151
+ payload: options
152
+ end
153
+
154
+ ##
155
+ # Delete Component.
156
+ #
157
+ # @option options [string] :id **Required** Numeric component id
158
+ # @return object
159
+
160
+ def delete(options)
161
+ request method: :delete,
162
+ url: @base_url + 'components/' + options['id']
163
+ end
164
+
165
+ ##
166
+ # List all Component Groups.
167
+ #
168
+ # @return object
169
+
170
+ def groups_list
171
+ request method: :get,
172
+ url: @base_url + 'components/groups'
173
+ end
174
+
175
+ ##
176
+ # List Component Group by ID.
177
+ #
178
+ # @option options [string] :id **Required** Numeric component group id
179
+ # @return object
180
+
181
+ def groups_list_id(options)
182
+ request method: :get,
183
+ url: @base_url + 'components/groups/' + options['id']
184
+ end
185
+
186
+ ##
187
+ # Create Component Group.
188
+ #
189
+ # @option options [string] :name **Required** Component group name
190
+ # @option options [int] :order Numeric order of the component group
191
+ # @option options [boolean] :collapsed Whether to collapse the group by default
192
+ # @return object
193
+
194
+ def groups_create(options)
195
+ request method: :post,
196
+ url: @base_url + 'components/groups',
197
+ payload: options
198
+ end
199
+
200
+ ##
201
+ # Update Component Group.
202
+ #
203
+ # @option options [string] :id **Required** Numeric component group id
204
+ # @option options [string] :name Component group name
205
+ # @option options [int] :order Numeric order of the component group
206
+ # @option options [boolean] :collapsed Whether to collapse the group by default
207
+ # @return object
208
+
209
+ def groups_update(options)
210
+ request method: :put,
211
+ url: @base_url + 'components/groups',
212
+ payload: options
213
+ end
214
+
215
+ ##
216
+ # Delete Component Group.
217
+ #
218
+ # @option options [string] :id **Required** Numeric component group id
219
+ # @return object
220
+
221
+ def groups_delete(options)
222
+ options['id'].each_pair do |_k, v|
223
+ options['id'] = v.to_s
224
+ end
225
+ request method: :delete,
226
+ url: @base_url + 'components/groups/' + options['id']
227
+ end
228
+ end
229
+
230
+ ###
231
+ # Inherits CachetClient and handles all Incidents API Calls
232
+ #
233
+ class CachetIncidents < CachetClient
234
+ ##
235
+ # List all Incidents.
236
+ #
237
+ # @return object
238
+
239
+ def list
240
+ request method: :get,
241
+ url: @base_url + 'incidents'
242
+ end
243
+
244
+ ##
245
+ # List Incident by ID.
246
+ #
247
+ # @option options [string] :id Numeric incident id
248
+ # @return object
249
+
250
+ def list_id(options)
251
+ request method: :get,
252
+ url: @base_url + 'incidents/' + options['id']
253
+ end
254
+
255
+ ##
256
+ # Create Incident.
257
+ #
258
+ # @option options [string] :name **Required** Incident name
259
+ # @option options [string] :message **Required** Description of the incident
260
+ # @option options [int] :status **Required** Status of the incident; 1-4
261
+ # @option options [int] :visible **Required** value whether the incident public 0/1
262
+ # @option options [int] :component_id Component to update.(Required with component_status)
263
+ # @option options [int] :component_status The status to update the given component with.
264
+ # @option options [boolean] :notify True/False Whether to notify subscribers.
265
+ # @return object
266
+
267
+ def create(options)
268
+ request method: :post,
269
+ url: @base_url + 'incidents',
270
+ payload: options
271
+ end
272
+
273
+ ##
274
+ # Update Incident.
275
+ #
276
+ # @option options [string] :id Numeric incident id
277
+ # @option options [string] :name Incident name
278
+ # @option options [string] :message Description of the incident
279
+ # @option options [int] :status Status of the incident; 1-4
280
+ # @option options [int] :visible value whether the incident public 0/1
281
+ # @option options [int] :component_id Component to update.(Required with component_status)
282
+ # @option options [int] :component_status The status to update the given component with.
283
+ # @option options [boolean] :notify True/False Whether to notify subscribers.
284
+ # @return object
285
+
286
+ def update(options)
287
+ request method: :put,
288
+ url: @base_url + 'incidents/' + options['id'],
289
+ payload: options
290
+ end
291
+
292
+ ##
293
+ # Delete Incident.
294
+ #
295
+ # @option options [string] :id Numeric incident id
296
+ # @return object
297
+
298
+ def delete(options)
299
+ request method: :delete,
300
+ url: @base_url + 'incidents/' + options['id']
301
+ end
302
+ end
303
+
304
+ ###
305
+ # Inherits CachetClient and handles all Metrics API Calls
306
+ #
307
+ class CachetMetrics < CachetClient
308
+ ##
309
+ # List all Metrics.
310
+ #
311
+ # @return object
312
+
313
+ def list
314
+ request method: :get,
315
+ url: @base_url + 'metrics'
316
+ end
317
+
318
+ ##
319
+ # Create Metric.
320
+ #
321
+ # @option options [string] :name **Required** Metric name
322
+ # @option options [string] :suffix **Required** Measurments in
323
+ # @option options [string] :description **Required** Description of what is measured
324
+ # @option options [int] :default_value **Required** The default value for points
325
+ # @option options [int] :display_chart Whether to display the chart on the status page
326
+ # @return object
327
+
328
+ def create(options)
329
+ request method: :post,
330
+ url: @base_url + 'metrics',
331
+ payload: options
332
+ end
333
+
334
+ ##
335
+ # List Metric by ID Without Points.
336
+ #
337
+ # @option options [string] :id Numeric Metric id
338
+ # @return object
339
+
340
+ def list_id(options)
341
+ request method: :get,
342
+ url: @base_url + 'metrics/' + options['id']
343
+ end
344
+
345
+ ##
346
+ # Delete a Metric.
347
+ #
348
+ # @option options [string] :id Numeric Metric id
349
+ # @return object
350
+
351
+ def delete(options)
352
+ request method: :delete,
353
+ url: @base_url + 'metrics/' + options['id']
354
+ end
355
+
356
+ ##
357
+ # List Metric Points.
358
+ #
359
+ # @option options [string] :id Numeric Metric id
360
+ # @return object
361
+
362
+ def point_list(options)
363
+ request method: :get,
364
+ url: @base_url + 'metrics/' + options['id'] + '/points'
365
+ end
366
+
367
+ ##
368
+ # Add Metric Point.
369
+ #
370
+ # @option options [string] :id Numeric Metric id
371
+ # @option options [int] :value **Required** Value to plot on the metric graph
372
+ # @option options [string] :timestamp Unix timestamp of the point was measured
373
+ # @return object
374
+
375
+ def point_add(options)
376
+ request method: :post,
377
+ url: @base_url + 'metrics/' + options['id'] + '/points',
378
+ payload: options
379
+ end
380
+
381
+ ##
382
+ # Delete Metric Point.
383
+ #
384
+ # @option options [string] :id Numeric Metric id
385
+ # @option options [int] :point_id **Required** Metric Point id
386
+ # @return object
387
+
388
+ def point_delete(options)
389
+ request method: :delete,
390
+ url: @base_url + 'metrics/' + options['id'] + '/points/' + options['point_id'],
391
+ payload: options
392
+ end
393
+ end
394
+
395
+ ###
396
+ # Inherits CachetClient and handles all Subscribers API Calls
397
+ #
398
+ class CachetSubscribers < CachetClient
399
+ ##
400
+ # List all Subscribers.
401
+ #
402
+ # @return object
403
+
404
+ def list
405
+ request method: :get,
406
+ url: @base_url + 'subscribers'
407
+ end
408
+
409
+ ##
410
+ # Create Subscriber.
411
+ #
412
+ # @option options [string] :email **Required** Email address to subscribe
413
+ # @option options [int] :verify Whether to send verification email 0/1
414
+ # @return object
415
+
416
+ def create(options)
417
+ request method: :post,
418
+ url: @base_url + 'subscribers',
419
+ payload: options
420
+ end
421
+
422
+ ##
423
+ # Delete a Subscriber.
424
+ #
425
+ # @option options [string] :id ID of the subscriber to delete
426
+ # @return object
427
+
428
+ def delete(options)
429
+ request method: :delete,
430
+ url: @base_url + 'subscribers/' + options['id']
431
+ end
432
+ end
metadata ADDED
@@ -0,0 +1,174 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cachet_api
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0.pre
5
+ platform: ruby
6
+ authors:
7
+ - TheFynx
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-02-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: codeclimate-test-reporter
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: httparty
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rest-client
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: yard
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: redcarpet
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ description: Ruby library wrapper for CachetHQ.io - Beautiful & simple service statuses
126
+ - The open source status page system, for everyone
127
+ email:
128
+ - levi@fynx.me
129
+ executables:
130
+ - console
131
+ - console_load.rb
132
+ - setup
133
+ extensions: []
134
+ extra_rdoc_files: []
135
+ files:
136
+ - .gitignore
137
+ - .rspec
138
+ - .travis.yml
139
+ - Gemfile
140
+ - LICENSE
141
+ - README.md
142
+ - Rakefile
143
+ - bin/console
144
+ - bin/console_load.rb
145
+ - bin/setup
146
+ - cachet_api.gemspec
147
+ - lib/cachet.rb
148
+ - lib/cachet/rb/version.rb
149
+ homepage: https://github.com/TheFynx/cachet_api
150
+ licenses:
151
+ - MIT
152
+ metadata: {}
153
+ post_install_message:
154
+ rdoc_options: []
155
+ require_paths:
156
+ - lib
157
+ required_ruby_version: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - '>='
160
+ - !ruby/object:Gem::Version
161
+ version: '0'
162
+ required_rubygems_version: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - '>'
165
+ - !ruby/object:Gem::Version
166
+ version: 1.3.1
167
+ requirements: []
168
+ rubyforge_project:
169
+ rubygems_version: 2.0.14
170
+ signing_key:
171
+ specification_version: 4
172
+ summary: Ruby library wrapper for Cachet API
173
+ test_files: []
174
+ has_rdoc: