cronitor 1.1.5 → 2.0.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
  SHA1:
3
- metadata.gz: 4c234da3ffd469dc74eefc0ee50a369c5c3b967c
4
- data.tar.gz: c89a778d71c9b27463777699eed0b2fc21a2cd12
3
+ metadata.gz: 67371ddbb668fc2c736994aadb6b1610bd807aa4
4
+ data.tar.gz: 22381ccb4ee4157fe32c3d518642976aa58a63d9
5
5
  SHA512:
6
- metadata.gz: 958007209685433235f3387c29cddbdb6e976c27cf1539bfa5ce2e7fdd58d0e9e8057c6089ba28635005368ae658cb96370a51c9863f338671aff78860f0d38e
7
- data.tar.gz: 64db58946e2287628ba325387cccb469a07d7bdd6bffbf965b69111f8c5f7dcd172d5dec0a61588f4e5d94b29c823c23a8394ee89563bb5770553be82b09337e
6
+ metadata.gz: fde7ed9489dd3b82435766ed0013dcef88fb2fe7f67ecca2e3cd7d954c3fff2c164df8e5af2a9b59343b5587c5d287df4a229968d1b4d306ea916605b81a0329
7
+ data.tar.gz: 0e342c25712223f1b1f8e67c11b606bf75369a494c00f0bd3aacb6bc0c87272b8b6b44f5b2e0f81d5613779eabdaf95289716a0e2d639f20ba2e0453c252cad3
@@ -1,4 +1,3 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.2
4
- before_install: gem install bundler -v 1.10
3
+ - 2.4
@@ -18,14 +18,11 @@ Gem::Specification.new do |spec|
18
18
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
19
  spec.require_paths = ['lib']
20
20
 
21
- spec.add_dependency 'unirest', '~> 1.1'
22
- spec.add_dependency 'hashie', '~> 3.4'
23
-
24
21
  spec.add_development_dependency 'bundler', '~> 1.10'
25
22
  spec.add_development_dependency 'rake', '~> 10.0'
26
23
  spec.add_development_dependency 'rspec', '~> 3.3'
27
24
  spec.add_development_dependency 'pry', '~> 0.10'
28
- spec.add_development_dependency 'webmock', '~> 1.21'
29
- spec.add_development_dependency 'sinatra', '~> 1.4'
25
+ spec.add_development_dependency 'webmock', '~> 3.1'
26
+ spec.add_development_dependency 'sinatra', '~> 2.0'
30
27
  spec.add_development_dependency 'bump', '~> 0.1'
31
28
  end
@@ -1,15 +1,15 @@
1
1
  require 'cronitor/version'
2
2
  require 'cronitor/error'
3
+ require 'json'
3
4
  require 'net/http'
4
- require 'unirest'
5
- require 'hashie'
5
+ require 'uri'
6
6
 
7
7
  class Cronitor
8
8
  attr_accessor :token, :opts, :code
9
9
  API_URL = 'https://cronitor.io/v1'.freeze
10
10
  PING_URL = 'https://cronitor.link'.freeze
11
11
 
12
- def initialize(token: nil, opts: {}, code: nil)
12
+ def initialize(token: ENV['CRONITOR_TOKEN'], opts: {}, code: nil)
13
13
  @token = token
14
14
  @opts = opts
15
15
  @code = code
@@ -23,7 +23,7 @@ class Cronitor
23
23
  end
24
24
 
25
25
  if @opts
26
- Hashie.symbolize_keys! @opts
26
+ @opts = symbolize_keys @opts
27
27
  exists? @opts[:name] if @opts.key? :name
28
28
  human_readable @opts[:rules] if @opts.key? :rules
29
29
  end
@@ -32,34 +32,52 @@ class Cronitor
32
32
  end
33
33
 
34
34
  def create
35
- response = Unirest.post(
36
- "#{API_URL}/monitors",
37
- headers: default_headers.merge('Content-Type' => 'application/json'),
38
- auth: { user: token },
39
- parameters: opts.to_json
40
- )
41
-
42
- @code = response.body['code'] if valid? response
35
+ uri = URI.parse "#{API_URL}/monitors"
36
+
37
+ http = Net::HTTP.new uri.host, uri.port
38
+ http.use_ssl = uri.scheme == 'https'
39
+
40
+ request = Net::HTTP::Post.new uri.path, default_headers
41
+ request.basic_auth token, nil
42
+ request.content_type = 'application/json'
43
+ request.body = JSON.generate opts
44
+
45
+ response = http.request request
46
+
47
+ @code = JSON.parse(response.body).fetch 'code' if valid? response
43
48
  end
44
49
 
45
50
  def exists?(name)
46
- response = Unirest.get(
47
- "#{API_URL}/monitors/#{URI.escape(name).gsub('[', '%5B').gsub(']', '%5D')}",
48
- headers: default_headers,
49
- auth: { user: token }
50
- )
51
- return false unless response.code == 200
51
+ uri = URI.parse "#{API_URL}/monitors/#{URI.escape name}"
52
+
53
+ http = Net::HTTP.new uri.host, uri.port
54
+ http.use_ssl = uri.scheme == 'https'
52
55
 
