usno-imagery 0.0.2 → 0.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e635a7a0006c8efbfecce9618349c0ecbdb94e93
4
- data.tar.gz: 29a7964ba0a2e0bc21e56cff81e99f1fb7c90efb
3
+ metadata.gz: 3111708e4b2554709cc8b5f8478d2c5bf9e2f383
4
+ data.tar.gz: 9cae9895b598cda54a7f801c442e0a20e7b2198b
5
5
  SHA512:
6
- metadata.gz: de467e9589318066714c15ca8993a08db1587fdf798600c692f330ce3c690d22f21e93fda8e78cc0b4308c1eee3905ad979b0d911f566d500dd843075e32ab38
7
- data.tar.gz: 5c25e463903f479245d5cc50cdcbd1c647d91264d5fec5a171e99de2b725c80cbcb37427b9ab2ded7eefb42c107de1d0c398aec5ab1fb30ed6cf7dc09b44abbf
6
+ metadata.gz: e10fb7cc6dfc408b6118a047453bc679f38b33bb32e46b91d715bbfcb230590d29e047c91e4d413452084af7e533641535b06129a6558eeece60c986c8ce3b8c
7
+ data.tar.gz: 71e94813ee4bd84db37e88fb38042e23be75a0f1b29f8a143343dad1d7c46635d0f5717fc5ee3520e28dbf600f9a815f9223924ba43182a4087822878be04d03
data/README.md CHANGED
@@ -18,32 +18,31 @@ Or install it yourself as:
18
18
 
19
19
  ## Usage
20
20
 
21
- Warning! This library will be changing a lot as I explore the nooks and crannies of USNO's imagery data services.
22
-
23
21
  #### USNO::Imagery::Earth
24
22
 
25
23
  The earth namespace will contain classes for viewing USNO's earth images.
26
- Currently there are three classes here: `Map`, `Sphere`, `Rise`, and `Set`
27
-
28
- A view of the earth projected onto a 2D plane (at any given time):
29
-
30
- USNO::Imagery::Earth::Map.new(time: Time.now).call.data
31
- #=> "http://api.usno.navy.mil/imagery/earth.png?view=full&date=11/08/2013&time=20:32"
32
-
33
- A spherical view of the earth as seen from the moon (at any given time)
34
24
 
35
- USNO::Imagery::Earth::Sphere.new(time: Time.now).call.data
36
- #=> "http://api.usno.navy.mil/imagery/earth.png?view=moon&date=11/08/2013&time=20:31"
25
+ ```ruby
26
+ # For an image of the entire earth (Mercator projection) with day / night
27
+ USNO::Imagery::Earth::Map.new(time: Time.now).call.data
28
+ #=> "http://api.usno.navy.mil/imagery/earth.png?view=full&date=11/17/2013&time=1:11"
37
29
 
38
- A current view of the earth's sunrise
30
+ # For an image of the earth as seen from the sun
31
+ USNO::Imagery::Earth::Sun.new(time: Time.now).call.data
32
+ #=> "http://api.usno.navy.mil/imagery/earth.png?view=sun&date=11/17/2013&time=1:13"
39
33
 
40
- USNO::Imagery::Earth::Rise.new.call.data
41
- => "http://api.usno.navy.mil/imagery/earth.png?view=rise"
34
+ # For an image of the earth as seen from the moon
35
+ USNO::Imagery::Earth::Moon.new(time: Time.now).call.data
36
+ #=> "http://api.usno.navy.mil/imagery/earth.png?view=moon&date=11/17/2013&time=1:12"
42
37
 
43
- A current view of the earth's sunset
38
+ # For an image of the entire earth at sunrise
39
+ USNO::Imagery::Earth::Rise.new.call.data
40
+ #=> "http://api.usno.navy.mil/imagery/earth.png?view=rise"
44
41
 
45
- USNO::Imagery::Earth::Set.new.call.data
46
- #=> "http://api.usno.navy.mil/imagery/earth.png?view=set"
42
+ # For an image of the entire earth at sunset
43
+ USNO::Imagery::Earth::Set.new.call.data
44
+ #=> "http://api.usno.navy.mil/imagery/earth.png?view=set"
45
+ ```
47
46
 
48
47
  ## Contributing
49
48
 
@@ -1,8 +1,11 @@
1
1
  require_relative "imagery/version"
2
+ require_relative "imagery/earth/view"
3
+
2
4
  require_relative "imagery/earth/map"
3
- require_relative "imagery/earth/sphere"
4
5
  require_relative "imagery/earth/rise"
5
6
  require_relative "imagery/earth/set"
7
+ require_relative "imagery/earth/sun"
8
+ require_relative "imagery/earth/moon"
6
9
 
