vianney 0.0.2 → 0.0.3

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: a6cc08e2c18d197dae46163e13fbe0c1340e5ea430fe6859aacb09ad82ba1515
4
- data.tar.gz: d051893866de39f756a9b28d6502c4c435104b7f5abb0ad5cf4c10fa3a340018
3
+ metadata.gz: e8ecfa6dffce2e39013bfec4c991f4275408e7d894aaed819d377163066b7812
4
+ data.tar.gz: 59659f92eb70b43f1b9529be060cb7c54e250b73c6274575646842f61bee6021
5
5
  SHA512:
6
- metadata.gz: 60f1ee50ef08bdabe7c4b95609f136ef1a831fd07eaf60872b98883140327b091fdac38aad040892f36bcef6c58d0ae49bdeb1237f6254a5ff99c1566a0844a4
7
- data.tar.gz: e5cf850faa4a637205a6da500704c63fd146a223c362ef397b9eef943e830e113a345ac347eb8e896d9c571c07e9123586df855ea3b080866966fc7633c761e5
6
+ metadata.gz: 3c1cdeef95cb2ef29b29f202803a38111ac00dff9b9b86bd4bfd0b9a47dd9a8239bdb7b3d939c0a9706c1ce411a051645c2ce5d8a1f7b6180ec31209106d77a0
7
+ data.tar.gz: 014f98fb15f3b64a3ba5095540a612470605d9a7fbc60a77c298585178e408aaa86e28456f950ca62a9ccab6e7808e6f4e395b4844afb54bd508fb40b232fdf6
@@ -0,0 +1,11 @@
1
+ module Vianney
2
+ module Configuration
3
+ overrides = "#{Rails.root}/lib/vianney/controllers"
4
+ Rails.autoloaders.main.ignore(overrides)
5
+ ActiveSupport::Reloader.to_prepare do
6
+ Dir.glob("#{overrides}/**/*_controller.rb").each do |override|
7
+ load override
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,65 @@
1
+ class ApplicationController < ActionController::Base
2
+ include Vianney::Utils::Debbug
3
+ include Vianney::Utils::Render
4
+ include Vianney::Utils::Query
5
+
6
+ before_action :before_index_action, only: [:index]
7
+ before_action :before_crud_action, only: [:edit, :update, :show, :destroy]
8
+ after_action :after_index_action, only: [:index]
9
+ after_action :after_crud_action, only: [:edit, :update, :show, :destroy]
10
+
11
+ # BEFORE AND AFTER ACTION
12
+ private def before_index_action(*args)
13
+ pagination?()
14
+ model_name = controller_name.classify.constantize
15
+ @resource = model_name.all.pagination(pagination?, get_page, get_per_page).order ordering_params params[:sorts], model_name
16
+
17
+ params.each do |key, value|
18
+
19
+ if model_name.has_attribute?(key) && !value.blank?
20
+ @resource = @resource.send(:filter_by, key, value)
21
+ end
22
+ end
23
+ end
24
+
25
+ private def after_index_action
26
+ end
27
+
28
+ private def before_crud_action
29
+ @resource = controller_name.classify.constantize.find(params[:id])
30
+ end
31
+
32
+ private def after_crud_action
33
+ end
34
+
35
+ # METHODS ACTION
36
+
37
+ def index
38
+ render_response @resource, true if !html_request?
39
+ end
40
+
41
+ def show
42
+ render_response @resource if !html_request?
43
+ end
44
+
45
+ def add
46
+ end
47
+
48
+ def create
49
+ @resource.save
50
+ render_response @resource if !html_request?
51
+ end
52
+
53
+ def edit
54
+ end
55
+
56
+ def update
57
+ @resource.update
58
+ render_response @resource if !html_request?
59
+ end
60
+
61
+ def destroy
62
+ @resource.destroy
63
+ render_response @resource if !html_request?
64
+ end
65
+ end
@@ -0,0 +1,11 @@
1
+ module Vianney
2
+ module Utils
3
+ module Debbug
4
+ def print param
5
+ puts "##################################################################################"
6
+ puts param.inspect
7
+ puts "##################################################################################"
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,48 @@
1
+ module Vianney
2
+ module Utils
3
+ module Render
4
+ def html_request?
5
+ if request.headers['Authorization'].present? && request.headers['Authorization'].include?("Bearer")
6
+ return false
7
+ elsif (request.headers['Content-Type'].present? && request.headers['Content-Type'].include?("application/json"))
8
+ return false
9
+ else
10
+ return true
11
+ end
12
+ end
13
+
14
+ def render_response(resource, is_tree = false)
15
+ is_tree ? render_tree_resource(resource) : render_resource(resource)
16
+ end
17
+
18
+ private def render_resource(resource)
19
+ if resource.errors.empty?
20
+ return render json: resource, status: :ok
21
+ else
22
+ render_error(resource)
23
+ end
24
+ end
25
+
26
+ private def render_tree_resource(resources)
27
+ if pagination?
28
+ return render json: { resources: resources, pagination: pagination_meta(resources) }, status: :ok
29
+ else
30
+ return render json: resources, status: :ok
31
+ end
32
+ end
33
+
34
+ private def render_error(resource)
35
+ return render json: {
36
+ errors: [
37
+ {
38
+ status: :bad_request,
39
+ title: "Bad request",
40
+ detail: resource.errors,
41
+ code: "100"
42
+ }
43
+ ]
44
+ }, status: :bad_request
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,47 @@
1
+ module Vianney
2
+ module Render
3
+
4
+ def html_request?
5
+ if request.headers['Authorization'].present? && request.headers['Authorization'].include?("Bearer")
6
+ return false
7
+ elsif (request.headers['Content-Type'].present? && request.headers['Content-Type'].include?("application/json"))
8
+ return false
9
+ else
10
+ return true
11
+ end
12
+ end
13
+
14
+ def render_response(resource, is_tree = false)
15
+ is_tree ? render_tree_resource(resource) : render_resource(resource)
16
+ end
17
+
18
+ private def render_resource(resource)
19
+ if resource.errors.empty?
20
+ return render json: resource, status: :ok
21
+ else
22
+ render_error(resource)
23
+ end
24
+ end
25
+
26
+ private def render_tree_resource(resources)
27
+ if pagination?
28
+ return render json: { resources: resources, pagination: pagination_meta(resources) }, status: :ok
29
+ else
30
+ return render json: resources, status: :ok
31
+ end
32
+ end
33
+
34
+ private def render_error(resource)
35
+ return render json: {
36
+ errors: [
37
+ {
38
+ status: :bad_request,
39
+ title: "Bad request",
40
+ detail: resource.errors,
41
+ code: "100"
42
+ }
43
+ ]
44
+ }, status: :bad_request
45
+ end
46
+ end
47
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vianney
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Unova
@@ -17,6 +17,11 @@ extensions: []
17
17
  extra_rdoc_files: []
18
18
  files:
19
19
  - lib/vianney.rb
20
+ - lib/vianney/configuration.rb
21
+ - lib/vianney/controllers/application_controller.rb
22
+ - lib/vianney/utils/debbug.rb
23
+ - lib/vianney/utils/query.rb
24
+ - lib/vianney/utils/render.rb
20
25
  homepage:
21
26
  licenses: []
22
27
  metadata: {}