upframework 0.2.0 → 0.2.1

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
  SHA256:
3
- metadata.gz: 01aa46c287d2a52c8fb32619543e90f984269b7186ad4f358665a84428618b4e
4
- data.tar.gz: 9c310448029653953ee6fb7cda77ff9da622fd2e6e711db9eed4d4038bed1504
3
+ metadata.gz: b5dc4e38225f1091ec9ededb3e0403156c9806a95e0b23c22c03169a030fda1b
4
+ data.tar.gz: 68be508da24fb695aea2029b0ac78cf0dfb5408ee3d8c3997fb67caf921a7698
5
5
  SHA512:
6
- metadata.gz: e0abf86d1dda28bda9e7224307af334f2a26c5e7da4065ca749b4fa6fccead7518a173e7e9cc4b7c17d6e08be0cc3589e866d49238f6b767cbc4118e80cc0783
7
- data.tar.gz: 919879cab48a3800d1bacf8040a69d4961366cef98699362a28a407f4a34d1a89ff9160efcea3063f284711fafc28aa6a0ce5d64a6c86674e150e74ce12af250
6
+ metadata.gz: dc9e6fc1fa2df5b5f710a755bf5814e787d06f16c5792fcefaa8339940bdd73dc50eb72e25ca73ee7a2710085ce2472c65f15be4b89dcef13fdce09b61db6aae
7
+ data.tar.gz: 43d03176e6695273b2216b214d5730f59de656b19dba481fd44e1eb2da78216397db2e9dfeeb032bcb07a729d0ffdd788420080cb0f8720d9de25132344a93c6
@@ -0,0 +1,30 @@
1
+ module Upframework
2
+ module ApiExtensions
3
+ extend ::ActiveSupport::Concern
4
+
5
+ included do
6
+ include ::DeviseTokenAuth::Concerns::SetUserByToken
7
+ include ::Upframework::ErrorHandler
8
+ include ::Upframework::TransformParamKeys
9
+ include ::Upframework::ServiceEndpoint
10
+ include ::Upframework::RenderExtensions
11
+
12
+ # need to skip this on non-resource controller
13
+ # > skip_authorize_resource
14
+ authorize_resource unless: :devise_controller?
15
+
16
+ rescue_from CanCan::AccessDenied do |exception|
17
+ respond_to do |format|
18
+ format.json { render json: { success: false, error: exception.message }, status: :forbidden }
19
+ format.html { redirect_to main_app.root_url, alert: exception.message }
20
+ end
21
+ end
22
+
23
+ protected
24
+
25
+ def extra_params
26
+ [] # Override in specific controllers for custom params
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,95 @@
1
+ module Upframework
2
+ class ResourcesController < ApplicationController
3
+ before_action :set_base_resource
4
+
5
+ def show
6
+ base_resource
7
+
8
+ yield if block_given?
9
+ render_serialized base_resource
10
+ end
11
+
12
+ def update
13
+ if base_resource.update(base_resource_params)
14
+ yield if block_given?
15
+ render_serialized base_resource
16
+ else
17
+ render_errors base_resource.errors.full_messages
18
+ end
19
+ end
20
+
21
+ def index
22
+ base_resource
23
+
24
+ yield if block_given?
25
+ render_serialized base_resource, includes: params[:includes]
26
+ end
27
+
28
+ def create
29
+ if base_resource.save
30
+
31
+ yield if block_given?
32
+ render_serialized base_resource
33
+ else
34
+ render_errors base_resource.errors.full_messages
35
+ end
36
+ end
37
+
38
+ def destroy
39
+ base_resource.destroy
40
+ head :no_content
41
+ end
42
+
43
+ private
44
+
45
+ def base_resource
46
+ if params[:id]
47
+ instance_variable_get("@#{base_resource_name}")
48
+ else
49
+ instance_variable_get("@#{base_resource_name.pluralize}")
50
+ end
51
+ end
52
+
53
+ def set_base_resource
54
+ data =
55
+ if params[:id]
56
+ base_resource_class.find(params[:id])
57
+ elsif action_name == 'index'
58
+ base_resource_class.accessible_by(current_ability).where(base_resource_params || {})
59
+ elsif action_name == 'create'
60
+ base_resource_class.new(base_resource_params)
61
+ end
62
+
63
+ resource_name = %w[index create].include?(action_name) \
64
+ ? base_resource_name.pluralize \
65
+ : base_resource_name
66
+
67
+ instance_variable_set("@#{resource_name}", data) if data
68
+ end
69
+
70
+ def base_resource_params
71
+ base_name = base_resource_name
72
+
73
+ base_name = base_name.pluralize unless params.key?(base_name)
74
+
75
+ params.fetch(base_name).permit(*permitted_columns)
76
+ end
77
+
78
+ def permitted_columns
79
+ columns = base_resource_class.accessible_fields_by(accessors)
80
+ columns.concat(extra_params)
81
+ end
82
+
83
+ def accessors
84
+ current_user
85
+ end
86
+
87
+ def base_resource_name
88
+ controller_name.singularize
89
+ end
90
+
91
+ def base_resource_class
92
+ base_resource_name.classify.safe_constantize
93
+ end
94
+ end
95
+ end
@@ -1,11 +1,7 @@
1
1
  module Upframework