7
10
  module USNO
8
11
  module Imagery
@@ -6,31 +6,20 @@ module USNO
6
6
  class Map < PayDirt::Base
7
7
  def initialize(options = {})
8
8
  options = {
9
- time: Time.now,
10
- root_url: "http://api.usno.navy.mil/",
11
- resource: self.class.name.downcase.split("::")[1..-2].join("/") + ".png"
9
+ view: "full",
10
+ usno_imagery_class: USNO::Imagery::Earth::View
12
11
  }.merge(options)
13
12
 
14
13
  # sets instance variables from key value pairs,
15
14
  # will fail if any keys given before options aren't in options
16
- load_options(:time, :root_url, :resource, options)
15
+ load_options(:view, :usno_imagery_class, options)
17
16
  end
18
17
 
19
18
  def call
20
- result(true, query_for(@root_url + @resource))
21
- end
22
-
23
- private
24
- def query_for(resource)
25
- "#{resource}?view=full&date=#{date}&time=#{time}"
26
- end
27
-
28
- def date
29
- @time.utc.strftime("%m/%d/%Y")
30
- end
31
-
32
- def time
33
- @time.utc.strftime("%k:%M").lstrip
19
+ result true, @usno_imagery_class.new({
20
+ view: @view,
21
+ time: @time || Time.now
22
+ }).call.data
34
23
  end
35
24
  end
36
25
  end
@@ -0,0 +1,27 @@
1
+ require 'pay_dirt'
2
+
3
+ module USNO
4
+ module Imagery
5
+ module Earth
6
+ class Moon < PayDirt::Base
7
+ def initialize(options = {})
8
+ options = {
9
+ view: "moon",
10
+ usno_imagery_class: USNO::Imagery::Earth::View
11
+ }.merge(options)
12
+
13
+ # sets instance variables from key value pairs,
14
+ # will fail if any keys given before options aren't in options
15
+ load_options(:view, :usno_imagery_class, options)
16
+ end
17
+
18
+ def call
19
+ result true, @usno_imagery_class.new({
20
+ view: @view,
21
+ time: @time || Time.now
22
+ }).call.data
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -6,23 +6,20 @@ module USNO
6
6
  class Rise < PayDirt::Base
7
7
  def initialize(options = {})
8
8
  options = {
9
- root_url: "http://api.usno.navy.mil/",
10
- resource: self.class.name.downcase.split("::")[1..-2].join("/") + ".png",
11
- view: self.class.name.downcase.split("::")[-1]
9
+ view: "rise",
10
+ usno_imagery_class: USNO::Imagery::Earth::View
12
11
  }.merge(options)
13
12
 
14
13
  # sets instance variables from key value pairs,
15
14
  # will fail if any keys given before options aren't in options
16
- load_options(:view, options)
15
+ load_options(:view, :usno_imagery_class, options)
17
16
  end
18
17
 
19
18
  def call
20
- result(true, query_for(@root_url + @resource))
21
- end
22
-
23
- private
24
- def query_for(resource)
25
- "#{resource}?view=#{@view}"
19
+ result true, @usno_imagery_class.new({
20
+ view: @view,
21
+ time: nil
22
+ }).call.data
26
23
  end
27
24
  end
28
25
  end
@@ -1,9 +1,27 @@
1
1
  require 'pay_dirt'
2
2
 
3
+
3
4
  module USNO
4
5
  module Imagery
5
6
  module Earth
6
- class Set < Rise
7
+ class Set < PayDirt::Base
8
+ def initialize(options = {})
9
+ options = {
10
+ view: "set",
11
+ usno_imagery_class: USNO::Imagery::Earth::View
12
+ }.merge(options)
13
+
14
+ # sets instance variables from key value pairs,
15
+ # will fail if any keys given before options aren't in options
16
+ load_options(:view, :usno_imagery_class, options)
17
+ end
18
+
19
+ def call
20
+ result true, @usno_imagery_class.new({
21
+ view: @view,
22
+ time: nil
23
+ }).call.data
24
+ end
7
25
  end
8
26
  end
9
27
  end
@@ -0,0 +1,27 @@
1
+ require 'pay_dirt'
2
+
3
+ module USNO
4
+ module Imagery
5
+ module Earth
6
+ class Sun < PayDirt::Base
7
+ def initialize(options = {})
8
+ options = {
9
+ view: "sun",
10
+ usno_imagery_class: USNO::Imagery::Earth::View
11
+ }.merge(options)
12
+
13
+ # sets instance variables from key value pairs,
14
+ # will fail if any keys given before options aren't in options
15
+ load_options(:view, :usno_imagery_class, options)
16
+ end
17
+
18
+ def call
19
+ result true, @usno_imagery_class.new({
20
+ view: @view,
21
+ time: @time || Time.now
22
+ }).call.data
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -3,7 +3,7 @@ require 'pay_dirt'
3
3
  module USNO
