locotimezone 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bd7dc723d1a198a388a711383691f9629a46ae0d
4
- data.tar.gz: d501c8461f8d85e4fc4db8808c188b55edff8de5
3
+ metadata.gz: 337171fec57c496eedd9e382daeba4613d28d119
4
+ data.tar.gz: 5e2f61e63b6e3cc818a781fe5f29fce5b7542043
5
5
  SHA512:
6
- metadata.gz: f897687fbc608439471c68bd9cde30d95b0acd477a1ea67f02a5a397ab35ad609c2becd826f81fe9a8ba7e528bd3b78fe4ede60736f8acadadea4c000986c6b8
7
- data.tar.gz: a25779c2d79993c22e645cde4bbd11fb3c0f18f53ba00840e585e2cb8b12b4818eeb1613a3952cbe72b64579c871b50e1dff5ceef5dbce248486beacbc993159
6
+ metadata.gz: 37ac2f7f62e90c0b9d27426e0f6cbbfcec54904e33f4f3005aaef66105ed17ca9bf003e4987eca89643e783c34b55932107a05d14aba8945c45278a6b8249517
7
+ data.tar.gz: 5e07f8f7c83cc98d304a74ae92fe50d62e45444c68f0108b02af12db93f6305609a906dd57c5a9111a7e42016c95b35a093de8b630122470037254f2ff14020e
data/.gitignore CHANGED
@@ -9,3 +9,4 @@
9
9
  /spec/reports/
10
10
  /tmp/
11
11
  /rails_locotimezone
