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.
- data/.gitignore +4 -0
- data/.rvmrc +1 -0
- data/Gemfile +4 -0
- data/README.md +39 -0
- data/Rakefile +1 -0
- data/lib/quake.rb +2 -0
- data/lib/quake/event.rb +66 -0
- data/lib/quake/version.rb +3 -0
- data/quake.gemspec +20 -0
- data/tests/event_tests.rb +36 -0
- metadata +68 -0
data/.gitignore
ADDED
data/.rvmrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm 1.9.2@quake --create
|
data/Gemfile
ADDED
data/README.md
ADDED
@@ -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!
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'bundler/gem_tasks'
|
data/lib/quake.rb
ADDED
data/lib/quake/event.rb
ADDED
@@ -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
|
data/quake.gemspec
ADDED
@@ -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
|