vianney 0.0.2 → 0.0.3

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: 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: {}