4
4
  module Imagery
5
5
  module Earth
6
- class Sphere < PayDirt::Base
6
+ class View < PayDirt::Base
7
7
  def initialize(options = {})
8
8
  options = {
9
9
  time: Time.now,
@@ -13,7 +13,7 @@ module USNO
13
13
 
14
14
  # sets instance variables from key value pairs,
15
15
  # will fail if any keys given before options aren't in options
16
- load_options(:time, :root_url, :resource, options)
16
+ load_options(:time, :root_url, :resource, :view, options) and validate_state
17
17
  end
18
18
 
19
19
  def call
@@ -22,7 +22,7 @@ module USNO
22
22
 
23
23
  private
24
24
  def query_for(resource)
25
- "#{resource}?view=moon&date=#{date}&time=#{time}"
25
+ "#{ resource }?view=#{ @view }" + time
26
26
  end
27
27
 
28
28
  def date
@@ -30,7 +30,13 @@ module USNO
30
30
  end
31
31
 
32
32
  def time
33
- @time.utc.strftime("%H:%M")
33
+ @time ? "&date=#{ date }&time=#{ @time.utc.strftime("%k:%M").lstrip }" : ""
34
+ end
35
+
36
+ def validate_state
37
+ ["full", "moon", "sun", "rise", "set"].include? @view or raise(
38
+ ":view not recognized - #{@view}"
39
+ )
34
40
  end
35
41
  end
36
42
  end
@@ -1,5 +1,5 @@
1
1
  module USNO
2
2
  module Imagery
3
- VERSION = "0.0.2"
3
+ VERSION = "0.1.0"
4
4
  end
5
5
  end
@@ -1,12 +1,18 @@
1
- require 'coveralls'
2
- Coveralls.wear!
1
+ #require 'coveralls'
2
+ #Coveralls.wear!
3
+ require 'simplecov'
4
+ SimpleCov.start
3
5
 
4
6
  require "minitest/autorun"
5
7
 
6
8
  # The gem
7
9
  $: << File.dirname(__FILE__) + "/../lib"
8
10
  $: << File.dirname(__FILE__)
9
- require "usno/imagery/earth/map"
10
- require "usno/imagery/earth/sphere"
11
+
12
+ require "usno/imagery"
13
+ require "usno/imagery/earth/view"
14
+ require "usno/imagery/earth/sun"
15
+ require "usno/imagery/earth/moon"
11
16
  require "usno/imagery/earth/rise"
12
17
  require "usno/imagery/earth/set"
18
+ require "usno/imagery/earth/map"
@@ -4,7 +4,7 @@ describe USNO::Imagery::Earth::Map do
4
4
  before do
5
5
  @subject = USNO::Imagery::Earth::Map
6
6
  @params = {
7
- time: Time.now,
7
+ view: "full"
8
8
  }
9
9
  end
10
10
 
@@ -1,10 +1,10 @@
1
1
  require 'test_helper'
2
2
 
3
- describe USNO::Imagery::Earth::Sphere do
3
+ describe USNO::Imagery::Earth::Moon do
4
4
  before do
5
- @subject = USNO::Imagery::Earth::Sphere
5
+ @subject = USNO::Imagery::Earth::Moon
6
6
  @params = {
7
- time: Time.now,
7
+ view: "moon",
8
8
  }
9
9
  end
10
10
 
@@ -3,17 +3,20 @@ require 'test_helper'
3
3
  describe USNO::Imagery::Earth::Rise do
4
4
  before do
5
5
  @subject = USNO::Imagery::Earth::Rise
6
+ @params = {
7
+ view: "rise"
8
+ }
6
9
  end
7
10
 
8
11
  describe "as a class" do
9
12
  it "initializes properly" do
10
- @subject.new.must_respond_to :call
13
+ @subject.new(@params).must_respond_to :call
11
14
  end
12
15
  end
13
16
 
14
17
  describe "as an instance" do
15
18
  it "executes successfully" do
16
- result = @subject.new.call
19
+ result = @subject.new(@params).call
17
20
  result.successful?.must_equal true
18
21
  result.must_be_kind_of PayDirt::Result
19
22
  end
@@ -3,17 +3,20 @@ require 'test_helper'
3
3
  describe USNO::Imagery::Earth::Set do
4
4
  before do
5
5
  @subject = USNO::Imagery::Earth::Set
6
+ @params = {
7
+ view: "set"
8
+ }
6
9
  end
7
10
 
8
11
  describe "as a class" do
9
12
  it "initializes properly" do
10
- @subject.new.must_respond_to :call
13
+ @subject.new(@params).must_respond_to :call
11
14
  end
12
15
  end
13
16
 
14
17
  describe "as an instance" do
15
18
  it "executes successfully" do
16
- result = @subject.new.call
19
+ result = @subject.new(@params).call
17
20
  result.successful?.must_equal true
18
21
  result.must_be_kind_of PayDirt::Result
19
22
  end
@@ -0,0 +1,24 @@
1
+ require 'test_helper'
2
+
3
+ describe USNO::Imagery::Earth::Sun do
4
+ before do
5
+ @subject = USNO::Imagery::Earth::Sun
6
+ @params = {
7
+ view: "sun",
8
+ }
9
+ end
10
+
11
+ describe "as a class" do
12
+ it "initializes properly" do
13
+ @subject.new(@params).must_respond_to :call
14
+ end
15
+ end
16
+
17
+ describe "as an instance" do
18
+ it "executes successfully" do
19
+ result = @subject.new(@params).call
20
+ result.successful?.must_equal true
21
+ result.must_be_kind_of PayDirt::Result
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,29 @@
1
+ require 'test_helper'
2
+
3
+ describe USNO::Imagery::Earth::View do
4
+ before do
5
+ @subject = USNO::Imagery::Earth::View
6
+ @params = {
7
+ time: nil,
8
+ view: "rise",
9
+ }
10
+ end
11
+
12
+ describe "as a class" do
13
+ it "initializes properly" do
14
+ @subject.new(@params).must_respond_to :call
15
+ end
16
+
17
+ it "errors when initialized without required dependencies" do
18
+ -> { @subject.new(@params.reject { |k| k.to_s == 'view' }) }.must_raise RuntimeError
19
+ end
20
+ end
21
+
22
+ describe "as an instance" do
23
+ it "executes successfully" do
24
+ result = @subject.new(@params).call
25
+ result.successful?.must_equal true
26
+ result.must_be_kind_of PayDirt::Result
27
+ end
28
+ end
29
+ end
@@ -23,6 +23,7 @@ Gem::Specification.new do |spec|
23
23
  spec.add_development_dependency "rake"
24
24
  spec.add_development_dependency "pry"
25
25
  spec.add_development_dependency "coveralls"
26
+ spec.add_development_dependency "simplecov"
26
27
  spec.add_development_dependency "minitest"
27
28
  spec.add_runtime_dependency "pay_dirt"
28
29
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: usno-imagery
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan T. Hosford
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-16 00:00:00.000000000 Z
11
+ date: 2013-11-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: simplecov
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: minitest
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -108,15 +122,19 @@ files:
108
122
  - Rakefile
109
123
  - lib/usno/imagery.rb
110
124
  - lib/usno/imagery/earth/map.rb
125
+ - lib/usno/imagery/earth/moon.rb
111
126
  - lib/usno/imagery/earth/rise.rb
112
127
  - lib/usno/imagery/earth/set.rb
113
- - lib/usno/imagery/earth/sphere.rb
128
+ - lib/usno/imagery/earth/sun.rb
129
+ - lib/usno/imagery/earth/view.rb
114
130
  - lib/usno/imagery/version.rb
115
131
  - test/test_helper.rb
116
132
  - test/unit/usno/imagery/earth/map_test.rb
133
+ - test/unit/usno/imagery/earth/moon_test.rb
117
134
  - test/unit/usno/imagery/earth/rise_test.rb
118
135
  - test/unit/usno/imagery/earth/set_test.rb
119
- - test/unit/usno/imagery/earth/sphere_test.rb
136
+ - test/unit/usno/imagery/earth/sun_test.rb
137
+ - test/unit/usno/imagery/earth/view_test.rb
120
138
  - usno-imagery.gemspec
121
139
  homepage: ''
122
140
  licenses:
@@ -145,6 +163,8 @@ summary: Consumes USNO's imagery data services
145
163
  test_files:
146
164
  - test/test_helper.rb
147
165
  - test/unit/usno/imagery/earth/map_test.rb
166
+ - test/unit/usno/imagery/earth/moon_test.rb
148
167
  - test/unit/usno/imagery/earth/rise_test.rb
149
168
  - test/unit/usno/imagery/earth/set_test.rb
150
- - test/unit/usno/imagery/earth/sphere_test.rb
169
+ - test/unit/usno/imagery/earth/sun_test.rb
170
+ - test/unit/usno/imagery/earth/view_test.rb