sixarm_ruby_rails_dark_sky_api 1.0.0

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
+ SHA256:
3
+ metadata.gz: ab399ad73e97aded08d31e2dab21ccec16cdded716f28c7a06b71255169dcd1d
4
+ data.tar.gz: bacd5f908dfbd752d2b9007874164cf6c4ee899b14261eb3f3065acd2f1ca143
5
+ SHA512:
6
+ metadata.gz: e4433630fcbfd48ca4f7723d384d93115931fd35d7cfdb516ab4fc0b62b8c4ae70b2d989d8626c914b74a1f035534460e776fa2817988a0a0e5b2ba5c7ffc68c
7
+ data.tar.gz: 506ff53440d49b7e9ff0a1216f09168b3b1b753ed542c5fbeb75d9c3437e805e4485ee19d45c0a4bf56a19999bad0eea660070bd0a13edd9d842841d32495fcf
checksums.yaml.gz.sig ADDED
Binary file
data.tar.gz.sig ADDED
Binary file
data/Rakefile ADDED
@@ -0,0 +1,10 @@
1
+ # -*- coding: utf-8 -*-
2
+ require "rake"
3
+ require "rake/testtask"
4
+
5
+ task :default => [:test]
6
+
7
+ Rake::TestTask.new(:test) do |t|
8
+ t.libs.push("lib", "test")
9
+ t.pattern = "test/**/*.rb"
10
+ end
@@ -0,0 +1,6 @@
1
+ # -*- coding: utf-8 -*-
2
+ =begin rdoc
3
+ Please see README
4
+ =end
5
+
6
+ require_relative "sixarm_ruby_rails_dark_sky_api/dark_sky/api"
@@ -0,0 +1,43 @@
1
+ require "uri"
2
+ require "faraday"
3
+
4
+ module DarkSky; end
5
+ class DarkSky::API
6
+
7
+ # Get the Dark Sky API credentials via typical Rails appplication credentials.
8
+ #
9
+ # @return [Hash] the credentials
10
+ #
11
+ def self.credentials
12
+ @credentials ||= Rails.application.credentials.env[Rails.env.to_sym][:dark_sky][:api]
13
+ end
14
+
15
+ # Get the Dark Sky API secret key via the typical Rails appplication credentials.
16
+ #
17
+ # @return [String] the secret key
18
+ #
19
+ def self.secret_key
20
+ @secret_key ||= credentials[:secret_key]
21
+ end
22
+
23
+ # Craft a Dark Sky API URL suitable to get a weather forecast for a given place.
24
+ #
25
+ # @param [Decimal] latitude
26
+ # @param [Decimal] longitude
27
+ # @return [URI] URI of the request
28
+ #
29
+ def self.uri(latitude:, longitude:)
30
+ URI("https://api.darksky.net/forecast/#{secret_key}/#{latitude},#{longitude}")
31
+ end
32
+
33
+ # Get a Dark Sky API via Faraday
34
+ #
35
+ # @param [Decimal] latitude
36
+ # @param [Decimal] longitude
37
+ # @return [Faraday::Response] response
38
+ #
39
+ def self.get(latitude:, longitude:)
40
+ Faraday.get uri(latitude: latitude, longitude: longitude)
41
+ end
42
+
43
+ end
@@ -0,0 +1,9 @@
1
+ # -*- coding: utf-8 -*-
2
+ require "minitest/autorun"
3
+ #require "minitest/benchmark" if ENV["BENCH"]
4
+ require "simplecov"
5
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([
6
+ SimpleCov::Formatter::HTMLFormatter,
7
+ ])
8
+ SimpleCov.start
9
+ require "sixarm_ruby_rails_dark_sky_api"
@@ -0,0 +1,91 @@
1
+ # -*- coding: utf-8 -*-
2
+ require "sixarm_ruby_rails_dark_sky_api"
3
+ require "ostruct"
4
+
5
+ HEX_CHARS = ('0'..'9').to_a + ('a'..'f').to_a
6
+ TOKEN_CHARS = ('a'..'z').to_a + ['_']
7
+
8
+ RAILS_ENV = 9.times.map{TOKEN_CHARS.sample}.join
9
+ DARK_SKY_API_SECRET_KEY = 32.times.map{HEX_CHARS.sample}.join
10
+
11
+ # Mock of Rails.env and Rails.application.credentials
12
+ module Rails
13
+
14
+ def self.env
15
+ RAILS_ENV
16
+ end
17
+
18
+ def self.application
19
+ OpenStruct.new(
20
+ credentials: OpenStruct.new(
21
+ env: {
22
+ RAILS_ENV.to_sym => {
23
+ dark_sky: {
24
+ api: {
25
+ secret_key: DARK_SKY_API_SECRET_KEY
26
+ }
27
+ }
28
+ }
29
+ }
30
+ )
31
+ )
32
+ end
33
+
34
+ end
35
+
36
+
37
+ describe DarkSky::API do
38
+
39
+ let(:latitude){
40
+ rand(-90.0...90.0)
41
+ }
42
+
43
+ let(:longitude){
44
+ rand(-180.0...180.0)
45
+ }
46
+
47
+ let(:secret_key){
48
+ DARK_SKY_API_SECRET_KEY
49
+ }
50
+
51
+ describe ".credentials" do
52
+
53
+ it "get credentials" do
54
+ act = DarkSky::API::credentials
55
+ expect(act).must_be_kind_of Hash
56
+ expect(act).must_include :secret_key
57
+ end
58
+
59
+ end
60
+
61
+ describe ".secret_key" do
62
+
63
+ it "get secret key" do
64
+ act = DarkSky::API::secret_key
65
+ expect(act).must_be_kind_of String
66
+ expect(act).must_match(/^[0-9a-f]{32}/)
67
+ end
68
+
69
+ end
70
+
71
+ describe ".uri" do
72
+
73
+ it "get uri" do
74
+ act = DarkSky::API::uri(latitude: latitude, longitude: longitude)
75
+ expect(act).must_be_kind_of URI
76
+ expect(act.to_s).must_equal "https:\/\/api.darksky.net/forecast/#{secret_key}/#{latitude},#{longitude}"
77
+ end
78
+
79
+ end
80
+
81
+ describe ".get" do
82
+
83
+ it "request" do
84
+ act = DarkSky::API::get(latitude: latitude, longitude: longitude)
85
+ expect(act).must_be_kind_of Faraday::Response
86
+ expect(act.status).must_be_kind_of Integer
87
+ end
88
+
89
+ end
90
+
91
+ end
metadata ADDED
@@ -0,0 +1,191 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sixarm_ruby_rails_dark_sky_api
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - SixArm
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIFPDCCAyQCCQDx7Y5LWGuPPzANBgkqhkiG9w0BAQsFADBgMQswCQYDVQQGEwJV
14
+ UzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzEP
15
+ MA0GA1UECgwGU2l4QXJtMRMwEQYDVQQDDApzaXhhcm0uY29tMB4XDTE4MDExMzIy
16
+ NDYyM1oXDTIwMTAwOTIyNDYyM1owYDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNh
17
+ bGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDzANBgNVBAoMBlNpeEFy
18
+ bTETMBEGA1UEAwwKc2l4YXJtLmNvbTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC
19
+ AgoCggIBAMMPPjYWd77gRmOEkMb+1H9+ckIHlA325OkES2g5Y58hIDzZYTGIxjSP
20
+ 3N7uYx5qR8qZvuO4F1McGJ/NES2robjQcV/aIRXD+5RjbokyYYGJlJujm5c/wZme
21
+ Us7pOzQxc8QcogsdInwQ6O9hTQ4zBdOFZt6YBp5y9ycXVIApBnxJHBU3W6Ir1hl6
22
+ 3v6RYBgHFd3g0dCwuBoaYZE5MU/4q91vc48XhioqXdJlaDyw1ZMyvE+loi+8quVg
23
+ bpUadC/QUZukABYCu6rS6fiRLffmMy/Db7d8b1fP+J1i4bL5atF4xz8c1BDwc2x1
24
+ mXJDUBznMSDpmjAkUwDjh+330tYT/VTioqobCMSLfwgJI2Uqrr8H8N9yeSsOMAup
25
+ nJKnJHXeZPEGAr2LBCcok2KUcdugdYq/0C+ec1bU8BHDDoEOM54rhPKKmCJentO6
26
+ KJRoJfu0ovQj1/BvSksUUWdvhy6jzXviyQq44GKEwsJix6sdNKEpndVDQGOvHPg5
27
+ gcakte7KrpK2Udwy+dK+caHJWXOouHPPFfdZWr5U9DkNjtvvQrwQUsMxECoByKYA
28
+ 7wmX3SwzodtuzAPGzxuwkqwy1RtHAfbrFINFBxP35G/f16x2mtwEpqsdS4LE+c0C
29
+ l3eEQ8xIv3ijKUZek87Uxk7/JH76C3/9tSQeFkt0NkEduHOR1H7RAgMBAAEwDQYJ
30
+ KoZIhvcNAQELBQADggIBALIBNN7zUhFldUaXWGwv6032ZwM2Sm1U8VF8YaH71NLg
31
+ FhlcuJ0JLkGlxT0/68acS0EwoqOEgaHyPx8eodjyDv2MuJlWJGXIgHgLD66Tu0VA
32
+ Wt1sgA823Rl35WVSMqiyoxwsrGFwMtayNrrlpdhB8Ny8CMA2NfKyEJkh4+xlE72a
33
+ D8Eu8NFr9Tt5lHWXdZBI5BhzhQxPPxeIuw0wZ3+kiwxRie7K4XhKsOIrPmu2i6QV
34
+ Yl/663wZgWpqrroSnc3PE3lsuTW7quUvayjtqMTU2qrh7i21oB+/Nn+I6gcxYJZb
35
+ UlK+tvsqoM94U6sFTjw9mDt62MLQGrJtHShS+ZZiGmWj1sKreuwGJnCVDoBk15xa
36
+ oqlvfvLAMBCqlfrHhvGUfbIMgzb9uXNmCjzYMsQxuIgF6IMis6Kq02NBAR91HPMe
37
+ 2RoY7CdBHMxW+O0tgS2xoQbOwb+ti1j4MbsWpCqS9Mteck0Z7jZpRRrUDjXU+/7Z
38
+ RmW9HX0oLIoCBDChCcEKG0Ma4IvHUgjv47f5iYpkXuhifiK4xMG/s+T5Euw3Wg9J
39
+ tzpk/VnZXj7Ek/earx+N/Z+Wtnl2xENm5IF8SFPeI1HFa9NH47pqtxF1YKpNIEVc
40
+ 2xa2BNHSePe7tys/2hbmZuyMu8X5ERmovsabSXB3a+YwtJh5c2jhA21wF7986s0q
41
+ -----END CERTIFICATE-----
42
+ date: 2019-04-25 00:00:00.000000000 Z
43
+ dependencies:
44
+ - !ruby/object:Gem::Dependency
45
+ name: faraday
46
+ requirement: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: 0.15.4
51
+ - - "<"
52
+ - !ruby/object:Gem::Version
53
+ version: '2'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 0.15.4
61
+ - - "<"
62
+ - !ruby/object:Gem::Version
63
+ version: '2'
64
+ - !ruby/object:Gem::Dependency
65
+ name: minitest
66
+ requirement: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: 5.11.1
71
+ - - "<"
72
+ - !ruby/object:Gem::Version
73
+ version: '6'
74
+ type: :development
75
+ prerelease: false
76
+ version_requirements: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: 5.11.1
81
+ - - "<"
82
+ - !ruby/object:Gem::Version
83
+ version: '6'
84
+ - !ruby/object:Gem::Dependency
85
+ name: sixarm_ruby_minitest_extensions
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: 1.0.8
91
+ - - "<"
92
+ - !ruby/object:Gem::Version
93
+ version: '2'
94
+ type: :development
95
+ prerelease: false
96
+ version_requirements: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: 1.0.8
101
+ - - "<"
102
+ - !ruby/object:Gem::Version
103
+ version: '2'
104
+ - !ruby/object:Gem::Dependency
105
+ name: rake
106
+ requirement: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: 12.3.0
111
+ - - "<"
112
+ - !ruby/object:Gem::Version
113
+ version: '13'
114
+ type: :development
115
+ prerelease: false
116
+ version_requirements: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ version: 12.3.0
121
+ - - "<"
122
+ - !ruby/object:Gem::Version
123
+ version: '13'
124
+ - !ruby/object:Gem::Dependency
125
+ name: simplecov
126
+ requirement: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: 0.14.1
131
+ - - "<"
132
+ - !ruby/object:Gem::Version
133
+ version: '2'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ version: 0.14.1
141
+ - - "<"
142
+ - !ruby/object:Gem::Version
143
+ version: '2'
144
+ description: Dark Sky API gem to get weather forecasts
145
+ email: sixarm@sixarm.com
146
+ executables: []
147
+ extensions: []
148
+ extra_rdoc_files: []
149
+ files:
150
+ - Rakefile
151
+ - lib/sixarm_ruby_rails_dark_sky_api.rb
152
+ - lib/sixarm_ruby_rails_dark_sky_api/dark_sky/api.rb
153
+ - test/sixarm_ruby_rails_dark_sky_api_test.rb
154
+ - test/sixarm_ruby_rails_dark_sky_api_test/dark_sky/api_test.rb
155
+ homepage: http://sixarm.com/
156
+ licenses:
157
+ - Apache-2.0
158
+ - Artistic-2.0
159
+ - BSD-3-Clause
160
+ - CC-BY-NC-SA-4.0
161
+ - AGPL-3.0
162
+ - EPL-1.0
163
+ - GPL-2.0
164
+ - GPL-3.0
165
+ - LGPL-3.0
166
+ - MIT
167
+ - MPL-2.0
168
+ - Ruby
169
+ metadata: {}
170
+ post_install_message:
171
+ rdoc_options: []
172
+ require_paths:
173
+ - lib
174
+ required_ruby_version: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - ">="
177
+ - !ruby/object:Gem::Version
178
+ version: '2.5'
179
+ required_rubygems_version: !ruby/object:Gem::Requirement
180
+ requirements:
181
+ - - ">="
182
+ - !ruby/object:Gem::Version
183
+ version: '0'
184
+ requirements: []
185
+ rubygems_version: 3.0.3
186
+ signing_key:
187
+ specification_version: 4
188
+ summary: SixArm.com → Ruby → Rails → Dark Sky API
189
+ test_files:
190
+ - test/sixarm_ruby_rails_dark_sky_api_test.rb
191
+ - test/sixarm_ruby_rails_dark_sky_api_test/dark_sky/api_test.rb
metadata.gz.sig ADDED
Binary file