usno-transit 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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