12
+ memory
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
data/README.md CHANGED
@@ -1,12 +1,10 @@
1
- [![Code Triagers Badge](https://www.codetriage.com/apmiller108/locotimezone/badges/users.svg)](https://www.codetriage.com/apmiller108/locotimezone)
2
-
3
1
  [![Build Status](https://travis-ci.org/apmiller108/locotimezone.svg?branch=active-model-integration)](https://travis-ci.org/apmiller108/locotimezone)
4
2
 
5
3
  # Locotimezone
6
4
  Transform a street address into geoloction and timezone data. Essentially, this
7
5
  is an adapter for the [Google Maps Time Zone API](https://developers.google.com/maps/documentation/timezone/intro) and the [The Google Maps Geolocation API](https://developers.google.com/maps/documentation/geolocation/intro).
8
6
 
9
- All requests to the Google APIs are done over SSL.
7
+ All requests to the Google APIs are done over HTTPS.
10
8
 
11
9
  ## Installation
12
10
  Add this line to your application's Gemfile:
@@ -146,7 +144,9 @@ Locotimezone.locotime location: { lat: 0, lng: 0 }
146
144
 
147
145
  `Locotimezone.configuration` takes a block where the following can be setup:
148
146
  * `google_api_key`. Create an API key and enable APIs in your [Google
149
- Developer Console](https://console.developers.google.com).
147
+ Developer Console](https://console.developers.google.com). You will also need to enable
148
+ Google Maps Geocoding API and Google Maps Time Zone API. While using an API key is optional,
149
+ it's recommended since you will get larger request quota.
150
150
  * `attributes`. For overriding the default attribute names used for Rails models.
151
151
  The defaults are `:latitude`, `:longitude`, and `:timezone_id`. See example
152
152
  above under [Rails usage](#rails-usage)
data/Rakefile CHANGED
@@ -1,15 +1,11 @@
1
- require "bundler/gem_tasks"
2
- require "rake/testtask"
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
3
 
4
- Rake::TestTask.new(:test) do |t|
5
- t.libs << "test"
6
- t.libs << "lib"
7
- t.test_files = FileList['test/**/*_test.rb']
8
- end
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task default: :spec
9
7
 
10
8
  task :run do
11
9
  exec 'pry -r locotimezone -I ./lib -e '\
12
10
  '"Locotimezone.configure { |c| c.google_api_key = ENV[\'GOOGLE_API_KEY\'] }"'
13
11
  end
14
-
15
- task :default => :test
data/lib/locotimezone.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  require 'locotimezone/version'
2
- require 'locotimezone/loco_time'
2
+ require 'locotimezone/locotime'
3
3
  require 'locotimezone/geolocate'
4
4
  require 'locotimezone/timezone'
5
5
  require 'locotimezone/configuration'
@@ -7,35 +7,29 @@ require 'locotimezone/active_record_helper'
7
7
  require 'locotimezone/railtie' if defined?(Rails)
8
8
 
9
9
  module Locotimezone
10
-
11
10
  class << self
12
11
  attr_accessor :configuration
13
12
  end
14
13
 
15
14
  def self.locotime(options = {})
16
- set_default_configuration
17
- LocoTime.new(
18
- location: options.fetch(:location, nil),
19
- address: options.fetch(:address, nil),
20
- skip: options.fetch(:skip, nil)
21
- ).transform
15
+ set_default_configuration if configuration.nil?
16
+ Locotime.new(location: options.fetch(:location, nil),
17
+ address: options.fetch(:address, nil),
18
+ skip: options.fetch(:skip, nil)).call
22
19
  end
23
20
 
24
21
  def self.configure
25
- self.configuration ||= Configuration.new
22
+ self.configuration ||= Configuration.new
26
23
  yield configuration if block_given?
27
24
  self
28
25
  end
29
26
 
30
27
  def self.reset_configuration
31
28
  self.configuration = Configuration.new
29
+ set_default_configuration
32
30
  end
33
31
 
34
32
  def self.set_default_configuration
35
- if Locotimezone.configuration.nil?
36
- Locotimezone.configure do |config|
37
- config.google_api_key = ''
38
- end
39
- end
33
+ Locotimezone.configure { |config| config.google_api_key = '' }
40
34
  end
41
35
  end
@@ -6,7 +6,7 @@ module Locotimezone
6
6
  @address = address
7
7
  end
8
8
 
9
- def get_geo
9
+ def call
10
10
  response = open(geolocation_query_url) { |f| JSON.parse f.read }
11
11
  rescue OpenURI::HTTPError
12
12
  {}
@@ -14,11 +14,11 @@ module Locotimezone
14
14
  format_results response
15
15
  end
16
16
 
17
- private
17
+ private
18
18
 
19
19
  def geolocation_query_url
20
- 'https://maps.googleapis.com/maps/api/geocode/json' + '?address=' +
21
- address.to_s + '&key=' + Locotimezone.configuration.google_api_key
20
+ "https://maps.googleapis.com/maps/api/geocode/json?address="\
21
+ "#{address}&key=#{Locotimezone.configuration.google_api_key}"
22
22
  end
23
23
 
24
24
  def format_results(response)
@@ -30,8 +30,7 @@ module Locotimezone
30
30
  end
31
31
 
32
32
  def symbolize_keys(response)
33
- response.map { |k,v| [k.to_sym, v] }.to_h
33
+ response.map { |k, v| [k.to_sym, v] }.to_h
34
34
  end
35
-
36
35
  end
37
36
  end
@@ -2,7 +2,7 @@ require 'open-uri'
2
2
  require 'json'
3
3
 
4
4
  module Locotimezone
5
- class LocoTime
5
+ class Locotime
6
6
  attr_reader :skip, :address
7
7
  attr_accessor :location
8
8
 
@@ -12,7 +12,7 @@ module Locotimezone
12
12
  @skip = location ? :location : skip
13
13
  end
14
14
 
15
- def transform
15
+ def call
16
16
  validate_options
17
17
  location_data = get_location unless skip == :location
18
18
  timezone_data = get_timezone unless skip == :timezone
@@ -25,16 +25,16 @@ module Locotimezone
25
25
  if address.nil? && (skip == :timezone || skip.nil?)
26
26
  raise ArgumentError, 'locotimezone is missing address or location.'
27
27
  end
28
- end
28
+ end
29
29
 
30
30
  def get_location
31
- results = Geolocate.new(address).get_geo
31
+ results = Geolocate.new(address).call
32
32
  self.location = results[:location] || {}
33
33
  results
34
34
  end
35
35
 
36
36
  def get_timezone
37
- Timezone.new(location).timezone
37
+ Timezone.new(location).call
38
38
  end
39
39
 
40
40
  def build_hash(location_data, timezone_data)
@@ -6,7 +6,7 @@ module Locotimezone
6
6
  @location = location
7
7
  end
8
8
 
9
- def timezone
9
+ def call
10
10
  return {} if location_invalid?
11
11
  response = open(timezone_query_url) { |f| JSON.parse f.read }
12
12
  rescue OpenURI::HTTPError
@@ -1,3 +1,3 @@
1
1
  module Locotimezone
2
- VERSION = "1.0.1"
2
+ VERSION = '1.0.2'.freeze
3
3
  end
data/locotimezone.gemspec CHANGED
@@ -1,35 +1,37 @@
1
- # coding: utf-8
2
1
  lib = File.expand_path('../lib', __FILE__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
3
  require 'locotimezone/version'
5
4
 
6
5
  Gem::Specification.new do |spec|
7
- spec.name = "locotimezone"
6
+ spec.name = 'locotimezone'
8
7
  spec.version = Locotimezone::VERSION
9
- spec.authors = ["Alex Miller"]
10
- spec.email = ["apmiller108@yahoo.com"]
8
+ spec.authors = ['Alex Miller']
9
+ spec.email = ['apmiller108@yahoo.com']
11
10
 
12
11
  spec.summary = %q{Get timezone and gelocation data for a street address.}
13
12
  spec.description = %q{Transform a street address into geoloction and timezone data.}
14
- spec.homepage = "https://github.com/apmiller108/locotimezone"
15
- spec.license = "MIT"
13
+ spec.homepage = 'https://github.com/apmiller108/locotimezone'
14
+ spec.license = 'MIT'
16
15
  spec.required_ruby_version = '>= 2.2.1'
17
16
 
18
17
  # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
19
18
  # delete this section to allow pushing this gem to any host.
20
19
  if spec.respond_to?(:metadata)
21
- spec.metadata['allowed_push_host'] = "https://rubygems.org"
20
+ spec.metadata['allowed_push_host'] = 'https://rubygems.org'
22
21
  else
23
- raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
22
+ raise 'RubyGems 2.0 or newer is required to protect against public gem pushes.'
24
23
  end
25
24
 
26
25
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
27
- spec.bindir = "bin"
26
+ spec.bindir = 'bin'
28
27
  spec.executables = ['locotimezone']
29
- spec.require_paths = ["lib"]
28
+ spec.require_paths = ['lib']
30
29
 
31
- spec.add_development_dependency "bundler", "~> 1.11"
32
- spec.add_development_dependency "rake", "~> 10.0"
33
- spec.add_development_dependency "minitest", "~> 5.0"
34
- spec.add_development_dependency "pry", "~> 0.10.4"
30
+ spec.add_development_dependency 'activerecord', '~> 5.1', '>= 5.1.3'
31
+ spec.add_development_dependency 'bundler', '~> 1.11'
32
+ spec.add_development_dependency 'pry', '~> 0.10.4'
33
+ spec.add_development_dependency 'rake', '~> 10.0'
34
+ spec.add_development_dependency 'rspec', '~> 3.6'
35
+ spec.add_development_dependency 'sqlite3', '~> 1.3', '>= 1.3.11'
36
+ spec.add_development_dependency 'webmock', '~> 3.0', '>= 3.0.1'
35
37
  end
metadata CHANGED
@@ -1,15 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: locotimezone
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Miller
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-17 00:00:00.000000000 Z
11
+ date: 2017-08-20 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activerecord
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '5.1'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 5.1.3
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '5.1'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 5.1.3
13
33
  - !ruby/object:Gem::Dependency
14
34
  name: bundler
15
35
  requirement: !ruby/object:Gem::Requirement
@@ -24,6 +44,20 @@ dependencies:
24
44
  - - "~>"
25
45
  - !ruby/object:Gem::Version
26
46
  version: '1.11'
47
+ - !ruby/object:Gem::Dependency
48
+ name: pry
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: 0.10.4
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: 0.10.4
27
61
  - !ruby/object:Gem::Dependency
28
62
  name: rake
29
63
  requirement: !ruby/object:Gem::Requirement
@@ -39,33 +73,59 @@ dependencies:
39
73
  - !ruby/object:Gem::Version
40
74
  version: '10.0'
41
75
  - !ruby/object:Gem::Dependency
42
- name: minitest
76
+ name: rspec
43
77
  requirement: !ruby/object:Gem::Requirement
44
78
  requirements:
45
79
  - - "~>"
46
80
  - !ruby/object:Gem::Version
47
- version: '5.0'
81
+ version: '3.6'
48
82
  type: :development
49
83
  prerelease: false
50
84
  version_requirements: !ruby/object:Gem::Requirement
51
85
  requirements:
52
86
  - - "~>"
53
87
  - !ruby/object:Gem::Version
54
- version: '5.0'
88
+ version: '3.6'
55
89
  - !ruby/object:Gem::Dependency
56
- name: pry
90
+ name: sqlite3
57
91
  requirement: !ruby/object:Gem::Requirement
58
92
  requirements:
59
93
  - - "~>"
60
94
  - !ruby/object:Gem::Version
61
- version: 0.10.4
95
+ version: '1.3'
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: 1.3.11
62
99
  type: :development
63
100
  prerelease: false
64
101
  version_requirements: !ruby/object:Gem::Requirement
65
102
  requirements:
66
103
  - - "~>"
67
104
  - !ruby/object:Gem::Version
68
- version: 0.10.4
105
+ version: '1.3'
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: 1.3.11
109
+ - !ruby/object:Gem::Dependency
110
+ name: webmock
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - "~>"
114
+ - !ruby/object:Gem::Version
115
+ version: '3.0'
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: 3.0.1
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - "~>"
124
+ - !ruby/object:Gem::Version
125
+ version: '3.0'
126
+ - - ">="
127
+ - !ruby/object:Gem::Version
128
+ version: 3.0.1
69
129
  description: Transform a street address into geoloction and timezone data.
70
130
  email:
71
131
  - apmiller108@yahoo.com
@@ -75,6 +135,7 @@ extensions: []
75
135
  extra_rdoc_files: []
76
136
  files:
77
137
  - ".gitignore"
138
+ - ".rspec"
78
139
  - ".travis.yml"
79
140
  - Gemfile
80
141
  - LICENSE.txt
@@ -87,7 +148,7 @@ files:
87
148
  - lib/locotimezone/active_record_helper.rb
88
149
  - lib/locotimezone/configuration.rb
89
150
  - lib/locotimezone/geolocate.rb
90
- - lib/locotimezone/loco_time.rb
151
+ - lib/locotimezone/locotime.rb
91
152
  - lib/locotimezone/railtie.rb
92
153
  - lib/locotimezone/timezone.rb
93
154
  - lib/locotimezone/version.rb
@@ -113,7 +174,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
113
174
  version: '0'
114
175
  requirements: []
115
176
  rubyforge_project:
116
- rubygems_version: 2.6.11
177
+ rubygems_version: 2.5.1
117
178
  signing_key:
118
179
  specification_version: 4
119
180
  summary: Get timezone and gelocation data for a street address.