noaa-weather 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.
Binary file
@@ -0,0 +1,59 @@
1
+ commit 9821b5425f76bed852282937893949ef7047007d
2
+ Author: Joshua Smith <kognate@gmail.com>
3
+ Date: Wed Mar 18 23:45:49 2009 -0400
4
+
5
+ added icon return
6
+
7
+ commit 45979bf0cbfb335a3a95cdf60522dcccc8c7ea27
8
+ Author: Joshua Smith <kognate@gmail.com>
9
+ Date: Wed Mar 18 23:45:39 2009 -0400
10
+
11
+ added icon download and method to return the current icon from NOAA
12
+
13
+ commit 67886568c353c8488f268e609cf89972e83e243c
14
+ Author: Joshua Smith <kognate@gmail.com>
15
+ Date: Wed Mar 18 16:50:19 2009 -0400
16
+
17
+ fixed file caching (still pretty niave)
18
+
19
+ commit 6c5e0f92cb83b271ea50e91cbec8bb50de41b6c7
20
+ Author: Joshua Smith <kognate@gmail.com>
21
+ Date: Wed Mar 18 10:57:06 2009 -0400
22
+
23
+ fixed file based caching and fetching, made calls to private methods for specific stuff (like fetching from noaa)
24
+
25
+ commit c202409a54553295ee8002564e9294fb28bfe18b
26
+ Author: Joshua Smith <kognate@gmail.com>
27
+ Date: Wed Mar 18 10:56:27 2009 -0400
28
+
29
+ added logger
30
+
31
+ commit e96f79f00a757a102fd0cc5c724e924a6768a8d2
32
+ Author: Joshua Smith <kognate@gmail.com>
33
+ Date: Wed Mar 18 10:56:07 2009 -0400
34
+
35
+ changed conditions to actually work
36
+
37
+ commit 6d9b1d79e2171f11c5d956cbb5e1cefdc2f8fdee
38
+ Author: Joshua Smith <kognate@gmail.com>
39
+ Date: Wed Mar 18 10:54:55 2009 -0400
40
+
41
+ missed a name change
42
+
43
+ commit 14e253f305a1e50aaf8ce0dec04d8aaa6064a5b7
44
+ Author: Joshua Smith <kognate@gmail.com>
45
+ Date: Wed Mar 18 10:08:50 2009 -0400
46
+
47
+ renamed all the files to their final name. removed bogus packages
48
+
49
+ commit a0f70d4969d9cbf019bd65bf0c5e360198633305
50
+ Author: Joshua B. Smith <jsmith@dixcom.com>
51
+ Date: Wed Mar 18 10:00:51 2009 -0400
52
+
53
+ refactored the fetch method and added some more behaviors
54
+
55
+ commit 5e37508bcac786de6a78eb12300ebd156b25ae7d
56
+ Author: Joshua B. Smith <jsmith@dixcom.com>
57
+ Date: Wed Mar 18 09:32:47 2009 -0400
58
+
59
+ initial commit
@@ -0,0 +1,8 @@
1
+ History.txt
2
+ Manifest.txt
3
+ README.txt
4
+ Rakefile
5
+ bin/noaa-weather
6
+ lib/noaa-weather.rb
7
+ test/test_noaaweather.rb
8
+ spec/noaa-weather.spec
@@ -0,0 +1,48 @@
1
+ = dixweather
2
+
3
+ * FIX (url)
4
+
5
+ == DESCRIPTION:
6
+
7
+ FIX (describe your package)
8
+
9
+ == FEATURES/PROBLEMS:
10
+
11
+ * FIX (list of features or problems)
12
+
13
+ == SYNOPSIS:
14
+
15
+ FIX (code sample of usage)
16
+
17
+ == REQUIREMENTS:
18
+
19
+ * FIX (list of requirements)
20
+
21
+ == INSTALL:
22
+
23
+ * FIX (sudo gem install, anything else)
24
+
25
+ == LICENSE:
26
+
27
+ (The MIT License)
28
+
29
+ Copyright (c) 2009 FIX
30
+
31
+ Permission is hereby granted, free of charge, to any person obtaining
32
+ a copy of this software and associated documentation files (the
33
+ 'Software'), to deal in the Software without restriction, including
34
+ without limitation the rights to use, copy, modify, merge, publish,
35
+ distribute, sublicense, and/or sell copies of the Software, and to
36
+ permit persons to whom the Software is furnished to do so, subject to
37
+ the following conditions:
38
+
39
+ The above copyright notice and this permission notice shall be
40
+ included in all copies or substantial portions of the Software.
41
+
42
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
43
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
44
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
45
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
46
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
47
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
48
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,21 @@
1
+ # -*- ruby -*-
2
+
3
+ require 'rubygems'
4
+ require 'hoe'
5
+ require './lib/noaa-weather.rb'
6
+ require 'spec/rake/spectask'
7
+
8
+ Hoe.new('noaa-weather', Noaaweather::VERSION) do |p|
9
+ p.rubyforge_name = 'noaa-weather' # if different than lowercase project name
10
+ p.developer('kognate', 'kognate@gmail.com')
11
+ p.extra_deps << ['libxml-ruby']
12
+ end
13
+
14
+ Spec::Rake::SpecTask.new(:spec) do |t|
15
+ t.spec_files = FileList['spec/*.spec']
16
+ end
17
+
18
+ task :default => :spec
19
+
20
+
21
+ # vim: syntax=Ruby
File without changes
@@ -0,0 +1,78 @@
1
+ require 'soap/wsdlDriver'
2
+ require 'logger'
3
+ require 'libxml'
4
+ require 'xml'
5
+
6
+ class Noaaweather
7
+ VERSION = '0.1.0'
8
+ attr_accessor :lattitude,:longitude, :start_time
9
+
10
+ def initialize(site)
11
+
12
+ self.lattitude = 41.190856
13
+ self.longitude = -81.446962
14
+
15
+ @logger = Logger.new(STDOUT)
16
+
17
+ @site = site
18
+
19
+ self.start_time = Time.now()
20
+ @is_cached = false
21
+ end
22
+
23
+ def current_temp
24
+ self.fetch unless @fetched
25
+ @ctemp ||= @doc.find('/dwml/data/parameters/temperature/value')[0].content.to_i
26
+ end
27
+
28
+ def location
29
+ @site.to_s
30
+ end
31
+
32
+ def current_conditions(ashash=false)
33
+
34
+ self.fetch unless @fetched
35
+ _c = @doc.find('/dwml/data/parameters/weather/weather-conditions/value')[0]
36
+ if ashash
37
+ {:coverage => _c['coverage'],:weathertype => _c['weather-type']}
38
+ else
39
+ @ccond ||= sprintf("%s %s",_c['coverage'],_c['weather-type'])
40
+ end
41
+ end
42
+
43
+ def current_icon
44
+ self.fetch unless @fetched
45
+ @cicon ||= @doc.find('/dwml/data/parameters/conditions-icon/icon-link')[0].content
46
+ end
47
+
48
+ def cached?
49
+ @is_cached
50
+ end
51
+
52
+ def fetch
53
+ @doc = fetch_from_noaa
54
+ end
55
+
56
+ private
57
+ def fetch_from_noaa
58
+
59
+ _dat = if File.exists?("/tmp/weatherfile-#{@site}") && (File.ctime("/tmp/weatherfile-#{@site}") > (Time.now - 3600))
60
+ f = open("/tmp/weatherfile-#{@site}")
61
+ f.read()
62
+ else
63
+ @soap ||= SOAP::WSDLDriverFactory.new('http://www.weather.gov/forecasts/xml/DWMLgen/wsdl/ndfdXML.wsdl').create_rpc_driver
64
+ _res = @soap.NDFDgen(self.lattitude,self.longitude,'time-series',self.start_time,nil,{:temp => true,:wx => true, :icons => true })
65
+ cache_to_file(_res)
66
+ _res
67
+ end
68
+ par = XML::Parser.string(_dat)
69
+ @doc = par.parse
70
+ end
71
+
72
+ def cache_to_file(dat)
73
+ f = open("/tmp/weatherfile-#{@site}",'w')
74
+ f.write(dat.to_s)
75
+ f.close()
76
+ end
77
+
78
+ end
@@ -0,0 +1,58 @@
1
+ require 'rubygems'
2
+ require 'lib/noaa-weather'
3
+ describe Noaaweather do
4
+
5
+ before(:each) do
6
+ @w = Noaaweather.new(:ravenna)
7
+ end
8
+
9
+ it "should have lattitude as a float" do
10
+ @w.lattitude.should_not be_nil
11
+ @w.lattitude.should be_an_instance_of(Float)
12
+ end
13
+
14
+ it "should have longitude as a float" do
15
+ @w.longitude.should_not be_nil
16
+ @w.longitude.should be_an_instance_of(Float)
17
+ end
18
+
19
+ it "should give us a string telling us what location it is getting weather for" do
20
+ @w.location.should_not be_nil
21
+ @w.location.should be_an_instance_of(String)
22
+ end
23
+
24
+ it "should report current temperature as a Fixnum" do
25
+ @w.current_temp.should_not be_nil
26
+ @w.current_temp.should be_an_instance_of(Fixnum)
27
+ end
28
+
29
+ it "should report current conditions as a string" do
30
+ @w.current_conditions.should_not be_nil
31
+ @w.current_conditions.should be_an_instance_of(String)
32
+ end
33
+
34
+ it "should report the current conditions as a hash with attributes when passed true" do
35
+ @w.current_conditions(true).should_not be_nil
36
+ @w.current_conditions(true).should be_an_instance_of(Hash)
37
+ @w.current_conditions(true)[:coverage].should_not be_nil
38
+ @w.current_conditions(true)[:weathertype].should_not be_nil
39
+ end
40
+
41
+ it "should report if the data is from a cached store or not" do
42
+ @w.cached?.should satisfy {|x| [true,false].include?(x) }
43
+ end
44
+
45
+ it "should have an attribute of start_time" do
46
+ @w.start_time.should_not be_nil
47
+ end
48
+
49
+ it "should return a weather icon" do
50
+ @w.current_icon.should_not be_nil
51
+ @w.current_icon.should be_an_instance_of(String)
52
+ end
53
+
54
+ it "should have a fetch method that returns greater than 0" do
55
+ @w.should respond_to(:fetch)
56
+ @w.fetch.should_not be_nil
57
+ end
58
+ end
File without changes
metadata ADDED
@@ -0,0 +1,104 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: noaa-weather
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - kognate
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDMDCCAhigAwIBAgIBADANBgkqhkiG9w0BAQUFADA+MRAwDgYDVQQDDAdrb2du
14
+ YXRlMRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJk/IsZAEZFgNjb20w
15
+ HhcNMDkwMzIwMDQ1NzE4WhcNMTAwMzIwMDQ1NzE4WjA+MRAwDgYDVQQDDAdrb2du
16
+ YXRlMRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJk/IsZAEZFgNjb20w
17
+ ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC8oI4JXkYnpAI7t/ET1jDA
18
+ O/DDoW4g+FJ3tUwwfSdAczyEQ6a+jlxqzzNLe40pP8CtJJXEws0zYgcu5hncD/aw
19
+ EPyziCJWjv0EtLMTrQpYcrKMbDo5dXRnkTD1PHGDnmM6dn4X93hK+9HlEX/egLuf
20
+ keM53/xrW6IN5CA7v3hk5XA1V9j2RjC1wBS+narAsTz3XuSHuniFKeSkMgxT+Ru1
21
+ PGRy1lBbo2zU3wRDgrtuQ3GoE5I6mxIwXHaqF3kxA3f2klTK6vWQRGrDpLu/ZQTD
22
+ roGpMTLYHnREQRYaLrrTRS8Uzn6CqYoi1fXni48Lu4feAONezMptI+M9N4XMwq8r
23
+ AgMBAAGjOTA3MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBR/lCkc
24
+ qHTjcZvR0sOqB2wia5UODTANBgkqhkiG9w0BAQUFAAOCAQEAafrKCo4DMT11vuuW
25
+ 1jeuhHIK3+cWIlpJEQPwo/qt4UdAZsoD0SZ9eIJEjv2Lali9F+G317cnVYAAVtiH
26
+ 5ml4EIJy2XiXnZH9VmT8xqNDsUOl6CuReMfFFDvkMAonua3YZIH4jC054vz+fDLk
27
+ xyGOKZqb2cbIjpIvA9/U0ON58OD6+4uY8kqJl/cDCHk/KFGe2M5Ae91BSwkTX9ki
28
+ /pgrFl/t3F7jQhXvDtUJNB1ork+bgQlyq6fZA4VxmO8WAA+jDnAKZPlCAnOumpRf
29
+ azm7jnQwCUz0RR9UPJyiB5+sf4pAzcz24difqcvm0Wo9icq35fUP4bghlBSQxjPa
30
+ M36Zgg==
31
+ -----END CERTIFICATE-----
32
+
33
+ date: 2009-03-20 00:00:00 -04:00
34
+ default_executable:
35
+ dependencies:
36
+ - !ruby/object:Gem::Dependency
37
+ name: libxml-ruby
38
+ type: :runtime
39
+ version_requirement:
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: "0"
45
+ version:
46
+ - !ruby/object:Gem::Dependency
47
+ name: hoe
48
+ type: :development
49
+ version_requirement:
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 1.8.3
55
+ version:
56
+ description: FIX (describe your package)
57
+ email:
58
+ - kognate@gmail.com
59
+ executables:
60
+ - noaa-weather
61
+ extensions: []
62
+
63
+ extra_rdoc_files:
64
+ - History.txt
65
+ - Manifest.txt
66
+ - README.txt
67
+ files:
68
+ - History.txt
69
+ - Manifest.txt
70
+ - README.txt
71
+ - Rakefile
72
+ - bin/noaa-weather
73
+ - lib/noaa-weather.rb
74
+ - test/test_noaaweather.rb
75
+ - spec/noaa-weather.spec
76
+ has_rdoc: true
77
+ homepage: FIX (url)
78
+ post_install_message:
79
+ rdoc_options:
80
+ - --main
81
+ - README.txt
82
+ require_paths:
83
+ - lib
84
+ required_ruby_version: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: "0"
89
+ version:
90
+ required_rubygems_version: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: "0"
95
+ version:
96
+ requirements: []
97
+
98
+ rubyforge_project: noaa-weather
99
+ rubygems_version: 1.3.1
100
+ signing_key:
101
+ specification_version: 2
102
+ summary: FIX (describe your package)
103
+ test_files:
104
+ - test/test_noaaweather.rb
Binary file