2
- class SearchesController < Upframework::ApiController
2
+ class SearchesController < ApplicationController
3
3
  skip_authorize_resource
4
4
 
5
- authorize_resource class: :search
6
-
7
- skip_before_action :set_base_resource
8
-
9
5
  def index
10
6
  args = { current_ability: current_ability, current_user: current_user }
11
7
  args.merge!(permitted_params)
@@ -14,7 +14,7 @@ module Upframework
14
14
 
15
15
  self.class.send(:attr_reader, *attributes.keys)
16
16
 
17
- #TODO: Remove. this should be done on the child class.
17
+ #TODO: Remove. This should be handled on the child class.
18
18
  attributes.each do |key, value|
19
19
  instance_variable_set("@#{key}", value)
20
20
  end
data/config/routes.rb CHANGED
@@ -1,2 +1,3 @@
1
1
  Upframework::Engine.routes.draw do
2
+ get "search", to: "searches#index"
2
3
  end
@@ -1,5 +1,9 @@
1
1
  module Upframework
2
2
  class Engine < ::Rails::Engine
3
3
  isolate_namespace Upframework
4
+
5
+ config.to_prepare do
6
+ ApplicationController.include ::Upframework::ApiExtensions
7
+ end
4
8
  end
5
9
  end
@@ -1,3 +1,3 @@
1
1
  module Upframework
2
- VERSION = '0.2.0'
2
+ VERSION = '0.2.1'
3
3
  end
data/lib/upframework.rb CHANGED
@@ -5,4 +5,3 @@ module Upframework
5
5
  end
6
6
 
7
7
  require "upframework/services/routes"
8
- require "upframework/searches/routes"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: upframework
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - jude_cali
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-03 00:00:00.000000000 Z
11
+ date: 2020-04-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -30,6 +30,34 @@ dependencies:
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
32
  version: 6.0.2.1
33
+ - !ruby/object:Gem::Dependency
34
+ name: cancancan
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: 3.1.0
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: 3.1.0
47
+ - !ruby/object:Gem::Dependency
48
+ name: fast_jsonapi
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '1.5'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '1.5'
33
61
  description: Rails framework extensions
34
62
  email:
35
63
  - jcalimbas@fullscale.io
@@ -46,7 +74,8 @@ files:
46
74
  - app/controllers/concerns/upframework/error_handler.rb
47
75
  - app/controllers/concerns/upframework/render_extensions.rb
48
76
  - app/controllers/concerns/upframework/transform_param_keys.rb
49
- - app/controllers/upframework/api_controller.rb
77
+ - app/controllers/upframework/api_extensions.rb
78
+ - app/controllers/upframework/resources_controller.rb
50
79
  - app/controllers/upframework/searches_controller.rb
51
80
  - app/helpers/upframework/application_helper.rb
52
81
  - app/jobs/upframework/application_job.rb
@@ -60,7 +89,6 @@ files:
60
89
  - lib/tasks/upframework_tasks.rake
61
90
  - lib/upframework.rb
62
91
  - lib/upframework/engine.rb
63
- - lib/upframework/searches/routes.rb
64
92
  - lib/upframework/services/routes.rb
65
93
  - lib/upframework/version.rb
66
94
  homepage: https://gitlab.com/disruptors/upframework
@@ -1,33 +0,0 @@
1
- module Upframework
2
- class ApiController < ::ApplicationController
3
- include ::DeviseTokenAuth::Concerns::SetUserByToken
4
- include ::Upframework::ErrorHandler
5
- include ::Upframework::TransformParamKeys
6
- include ::Upframework::CrudEndpoint
7
- include ::Upframework::ServiceEndpoint
8
- include ::Upframework::RenderExtensions
9
-
10
- before_action :authenticate!
11
-
12
- # need to skip this on non-resource controller
13
- # > skip_authorize_resource
14
- authorize_resource
15
-
16
- rescue_from CanCan::AccessDenied do |exception|
17
- respond_to do |format|
18
- format.json { render json: { success: false, error: exception.message }, status: :forbidden }
19
- format.html { redirect_to main_app.root_url, alert: exception.message }
20
- end
21
- end
22
-
23
- def authenticate!
24
- super || authenticate_user!
25
- end
26
-
27
- protected
28
-
29
- def extra_params
30
- [] # Override in specific controllers for custom params
31
- end
32
- end
33
- end
@@ -1,14 +0,0 @@
1
- module Upframework
2
- module Searches
3
- module Routes
4
- def self.load(namespace: nil, **options)
5
- Rails.application.routes.draw do
6
- # Create a route for searches
7
- # ex.
8
- # GET searches
9
- get [namespace, "search"].compact.join("/"), to: "searches#index"
10
- end
11
- end
12
- end
13
- end
14
- end