53
- @code = response.body['code']
56
+ request = Net::HTTP::Get.new uri.path, default_headers
57
+ request.basic_auth token, nil
58
+
59
+ response = http.request request
60
+
61
+ return false unless response.is_a? Net::HTTPSuccess
62
+
63
+ @code = JSON.parse(response.body).fetch 'code'
54
64
 
55
65
  true
56
66
  end
57
67
 
58
68
  def ping(type, msg = nil)
59
- url = "#{PING_URL}/#{code}/#{type}"
60
- url += "?msg=#{URI.escape msg}" if %w(run complete fail).include?(type) && !msg.nil?
69
+ uri = URI.parse "#{PING_URL}/#{URI.escape code}/#{URI.escape type}"
70
+ if %w[run complete fail].include?(type) && !msg.nil?
71
+ uri.query = URI.encode_www_form 'msg' => msg
72
+ end
73
+
74
+ http = Net::HTTP.new uri.host, uri.port
75
+ http.use_ssl = uri.scheme == 'https'
76
+
77
+ request = Net::HTTP::Get.new uri, default_headers
78
+
79
+ response = http.request request
61
80
 
62
- response = Unirest.get url
63
81
  valid? response
64
82
  end
65
83
 
@@ -75,10 +93,15 @@ class Cronitor
75
93
  private
76
94
 
77
95
  def valid?(response)
78
- return true if [200, 201].include? response.code
79
- server_error? response
96
+ return true if response.is_a? Net::HTTPSuccess
97
+
98
+ msg = if response.content_type.match? 'json'
99
+ error_msg JSON.parse(response.body)
100
+ else
101
+ "Something else has gone awry. HTTP status: #{response.code}"
102
+ end
80
103
 
81
- raise Cronitor::Error, error_msg(response.body)
104
+ raise Cronitor::Error, msg
82
105
  end
83
106
 
84
107
  def error_msg(body, msg = [])
@@ -95,16 +118,13 @@ class Cronitor
95
118
  msg.join ' '
96
119
  end
97
120
 
98
- def server_error?(response)
99
- return unless [301, 302, 404, 500, 502, 503, 504].include? response.code
100
-
101
- raise(
102
- Cronitor::Error,
103
- "Something else has gone awry. HTTP status: #{response.code}"
104
- )
105
- end
106
-
107
121
  def default_headers
108
122
  { 'Accept' => 'application/json' }
109
123
  end
124
+
125
+ def symbolize_keys(hash)
126
+ hash.each_with_object({}) do |(k, v), h|
127
+ h[k.to_sym] = v.is_a?(Hash) ? symbolize_keys(v) : v
128
+ end
129
+ end
110
130
  end
@@ -1,3 +1,3 @@
1
1
  class Cronitor
2
- VERSION = '1.1.5'
2
+ VERSION = '2.0.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,43 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cronitor
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.5
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeff Byrnes
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-07-19 00:00:00.000000000 Z
11
+ date: 2017-11-30 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: unirest
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '1.1'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '1.1'
27
- - !ruby/object:Gem::Dependency
28
- name: hashie
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '3.4'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '3.4'
41
13
  - !ruby/object:Gem::Dependency
42
14
  name: bundler
43
15
  requirement: !ruby/object:Gem::Requirement
@@ -100,28 +72,28 @@ dependencies:
100
72
  requirements:
101
73
  - - "~>"
102
74
  - !ruby/object:Gem::Version
103
- version: '1.21'
75
+ version: '3.1'
104
76
  type: :development
105
77
  prerelease: false
106
78
  version_requirements: !ruby/object:Gem::Requirement
107
79
  requirements:
108
80
  - - "~>"
109
81
  - !ruby/object:Gem::Version
110
- version: '1.21'
82
+ version: '3.1'
111
83
  - !ruby/object:Gem::Dependency
112
84
  name: sinatra
113
85
  requirement: !ruby/object:Gem::Requirement
114
86
  requirements:
115
87
  - - "~>"
116
88
  - !ruby/object:Gem::Version
117
- version: '1.4'
89
+ version: '2.0'
118
90
  type: :development
119
91
  prerelease: false
120
92
  version_requirements: !ruby/object:Gem::Requirement
121
93
  requirements:
122
94
  - - "~>"
123
95
  - !ruby/object:Gem::Version
124
- version: '1.4'
96
+ version: '2.0'
125
97
  - !ruby/object:Gem::Dependency
126
98
  name: bump
127
99
  requirement: !ruby/object:Gem::Requirement
@@ -176,7 +148,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
176
148
  version: '0'
177
149
  requirements: []
178
150
  rubyforge_project:
179
- rubygems_version: 2.6.6
151
+ rubygems_version: 2.6.13
180
152
  signing_key:
181
153
  specification_version: 4
182
154
  summary: An interface for the Cronitor API