usno-transit 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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 921d022c29cf52cb93ec98ed662706137fb6c326
4
+ data.tar.gz: ba13e66a5b76ee111e62d04b4d52eda395664a13
5
+ SHA512:
6
+ metadata.gz: 600a37ed59e05d0c17fc90a0b5f80b6f6c9f8458fd66dfdd4b3acfe5e8453496bec0fdc20a0695acae174d75cee0d8cbfdd6df785afe4eafc46075e32728b96e
7
+ data.tar.gz: d9349ea403333732a2d7b1979abd42c4cf328761ae470964ad8bb550752774ac9427f3fff2648ebc349e24af1e7ffb6f06d43ac5607e509a92bf1881b5c95220
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/.travis.yml ADDED
@@ -0,0 +1,13 @@
1
+ language: ruby
2
+
3
+ matrix:
4
+ allow_failures:
5
+ - rvm: ruby-head
6
+
7
+ rvm:
8
+ - 2.0.0
9
+ - 1.9.3
10
+ - 1.9.2
11
+ - ruby-head
12
+
13
+ script: bundle exec rake test
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in usno-transit.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Ryan T. Hosford
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,68 @@
1
+ # Usno::Transit [![Code Climate](https://codeclimate.com/github/rthbound/usno-transit.png)](https://codeclimate.com/github/rthbound/usno-transit)
2
+
3
+ ## Installation
4
+
5
+ Add this line to your application's Gemfile:
6
+
7
+ gem 'usno-transit'
8
+
9
+ And then execute:
10
+
11
+ $ bundle
12
+
13
+ Or install it yourself as:
14
+
15
+ $ gem install usno-transit
16
+
17
+ ## Usage
18
+
19
+ ```ruby
20
+ require "usno/transit"
21
+ USNO::Transit::Sun.new(city: "Birmingham", state: "AL").call.data
22
+ ```
23
+
24
+ the output of the above call will look something like the following
25
+
26
+ ```html
27
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
28
+ <html>
29
+ <head>
30
+ <title>Rise/Set/Transit Table</title>
31
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
32
+ </head>
33
+ <body>
34
+ <pre>
35
+ Sun
36
+
37
+ BIRMINGHAM, ALABAMA
38
+ Location: W 86°48'36.0", N33°31'48.0", 0m
39
+ (Longitude referred to Greenwich meridian)
40
+
41
+ Time Zone: 6h 00m west of Greenwich
42
+
43
+ Date Begin Rise Az. Transit Alt. Set Az. End
44
+ (Zone) Civil Civil
45
+ Twilight Twilight
46
+ h m h m ° h m ° h m ° h m
47
+ 2013 Nov 17 (Sun) 05:54 06:21 113 11:32 37S 16:43 247 17:10
48
+ 2013 Nov 18 (Mon) 05:55 06:22 113 11:33 37S 16:43 247 17:09
49
+ 2013 Nov 19 (Tue) 05:56 06:23 113 11:33 37S 16:42 247 17:09
50
+ 2013 Nov 20 (Wed) 05:57 06:24 113 11:33 37S 16:42 247 17:09
51
+ 2013 Nov 21 (Thu) 05:58 06:25 114 11:33 36S 16:42 246 17:08
52
+
53
+ </pre>
54
+ <p><a href="javascript:history.go(-1)">Back to form</a></p>
55
+ </body>
56
+ </html>
57
+ ```
58
+
59
+
60
+ ## Contributing
61
+
62
+ 1. Fork it
63
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
64
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
65
+ 4. Push to the branch (`git push origin my-new-feature`)
66
+ 5. Create new Pull Request
67
+
68
+ [![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rthbound/usno-transit/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
data/Rakefile ADDED
@@ -0,0 +1,9 @@
1
+ require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ Rake::TestTask.new do |t|
5
+ t.pattern = 'test/**/*_test.rb'
6
+ t.libs.push 'test'
7
+ end
8
+
9
+ task :default => :test
@@ -0,0 +1,82 @@
1
+ require "pay_dirt"
2
+ require_relative "transit/version"
3
+ require_relative "transit/us_request"
4
+
5
+ module USNO
6
+ module Transit
7
+ BODIES = {
8
+ "Sun" => 10, "Moon" => 11, "Mercury" => 1, "Venus" => 2,"Jupiter" => 5,
9
+ "Mars" => 4, "Saturn" => 6, "Uranus" => 7, "Neptune" => 8, "Pluto" => 9,
10
+ "Achernar" => -1, "Adhara" => -2, "Aldebaran" => -3, "Altair" => -4,
11
+ "Antares" => -5, "Arcturus" => -6, "Betelgeuse" => -7, "Canopus" => -8,
12
+ "Capella" => -9, "Deneb" => -10, "Fomalhaut" => -11, "Hadar" => -12,
13
+ "Mimosa" => -13, "Polaris" => -14, "Pollux" => -15, "Procyon" => -16,
14
+ "Regulus" => -17, "Rigel" => -18, "RigilKentaurus" => -19, "Vega" => -22,
15
+ "Sirius" => -20, "Spica" => -21,
16
+ }
17
+
18
+ class View < PayDirt::Base
19
+ def initialize(options = {})
20
+ options = {
21
+ request_class: USNO::Transit::USRequest,
22
+ object: USNO::Transit::BODIES.fetch(self.class.name.split("::")[-1]) {
23
+ raise "Celestial object not recognized"
24
+ },
25
+ state: "Alabama",#USNO::Transit::STATES.fetch(options[:state]) {
26
+ #raise "US state not recognized"
27
+ #},
28
+ z_meters: 0,
29
+ date: Time.now,
30
+ days: 5,
31
+ }.merge(options)
32
+
33
+ load_options(:city, :state, options)
34
+ end
35
+
36
+ def call
37
+ result(true, @request_class.new({
38
+ obj: @object,
39
+ city: @city,
40
+ state: @state,
41
+ z_meters: @z_meters,
42
+ date: @date,
43
+ days: @days
44
+ }).call.data)
45
+
46
+ end
47
+ end
48
+
49
+ class Sun < View;end
50
+ class Moon < View;end
51
+ class Mercury < View;end
52
+ class Venus < View;end
53
+ class Mars < View;end
54
+ class Jupiter < View;end
55
+ class Saturn < View;end
56
+ class Uranus < View;end
57
+ class Neptune < View;end
58
+ class Pluto < View;end
59
+ class Achernar < View;end
60
+ class Adhara < View;end
61
+ class Aldebaran < View;end
62
+ class Altair < View;end
63
+ class Antares < View;end
64
+ class Arcturus < View;end
65
+ class Betelgeuse < View;end
66
+ class Canopus < View;end
67
+ class Capella < View;end
68
+ class Deneb < View;end
69
+ class Fomalhaut < View;end
70
+ class Hadar < View;end
71
+ class Mimosa < View;end
72
+ class Polaris < View;end
73
+ class Pollux < View;end
74
+ class Procyon < View;end
75
+ class Regulus < View;end
76
+ class Rigel < View;end
77
+ class RigilKentaurus < View;end
78
+ class Sirius < View;end
79
+ class Spica < View;end
80
+ class Vega < View;end
81
+ end
82
+ end
@@ -0,0 +1,12 @@
1
+ module USNO
2
+ module Transit
3
+ class Client
4
+ attr_accessor :konstants
5
+
6
+ def initialize
7
+ @konstants = []
8
+ USNO::Transit::BODIES.each { |k,v| @konstants << instance_eval("class #{k}; def initialize() #{v} end; end") }
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,64 @@
1
+ require "uri"
2
+ require "net/http"
3
+
4
+ module USNO
5
+ module Transit
6
+ class USRequest < PayDirt::Base
7
+ def initialize(options = {})
8
+ options = {
9
+ z_meters: 0,
10
+ days: 5,
11
+ date: Time.now,
12
+ uri: URI.parse("http://aa.usno.navy.mil/cgi-bin/aa_mrst2.pl")
13
+ }.merge(options)
14
+
15
+ load_options(:city, :state, :days, :date, :obj, options)
16
+ end
17
+
18
+ def call
19
+ return result(true, request_response.body)
20
+ end
21
+
22
+ private
23
+ def request_response
24
+ response = Net::HTTP.start(@uri.host) do |http|
25
+ request = Net::HTTP::Post.new(@uri.path)
26
+
27
+ http_headers.map { |k, v| request[k] = v }
28
+ request.body = request_body
29
+
30
+ http.request request
31
+ end
32
+ end
33
+
34
+ def start_date
35
+ @date.strftime("xxy=%Y&xxm=%m&xxd=%d")
36
+ end
37
+
38
+ def place
39
+ "st=#{@state}&place=#{@city}&hh1=#{@z_meters}"
40
+ end
41
+
42
+ def request_body
43
+ %W{
44
+ FFX=1
45
+ ID=AA
46
+ #{start_date}
47
+ rep=#{@days}
48
+ obj=#{@obj}
49
+ #{place}
50
+ ZZZ=END
51
+ }.join("&")
52
+ end
53
+
54
+ def http_headers
55
+ {
56
+ "Accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
57
+ "Accept-Language" => "en-US,en;q=0.5",
58
+ "Accept-Encoding" => "gzip, deflate",
59
+ "Referer" => "http://aa.usno.navy.mil/data/docs/mrst.php"
60
+ }
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,6 @@
1
+ module USNO
2
+ module Transit
3
+ class Vega < View
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,5 @@
1
+ module Usno
2
+ module Transit
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
@@ -0,0 +1,11 @@
1
+ require 'coveralls'
2
+ Coveralls.wear!
3
+
4
+ require "minitest/autorun"
5
+
6
+ # The gem
7
+ $: << File.dirname(__FILE__) + "/../lib"
8
+ $: << File.dirname(__FILE__)
9
+
10
+ require "usno/transit"
11
+ require "usno/transit/us_request"
@@ -0,0 +1,34 @@
1
+ require 'test_helper'
2
+
3
+ describe USNO::Transit::USRequest do
4
+ before do
5
+ @subject = USNO::Transit::USRequest
6
+ @params = {
7
+ city: "Birmingham",
8
+ state: "Alabama",
9
+ count: 3,
10
+ date: Time.now,
11
+ z_meters: 0,
12
+ obj: "4"
13
+ }
14
+ end
15
+
16
+ describe "as a class" do
17
+ it "initializes properly" do
18
+ @subject.new(@params).must_respond_to :call
19
+ end
20
+
21
+ it "errors when initialized without required dependencies" do
22
+ -> { @subject.new(@params.reject { |k| k.to_s == 'city' }) }.must_raise RuntimeError
23
+ -> { @subject.new(@params.reject { |k| k.to_s == 'state' }) }.must_raise RuntimeError
24
+ end
25
+ end
26
+
27
+ describe "as an instance" do
28
+ it "executes successfully" do
29
+ result = @subject.new(@params).call
30
+ result.successful?.must_equal true
31
+ result.must_be_kind_of PayDirt::Result
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,31 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'usno/transit/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "usno-transit"
8
+ spec.version = Usno::Transit::VERSION
9
+ spec.authors = ["Ryan T. Hosford"]
10
+ spec.email = ["tad.hosford@gmail.com"]
11
+ spec.description = %q{Consumes USNO resources to return times of rise, set,
12
+ and transit for the major solar system bodies and selected bright stars.
13
+ }
14
+ spec.summary = %q{Consumes USNO resources to return times of rise, set,
15
+ and transit for the major solar system bodies and selected bright stars.
16
+ }
17
+ spec.homepage = ""
18
+ spec.license = "MIT"
19
+
20
+ spec.files = `git ls-files`.split($/)
21
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
22
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
23
+ spec.require_paths = ["lib"]
24
+
25
+ spec.add_development_dependency "bundler", "~> 1.3"
26
+ spec.add_development_dependency "minitest"
27
+ spec.add_development_dependency "coveralls"
28
+ spec.add_development_dependency "rake"
29
+ spec.add_development_dependency "pry"
30
+ spec.add_runtime_dependency "pay_dirt"
31
+ end
metadata ADDED
@@ -0,0 +1,146 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: usno-transit
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Ryan T. Hosford
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-11-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: minitest
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: coveralls
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry
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'
83
+ - !ruby/object:Gem::Dependency
84
+ name: pay_dirt
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ description: "Consumes USNO resources to return times of rise, set,\n and transit
98
+ for the major solar system bodies and selected bright stars.\n "
99
+ email:
100
+ - tad.hosford@gmail.com
101
+ executables: []
102
+ extensions: []
103
+ extra_rdoc_files: []
104
+ files:
105
+ - .gitignore
106
+ - .travis.yml
107
+ - Gemfile
108
+ - LICENSE.txt
109
+ - README.md
110
+ - Rakefile
111
+ - lib/usno/transit.rb
112
+ - lib/usno/transit/client.rb
113
+ - lib/usno/transit/us_request.rb
114
+ - lib/usno/transit/vega.rb
115
+ - lib/usno/transit/version.rb
116
+ - test/test_helper.rb
117
+ - test/unit/usno/transit/us_request_test.rb
118
+ - usno-transit.gemspec
119
+ homepage: ''
120
+ licenses:
121
+ - MIT
122
+ metadata: {}
123
+ post_install_message:
124
+ rdoc_options: []
125
+ require_paths:
126
+ - lib
127
+ required_ruby_version: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ required_rubygems_version: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - '>='
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
137
+ requirements: []
138
+ rubyforge_project:
139
+ rubygems_version: 2.0.3
140
+ signing_key:
141
+ specification_version: 4
142
+ summary: Consumes USNO resources to return times of rise, set, and transit for the
143
+ major solar system bodies and selected bright stars.
144
+ test_files:
145
+ - test/test_helper.rb
146
+ - test/unit/usno/transit/us_request_test.rb