site_status 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +9 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +17 -0
- data/README.md +60 -0
- data/Rakefile +8 -0
- data/lib/site_status.rb +20 -0
- data/lib/site_status/configuration.rb +12 -0
- data/lib/site_status/file_reader.rb +26 -0
- data/lib/site_status/request.rb +39 -0
- data/site_status.gemspec +19 -0
- data/test/test_status.rb +5 -0
- metadata +74 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
data/README.md
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
site_status
|
2
|
+
============
|
3
|
+
|
4
|
+
[Project description and any badges]
|
5
|
+
![<Display Name>](http://i.imgur.com/2L6pXpB.png)
|
6
|
+
|
7
|
+
If your app depends on any external services or endpoints, you've probably needed to ensure those services were properly responding.
|
8
|
+
|
9
|
+
site_status is a light weight gem which checks the HTTP status of any website(s).
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
# ./lib/tasks/status.rake
|
13
|
+
namespace :status do
|
14
|
+
task :check do
|
15
|
+
require 'site_status'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
```
|
19
|
+
|
20
|
+
In your shell:
|
21
|
+
|
22
|
+
```shell
|
23
|
+
rake status:check
|
24
|
+
```
|
25
|
+
|
26
|
+
## Requirements
|
27
|
+
site_status is configured by default to look for a file name `config/status_check.yml` in your project root.
|
28
|
+
|
29
|
+
```yaml
|
30
|
+
# ./config/status_check.yml
|
31
|
+
endpoints:
|
32
|
+
- 'http://www.b3ta.com/404'
|
33
|
+
- 'http://github.com/'
|
34
|
+
other_endpoints:
|
35
|
+
- 'http://canyoufixmycomputer.com/'
|
36
|
+
```
|
37
|
+
|
38
|
+
If you prefer a different file path, configuration is simple:
|
39
|
+
|
40
|
+
```ruby
|
41
|
+
SiteStat.configure do |config|
|
42
|
+
config.yml_path = 'path/to/file.yml'
|
43
|
+
end
|
44
|
+
```
|
45
|
+
Configuration must be run prior to `require site_status`
|
46
|
+
|
47
|
+
## Limitations
|
48
|
+
Does not play well with ssl and unresolvable dns
|
49
|
+
|
50
|
+
## Installation
|
51
|
+
add `gem "site_status"` to your gemfile or `gem install site_status`
|
52
|
+
|
53
|
+
## Contributing
|
54
|
+
|
55
|
+
## Credits
|
56
|
+
|
57
|
+
## License
|
58
|
+
|
59
|
+
site_status is released under the MIT License. See the bundled LICENSE file for
|
60
|
+
details.
|
data/Rakefile
ADDED
data/lib/site_status.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require 'rainbow'
|
3
|
+
require 'net/http'
|
4
|
+
|
5
|
+
require_relative 'site_status/configuration'
|
6
|
+
require_relative 'site_status/request'
|
7
|
+
require_relative 'site_status/file_reader'
|
8
|
+
|
9
|
+
module SiteStat
|
10
|
+
class << self
|
11
|
+
attr_accessor :configuration
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.configure
|
15
|
+
@configuration ||= Configuration.new
|
16
|
+
yield(configuration) if block_given?
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
SiteStat::Request.new
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module SiteStat
|
2
|
+
class FileReader
|
3
|
+
|
4
|
+
attr_reader :url_hash
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
@url_hash = loaded_file
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
|
12
|
+
def file_path
|
13
|
+
SiteStat.configuration.yml_path
|
14
|
+
end
|
15
|
+
|
16
|
+
def loaded_file
|
17
|
+
begin
|
18
|
+
YAML.load(File.read(file_path))
|
19
|
+
rescue
|
20
|
+
SiteStat.configure
|
21
|
+
YAML.load(File.read(file_path))
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module SiteStat
|
2
|
+
class Request
|
3
|
+
|
4
|
+
def initialize
|
5
|
+
ping_urls
|
6
|
+
end
|
7
|
+
|
8
|
+
private
|
9
|
+
|
10
|
+
def ping_urls
|
11
|
+
services = FileReader.new.url_hash
|
12
|
+
services.each { |svc, urls| get_status_for(svc, urls) }
|
13
|
+
end
|
14
|
+
|
15
|
+
def get_status_for(service, urls)
|
16
|
+
urls.each do |url|
|
17
|
+
escaped_url = URI.parse(url.to_s)
|
18
|
+
begin
|
19
|
+
res = Net::HTTP.get_response(escaped_url)
|
20
|
+
handle_response(res, service, url)
|
21
|
+
rescue Timeout::Error => exc
|
22
|
+
msg = "#{service}: #{url} | #{exc.message}"
|
23
|
+
$stdout.puts msg.color(:red)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def handle_response(res, service, url)
|
29
|
+
if res.code =~ /2|3\d{2}/
|
30
|
+
msg = "#{service}: #{res.code} | #{url} | #{res.message}"
|
31
|
+
$stdout.puts msg.color(:green)
|
32
|
+
else
|
33
|
+
msg = "#{service}: #{res.code} | #{url} | #{res.message}"
|
34
|
+
$stdout.puts msg.color(:red)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
data/site_status.gemspec
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
lib = File.expand_path('../lib', __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = "site_status"
|
5
|
+
s.version = "0.0.6"
|
6
|
+
s.default_executable = "site_status"
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
|
+
s.authors = ["Luke Fender, Mike Fischer"]
|
9
|
+
s.date = %q{2013-10-08}
|
10
|
+
s.description = %q{site_status is a light weight gem which checks the HTTP status of any website(s).}
|
11
|
+
s.email = %q{lfender@rentpath.com}
|
12
|
+
s.files = `git ls-files`.split($/)
|
13
|
+
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
14
|
+
s.require_paths = ["lib"]
|
15
|
+
s.homepage = %q{https://github.com/primedia/site_status}
|
16
|
+
s.summary = %q{Site Status!}
|
17
|
+
s.add_dependency 'rainbow'
|
18
|
+
end
|
19
|
+
|
data/test/test_status.rb
ADDED
metadata
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: site_status
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.6
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Luke Fender, Mike Fischer
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-10-08 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rainbow
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
description: site_status is a light weight gem which checks the HTTP status of any
|
31
|
+
website(s).
|
32
|
+
email: lfender@rentpath.com
|
33
|
+
executables: []
|
34
|
+
extensions: []
|
35
|
+
extra_rdoc_files: []
|
36
|
+
files:
|
37
|
+
- .gitignore
|
38
|
+
- Gemfile
|
39
|
+
- Gemfile.lock
|
40
|
+
- README.md
|
41
|
+
- Rakefile
|
42
|
+
- lib/site_status.rb
|
43
|
+
- lib/site_status/configuration.rb
|
44
|
+
- lib/site_status/file_reader.rb
|
45
|
+
- lib/site_status/request.rb
|
46
|
+
- site_status.gemspec
|
47
|
+
- test/test_status.rb
|
48
|
+
homepage: https://github.com/primedia/site_status
|
49
|
+
licenses: []
|
50
|
+
post_install_message:
|
51
|
+
rdoc_options: []
|
52
|
+
require_paths:
|
53
|
+
- lib
|
54
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
55
|
+
none: false
|
56
|
+
requirements:
|
57
|
+
- - ! '>='
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '0'
|
60
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
requirements: []
|
67
|
+
rubyforge_project:
|
68
|
+
rubygems_version: 1.8.25
|
69
|
+
signing_key:
|
70
|
+
specification_version: 3
|
71
|
+
summary: Site Status!
|
72
|
+
test_files:
|
73
|
+
- test/test_status.rb
|
74
|
+
has_rdoc:
|