rhino_project_core 0.20.0.beta.87 → 0.20.0.beta.88

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
  SHA256:
3
- metadata.gz: 2086a5bc5fa1a3845b613f84d271c859e62e42980768ef046f69054a270e6e15
4
- data.tar.gz: 0b66c2cecfb4590c858fc8f87789c7c73e78b4966171befba075d07991843633
3
+ metadata.gz: 1a40a1d4b37eb0bd406af8e4e641de00463d5f686d6de7792196f2c8872a4902
4
+ data.tar.gz: e574ae64748cbda07d20063ec672ff804ffede8061a744f45a173fa2249d303e
5
5
  SHA512:
6
- metadata.gz: 4b1718c518d2cef5ec8278c1ba6b7d8c91386ea75c1bed88d81d75491c8ceba273f88485f0ea39b19cb6fd243159eebdaea6730acd644c0d88541b07dd43d3dd
7
- data.tar.gz: 4ebb8055e81f059a48c974f99e8188b775c54db919cbd4d64ee666f8a1178233a634a9e5b64a2a93d9bd5dfcca68d1c5eafa408923a99ac37af3e6e9b93f93b7
6
+ metadata.gz: f4e120075eb107061f58764312f22c3d1fe907fc834921f66c68889e4044ca677e4596d406f9bc99a20ce1cdb25eff8d3963627a505422856326706752463058
7
+ data.tar.gz: 8baa41117e9a7f71c861de59fc7b49e0bff7bbd43e6c23a7b6aa691e1c9f50cbe5b2b9fc02a64e3499901002ccbc2839951d3c58ef1505984a8107996e2e2aef
data/lib/rhino/engine.rb CHANGED
@@ -12,6 +12,7 @@ require "devise"
12
12
  require "devise_invitable"
13
13
  require "devise_token_auth"
14
14
  require "friendly_id"
15
+ require "geocoder"
15
16
  require "omniauth"
16
17
  require "omniauth-azure-activedirectory-v2"
17
18
  require "omniauth-auth0"
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rhino
4
+ module Sieve
5
+ class Geospatial
6
+ def initialize(app)
7
+ @app = app
8
+ end
9
+
10
+ # geospatial={near: {location: { latitude: 41.2565, longitude: -95.9345 }, max_distance: 10, units: 'km'}}
11
+ # geospatial={near: {location: 'Omaha, NE, US', max_distance: 10, units: 'km'}}
12
+ def resolve(scope, params)
13
+ return @app.resolve(scope, params) unless valid?(params)
14
+
15
+ @app.resolve(
16
+ scope.near(
17
+ @location_params,
18
+ @near_params[:max_distance],
19
+ units: @near_params[:units]
20
+ ), params
21
+ )
22
+ end
23
+
24
+ private
25
+ def valid?(params) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
26
+ @geospatial_params = params[:geospatial]
27
+ return false unless @geospatial_params.is_a?(ActionController::Parameters)
28
+
29
+ @near_params = @geospatial_params[:near]
30
+ return false unless @near_params.is_a?(ActionController::Parameters)
31
+
32
+ @location_params = @near_params[:location]
33
+ if @location_params.is_a?(String)
34
+ @location_params = @near_params[:location]
35
+ elsif @location_params.is_a?(ActionController::Parameters) && @location_params[:latitude].present? && @location_params[:longitude].present?
36
+ @location_params = [@location_params[:latitude], @location_params[:longitude]]
37
+ else
38
+ return false
39
+ end
40
+
41
+ @near_params[:max_distance].present?
42
+ end
43
+ end
44
+ end
45
+ end
data/lib/rhino/sieve.rb CHANGED
@@ -5,6 +5,7 @@ module Rhino
5
5
  extend ActiveSupport::Autoload
6
6
 
7
7
  autoload :Filter
8
+ autoload :Geospatial
8
9
  autoload :Limit
9
10
  autoload :Offset
10
11
  autoload :Order
data/lib/rhino/version.rb CHANGED
@@ -10,7 +10,7 @@ module Rhino
10
10
  MAJOR = 0
11
11
  MINOR = 20
12
12
  TINY = 0
13
- PRE = "beta.87"
13
+ PRE = "beta.88"
14
14
 
15
15
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
16
16
  end
@@ -65,6 +65,8 @@ module Rhino
65
65
  self.sieves = Rhino::SieveStack.new do |sieve|
66
66
  sieve.use Rhino::Sieve::Filter
67
67
 
68
+ sieve.use Rhino::Sieve::Geospatial
69
+
68
70
  sieve.use Rhino::Sieve::Search
69
71
 
70
72
  sieve.use Rhino::Sieve::Order
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rhino_project_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.20.0.beta.87
4
+ version: 0.20.0.beta.88
5
5
  platform: ruby
6
6
  authors:
7
7
  - JP Rosevear
@@ -156,6 +156,20 @@ dependencies:
156
156
  - - '='
157
157
  - !ruby/object:Gem::Version
158
158
  version: 5.3.0
159
+ - !ruby/object:Gem::Dependency
160
+ name: geocoder
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - '='
164
+ - !ruby/object:Gem::Version
165
+ version: 1.8.2
166
+ type: :runtime
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - '='
171
+ - !ruby/object:Gem::Version
172
+ version: 1.8.2
159
173
  - !ruby/object:Gem::Dependency
160
174
  name: js_regex
161
175
  requirement: !ruby/object:Gem::Requirement
@@ -471,6 +485,7 @@ files:
471
485
  - lib/rhino/resource/sieves.rb
472
486
  - lib/rhino/sieve.rb
473
487
  - lib/rhino/sieve/filter.rb
488
+ - lib/rhino/sieve/geospatial.rb
474
489
  - lib/rhino/sieve/helpers.rb
475
490
  - lib/rhino/sieve/limit.rb
476
491
  - lib/rhino/sieve/offset.rb