quake 0.0.1

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,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm 1.9.2@quake --create
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in quake.gemspec
4
+ gemspec
@@ -0,0 +1,39 @@
1
+ Quake
2
+ =====
3
+
4
+ Quake is a library exposing the U.S. Geological Survey's real-time earthquake data. As described on [USGS' Earthquake Hazards Program](http://earthquake.usgs.gov/earthquakes/), "earthquake information is extracted from a merged catalog of earthquakes located by the USGS and contributing networks. Earthquakes will be broadcast within a few minutes for California events, and within 30-minutes for worldwide events".
5
+
6
+ Installation
7
+ ------------
8
+
9
+ via Gem:
10
+
11
+ [sudo|rvm] gem install quake
12
+
13
+ via Bundler:
14
+
15
+ gem "quake"
16
+
17
+ Basic Usage
18
+ -----------
19
+
20
+ Fetch all the earthquakes from the past week:
21
+
22
+ events = Quake::Event.last_week
23
+
24
+ Fetch all the earthquakes from the past day:
25
+
26
+ events = Quake::Event.last_day
27
+
28
+ Fetch all the earthquakes from the past hour:
29
+
30
+ events = Quake::Event.last_hour
31
+
32
+ Fetch all the earthquakes from the past week with a magnitude of at least 2:
33
+
34
+ events = Quake::Event.last_week(2)
35
+
36
+ Questions or Problems?
37
+ ----------------------
38
+
39
+ If you have any issues, please [add them to GitHub](https://github.com/chrisbaglieri/quake/issues) or fork the project and send a pull request (with tests of course). The tests are very straight forward, nothing more than minitest; yay for simplicity!
@@ -0,0 +1 @@
1
+ require 'bundler/gem_tasks'
@@ -0,0 +1,2 @@
1
+ require 'quake/event'
2
+ require "quake/version"
@@ -0,0 +1,66 @@
1
+ require 'csv'
2
+ require 'curl'
3
+
4
+ module Quake
5
+
6
+ class Event
7
+ attr_accessor :source
8
+ attr_accessor :id
9
+ attr_accessor :version
10
+ attr_accessor :datetime
11
+ attr_accessor :latitude
12
+ attr_accessor :longitude
13
+ attr_accessor :magnitude
14
+ attr_accessor :depth
15
+ attr_accessor :nst
16
+ attr_accessor :region
17
+
18
+ def self.last_week(minimum_magnitude=2.5)
19
+ raw_items = CSV.parse(Curl::Easy.perform(WEEK).body_str)
20
+ create_events(raw_items, minimum_magnitude)
21
+ end
22
+
23
+ def self.last_day(minimum_magnitude=0)
24
+ raw_items = CSV.parse(Curl::Easy.perform(DAY).body_str)
25
+ create_events(raw_items, minimum_magnitude)
26
+ end
27
+
28
+ def self.last_hour(minimum_magnitude=0)
29
+ raw_items = CSV.parse(Curl::Easy.perform(HOUR).body_str)
30
+ create_events(raw_items, minimum_magnitude)
31
+ end
32
+
33
+ def initialize(raw)
34
+ self.source = raw[0]
35
+ self.id = raw[1]
36
+ self.version = raw[2].to_i
37
+ self.datetime = DateTime.strptime(raw[3], fmt="%A, %B %d, %Y %H:%M:%S UTC")
38
+ self.latitude = raw[4]
39
+ self.longitude = raw[5]
40
+ self.magnitude = raw[6].to_f
41
+ self.depth = raw[7].to_f
42
+ self.nst = raw[8].to_i
43
+ self.region = raw[9]
44
+ end
45
+
46
+ private
47
+
48
+ def self.create_events(raw_items, minimum_magnitude)
49
+ raw_items.shift
50
+ events = []
51
+ raw_items.each do |raw_item|
52
+ event = Event.new(raw_item)
53
+ if event.magnitude >= minimum_magnitude
54
+ events << Event.new(raw_item)
55
+ end
56
+ end
57
+ events
58
+ end
59
+
60
+ WEEK = "http://earthquake.usgs.gov/earthquakes/catalogs/eqs7day-M2.5.txt"
61
+ DAY = "http://earthquake.usgs.gov/earthquakes/catalogs/eqs1day-M0.txt"
62
+ HOUR = "http://earthquake.usgs.gov/earthquakes/catalogs/eqs1hour-M0.txt"
63
+
64
+ end
65
+
66
+ end
@@ -0,0 +1,3 @@
1
+ module Quake
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,20 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "quake/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "quake"
7
+ s.version = Quake::VERSION
8
+ s.authors = ["Chris Baglieri"]
9
+ s.email = ["chris.baglieri@gmail.com"]
10
+ s.homepage = "https://github.com/chrisbaglieri/quake"
11
+ s.description = %q{A library exposing the U.S. Geological Survey's real-time earthquake data}
12
+ s.summary = s.description
13
+
14
+ s.add_dependency('curb', '>= 0.7.15')
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- tests/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+ end
@@ -0,0 +1,36 @@
1
+ require 'minitest/autorun'
2
+ Dir[File.join('../lib/quake', '*.rb')].each { |lib| require lib }
3
+
4
+ class EventTests < MiniTest::Unit::TestCase
5
+
6
+ def test_recent_events_week
7
+ events = Quake::Event.last_week
8
+ assert(events.count > 0)
9
+ end
10
+
11
+ def test_recent_events_day
12
+ events = Quake::Event.last_day
13
+ assert(events.count > 0)
14
+ end
15
+
16
+ def test_recent_events_hour
17
+ events = Quake::Event.last_hour
18
+ assert(events.count > 0)
19
+ end
20
+
21
+ def test_recent_events_week_with_magnitude_of_two
22
+ events = Quake::Event.last_week(4)
23
+ events.each { assert(events[0].magnitude >= 4) }
24
+ end
25
+
26
+ def test_recent_events_day_with_magnitude_of_two
27
+ events = Quake::Event.last_day(2)
28
+ events.each { assert(events[0].magnitude >= 2) }
29
+ end
30
+
31
+ def test_recent_events_hour_with_magnitude_of_two
32
+ events = Quake::Event.last_hour(1)
33
+ events.each { assert(events[0].magnitude >= 1) }
34
+ end
35
+
36
+ end
metadata ADDED
@@ -0,0 +1,68 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: quake
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Chris Baglieri
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-08-17 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: curb
16
+ requirement: &70198107885880 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 0.7.15
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70198107885880
25
+ description: A library exposing the U.S. Geological Survey's real-time earthquake
26
+ data
27
+ email:
28
+ - chris.baglieri@gmail.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - .gitignore
34
+ - .rvmrc
35
+ - Gemfile
36
+ - README.md
37
+ - Rakefile
38
+ - lib/quake.rb
39
+ - lib/quake/event.rb
40
+ - lib/quake/version.rb
41
+ - quake.gemspec
42
+ - tests/event_tests.rb
43
+ homepage: https://github.com/chrisbaglieri/quake
44
+ licenses: []
45
+ post_install_message:
46
+ rdoc_options: []
47
+ require_paths:
48
+ - lib
49
+ required_ruby_version: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ required_rubygems_version: !ruby/object:Gem::Requirement
56
+ none: false
57
+ requirements:
58
+ - - ! '>='
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ requirements: []
62
+ rubyforge_project:
63
+ rubygems_version: 1.8.6
64
+ signing_key:
65
+ specification_version: 3
66
+ summary: A library exposing the U.S. Geological Survey's real-time earthquake data
67
+ test_files:
68
+ - tests/event_tests.rb