rhino_project_core 0.20.0.beta.86 → 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: 4b3d71be7179c98d595485a0f75db9673b204ab505de3a252721abad33fd6623
4
- data.tar.gz: 2d1207a1e3609770a85be157d7a16f864d48380a2d6bbc72e90c4187a0fa48a8
3
+ metadata.gz: 1a40a1d4b37eb0bd406af8e4e641de00463d5f686d6de7792196f2c8872a4902
4
+ data.tar.gz: e574ae64748cbda07d20063ec672ff804ffede8061a744f45a173fa2249d303e
5
5
  SHA512:
6
- metadata.gz: cbd57f3008e58966718d1bc9d2283993c94c8c039b6b472471587672387b4d019192a20a2df42199c4485b4de88f3576ac2660823548e6a2b5cb17a5e2bb2486
7
- data.tar.gz: e9967c9bdbac471568cc5afd74502b4dc1dfb95c3c9eb8f21d4433090001d2b0a6910d9939fb1bb024ec525a80cddc3802e1cc83ef249f2ff83f973eadb733c7
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"
@@ -45,7 +45,8 @@ module Rhino
45
45
  end
46
46
 
47
47
  def rhino_policy(policy)
48
- self._policy_class = "rhino/#{policy}_policy".classify.safe_constantize || "#{policy}_policy".classify.safe_constantize
48
+ # Look for local policy first, then look in the rhino namespace
49
+ self._policy_class = "#{policy}_policy".classify.safe_constantize || "rhino/#{policy}_policy".classify.safe_constantize
49
50
 
50
51
  raise "Policy #{policy} not found for #{name}" unless _policy_class
51
52
  end
@@ -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.86"
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,14 +1,14 @@
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.86
4
+ version: 0.20.0.beta.88
5
5
  platform: ruby
6
6
  authors:
7
7
  - JP Rosevear
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-06-22 00:00:00.000000000 Z
11
+ date: 2024-06-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -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