site_watcher 1.1.0 → 1.4.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/lib/site_watcher/version.rb +1 -1
- data/lib/site_watcher.rb +28 -14
- metadata +11 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: df65a9d8f51bcde0117e6202caa4bc5053e6559c24967dfff33fb6b1542d54b3
|
4
|
+
data.tar.gz: 675de476412013dbadd3d75cead811433f913e6be1c79ae037798621f651078e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 28f0382fae6c8c7cf69f579dd7f0dadc27b86dac5f0b562ff4cca1bf9a80822afffb22b53e8a0cabc3a5d712168dc39d2b2de5050a28585231b8b5c6d94afe54
|
7
|
+
data.tar.gz: d92430b4dc7fa2de6dabf1df4fa77899ca60d8cc7206fe435279397d0be1f2709c5aa35f6acda4813f1de10ee17fcce56257c5f53b53886b5cbb8bd8e629f3c3
|
data/lib/site_watcher/version.rb
CHANGED
data/lib/site_watcher.rb
CHANGED
@@ -8,29 +8,30 @@ require "rspec/expectations"
|
|
8
8
|
|
9
9
|
class SiteWatcher
|
10
10
|
def self.watch(opts={}, &block)
|
11
|
-
trap(:SIGINT) { abort(?\n) }
|
12
|
-
|
13
11
|
dsl = DSL::Top.new
|
14
12
|
dsl.instance_eval(&block)
|
15
13
|
|
16
14
|
delay = opts.fetch(:every, 5)
|
17
|
-
logger = opts.fetch(:logger, ::Logger.new($stderr))
|
15
|
+
logger = opts.fetch(:logger, ::Logger.new($stderr, level: :warn))
|
16
|
+
timeout = opts.fetch(:timeout, {connect: 3, read: 10})
|
18
17
|
|
19
18
|
new(
|
20
19
|
dsl.__sw_before_hooks,
|
21
20
|
dsl.__sw_pages,
|
22
21
|
dsl.__sw_after_hooks,
|
23
22
|
delay,
|
24
|
-
logger
|
23
|
+
logger,
|
24
|
+
timeout,
|
25
25
|
).watch
|
26
26
|
end
|
27
27
|
|
28
|
-
def initialize(before_hooks, pages, after_hooks, delay, logger)
|
28
|
+
def initialize(before_hooks, pages, after_hooks, delay, logger, timeout)
|
29
29
|
@before_hooks = before_hooks
|
30
30
|
@pages = pages
|
31
31
|
@after_hooks = after_hooks
|
32
32
|
@delay = delay
|
33
33
|
@logger = logger
|
34
|
+
@timeout = timeout
|
34
35
|
@force = false
|
35
36
|
end
|
36
37
|
|
@@ -44,7 +45,7 @@ class SiteWatcher
|
|
44
45
|
|
45
46
|
@pages.each do |page|
|
46
47
|
begin
|
47
|
-
page.__sw_run!(force)
|
48
|
+
page.__sw_run!(force, @logger, @timeout)
|
48
49
|
@pages.delete(page) if page.__sw_remove_on_fulfillment
|
49
50
|
rescue ::RSpec::Expectations::ExpectationNotMetError
|
50
51
|
rescue => e
|
@@ -115,6 +116,7 @@ class SiteWatcher
|
|
115
116
|
@__sw_headers = headers
|
116
117
|
@__sw_http_opts = opts
|
117
118
|
@__sw_fulfilled = nil
|
119
|
+
@__sw_fetch = nil
|
118
120
|
@__sw_remove_on_fulfillment = true
|
119
121
|
end
|
120
122
|
|
@@ -126,6 +128,10 @@ class SiteWatcher
|
|
126
128
|
@__sw_fulfilled = block
|
127
129
|
end
|
128
130
|
|
131
|
+
def fetch(&block)
|
132
|
+
@__sw_fetch = block
|
133
|
+
end
|
134
|
+
|
129
135
|
def headers(hash)
|
130
136
|
@__sw_headers = hash
|
131
137
|
end
|
@@ -134,6 +140,7 @@ class SiteWatcher
|
|
134
140
|
@__sw_http_method = http_method
|
135
141
|
end
|
136
142
|
|
143
|
+
# FIXME this isn't even used?
|
137
144
|
def body(body)
|
138
145
|
@__sw_body = body
|
139
146
|
end
|
@@ -142,20 +149,27 @@ class SiteWatcher
|
|
142
149
|
@__sw_remove_on_fulfillment = !!bool
|
143
150
|
end
|
144
151
|
|
145
|
-
def __sw_run!(force
|
146
|
-
|
152
|
+
def __sw_run!(force, logger, timeout)
|
153
|
+
client = ::HTTP
|
154
|
+
.use(logging: {logger: logger})
|
155
|
+
.timeout(timeout)
|
147
156
|
.headers(@__sw_headers)
|
148
|
-
.request(@__sw_method, @__sw_url, **@__sw_http_opts)
|
149
157
|
|
150
|
-
|
151
|
-
|
152
|
-
page = ::JSON.parse(response.to_s)
|
158
|
+
if @__sw_fetch
|
159
|
+
response = @__sw_fetch.call(@__sw_url, client)
|
153
160
|
else
|
154
|
-
|
161
|
+
response = client.request(@__sw_method, @__sw_url, **@__sw_http_opts)
|
162
|
+
|
163
|
+
case response.content_type.mime_type
|
164
|
+
when /json/i
|
165
|
+
response = ::JSON.parse(response.to_s)
|
166
|
+
else
|
167
|
+
response = ::Capybara::Node::Simple.new(response.to_s)
|
168
|
+
end
|
155
169
|
end
|
156
170
|
|
157
171
|
begin
|
158
|
-
@__sw_tests.each { |test| test.call(
|
172
|
+
@__sw_tests.each { |test| test.call(response) }
|
159
173
|
rescue ::RSpec::Expectations::ExpectationNotMetError => err
|
160
174
|
__sw_fulfilled! if force
|
161
175
|
raise(err)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: site_watcher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Genco
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-03-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: capybara
|
@@ -58,28 +58,28 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '2.0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '2.0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rake
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
75
|
+
version: '13.0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
82
|
+
version: '13.0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: rspec
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,7 +108,7 @@ dependencies:
|
|
108
108
|
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
|
-
description:
|
111
|
+
description:
|
112
112
|
email:
|
113
113
|
- alexgenco@gmail.com
|
114
114
|
executables: []
|
@@ -123,7 +123,7 @@ homepage: https://github.com/alexgenco/site_watcher
|
|
123
123
|
licenses:
|
124
124
|
- MIT
|
125
125
|
metadata: {}
|
126
|
-
post_install_message:
|
126
|
+
post_install_message:
|
127
127
|
rdoc_options: []
|
128
128
|
require_paths:
|
129
129
|
- lib
|
@@ -138,9 +138,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
138
138
|
- !ruby/object:Gem::Version
|
139
139
|
version: '0'
|
140
140
|
requirements: []
|
141
|
-
|
142
|
-
|
143
|
-
signing_key:
|
141
|
+
rubygems_version: 3.3.7
|
142
|
+
signing_key:
|
144
143
|
specification_version: 4
|
145
144
|
summary: Periodically monitor a website
|
146
145
|
test_files: []
|