site_status 0.0.6

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.
@@ -0,0 +1,9 @@
1
+ .DS_Store
2
+ *.gem
3
+ spec/vcr_cassettes
4
+ .ruby-version
5
+ .ruby-gemset
6
+ vendor/ruby
7
+ .bundle
8
+ coverage
9
+ *.orig
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'http://gems01.lab.primedia.com'
2
+ source 'https://rubygems.org'
3
+ gemspec
@@ -0,0 +1,17 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ site_status (0.0.5)
5
+ rainbow
6
+
7
+ GEM
8
+ remote: http://gems01.lab.primedia.com/
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ rainbow (1.1.4)
12
+
13
+ PLATFORMS
14
+ ruby
15
+
16
+ DEPENDENCIES
17
+ site_status!
@@ -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.
@@ -0,0 +1,8 @@
1
+ require 'rake/testtask'
2
+
3
+ Rake::TestTask.new do |t|
4
+ t.libs << 'test'
5
+ end
6
+
7
+ desc "Run tests"
8
+ task :default => :test
@@ -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,12 @@
1
+ module SiteStat
2
+ class Configuration
3
+
4
+ attr_accessor :yml_path
5
+
6
+ def initialize(data={})
7
+ default_path = Dir.pwd << '/config/status_check.yml'
8
+ @yml_path = data[:yml_path] || default_path
9
+ end
10
+
11
+ end
12
+ end
@@ -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
@@ -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
+
@@ -0,0 +1,5 @@
1
+ require 'test/unit'
2
+ require 'site_stat'
3
+
4
+ class SiteStatTest < Test::Unit::TestCase
5
+ end
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: