google_maps_api-core 0.1.1 → 0.2.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: 26132fcccee7ee456f039c402b2aa424acc83c97
4
- data.tar.gz: 7df474089c248627346004d3e0e774c8a084a1ed
3
+ metadata.gz: edb38a4fdc4dc65e2d024791b65c43e441015cf9
4
+ data.tar.gz: 37c3a0a25634e8da7ff2ba3d68df94fdac2908d8
5
5
  SHA512:
6
- metadata.gz: 16472a84de6a124b032944856844dfa03cd5f0d564cfe816e4299de5c28cd3bda802301566b32ec5a0fb09ae9b870d522e0adde683b9f0389bde52cf186ff482
7
- data.tar.gz: 1fa8ecafc4dd5abda88a2d17f7390b1e7e5899b50c0efb2717cf10bc7731129fb362a4ea79611adb65fb10ff4cb97b45d50c2904b79902668da376d4aad411c4
6
+ metadata.gz: b3e559b9837422185c2c882f9a884b72e4f719cf054f2282d75487732b71e12435ab187cff89ac74f9cd2532a51c737fd6cff014fa5065d1c3c304d1a6dfa2fa
7
+ data.tar.gz: b7da242ce0f93e431a8a650c96cde1c4854f9ad9cf849d492d1f33baceadb06883f8d6dffdc964ce59a431c9f254adcd25a66e0690867e3a5a739bbc0e6ce76a
@@ -3,7 +3,10 @@ require "google_maps_api/core/metric"
3
3
  require "google_maps_api/core/duration"
4
4
  require "google_maps_api/core/distance"
5
5
  require "google_maps_api/core/coordinate"
6
+ require "google_maps_api/core/uri_signer"
6
7
 
7
8
  module GoogleMapsAPI
8
- module Core; end
9
+ module Core
10
+ BASE_HOST = "maps.googleapis.com"
11
+ end
9
12
  end
@@ -0,0 +1,28 @@
1
+ require "uri"
2
+ require "base64"
3
+
4
+ class GoogleMapsAPI::Core::URISigner
5
+ def self.sign(uri, client, key, channel = nil)
6
+ uri = URI(URI.encode(uri))
7
+ path = "#{uri.path}?#{uri.query}&client=#{client}"
8
+ path << "&channel=#{channel}" if channel
9
+ URI("#{uri.scheme}://#{uri.host}#{path}&signature=#{signature(path, key)}")
10
+ end
11
+
12
+ private
13
+
14
+ def self.signature(string, key)
15
+ raw_private_key = url_safe_base64_decode(key)
16
+ digest = OpenSSL::Digest.new('sha1')
17
+ raw_signature = OpenSSL::HMAC.digest(digest, raw_private_key, string)
18
+ url_safe_base64_encode(raw_signature)
19
+ end
20
+
21
+ def self.url_safe_base64_decode(base64_string)
22
+ Base64.decode64(base64_string.tr('-_', '+/'))
23
+ end
24
+
25
+ def self.url_safe_base64_encode(raw)
26
+ Base64.encode64(raw).tr('+/', '-_').strip
27
+ end
28
+ end
@@ -1,5 +1,5 @@
1
1
  module GoogleMapsAPI
2
2
  module Core
3
- VERSION = "0.1.1"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
@@ -0,0 +1,13 @@
1
+ require "spec_helper"
2
+
3
+ describe GoogleMapsAPI::Core::URISigner do
4
+ subject { GoogleMapsAPI::Core::URISigner }
5
+
6
+ describe ".sign" do
7
+ it "returns a signed uri" do
8
+ uri = "http://maps.googleapis.com/maps/api/geocode/json?address=1845,AV+IMPERATRIZ+LEOPOLDINA,05305-007&sensor=false&region=br"
9
+ signed_uri = subject.sign(uri, 'a', 'b', 'c').to_s
10
+ expect(signed_uri).to eq("http://maps.googleapis.com/maps/api/geocode/json?address=1845,AV+IMPERATRIZ+LEOPOLDINA,05305-007&sensor=false&region=br&client=a&channel=c&signature=imI9JSO4iz8RGVeJx_EAmccAnPM=")
11
+ end
12
+ end
13
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google_maps_api-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Felipe Zavan
@@ -77,9 +77,11 @@ files:
77
77
  - lib/google_maps_api/core/distance.rb
78
78
  - lib/google_maps_api/core/duration.rb
79
79
  - lib/google_maps_api/core/metric.rb
80
+ - lib/google_maps_api/core/uri_signer.rb
80
81
  - lib/google_maps_api/core/version.rb
81
82
  - spec/google_maps_api/core/coordinate_spec.rb
82
83
  - spec/google_maps_api/core/metric_spec.rb
84
+ - spec/google_maps_api/core/uri_signer_spec.rb
83
85
  - spec/spec_helper.rb
84
86
  homepage: https://github.com/zavan/google_maps_api-core
85
87
  licenses:
@@ -108,4 +110,5 @@ summary: Common stuff used by the google_maps_api gem components.
108
110
  test_files:
109
111
  - spec/google_maps_api/core/coordinate_spec.rb
110
112
  - spec/google_maps_api/core/metric_spec.rb
113
+ - spec/google_maps_api/core/uri_signer_spec.rb
111
114
  - spec/spec_helper.rb