rest_area 2.0.1 → 2.1.0

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
  SHA1:
3
- metadata.gz: eb28d86bdd602208f1527f32af1b11dc054972cf
4
- data.tar.gz: a5f330b83c1324289d45d4750e1b91523b3ea7fb
3
+ metadata.gz: b7ddacb4e8cc560d42e798fa02371c760c259e5f
4
+ data.tar.gz: 3b1a92684187bdd3846c48bbdb67651b6114d9f2
5
5
  SHA512:
6
- metadata.gz: 63b603f71211945f94190d49e946a74b5f3beef224d54c9186e4a8342e7a21178d74be9a4ed744020ad1cda57823c4d1c24fa1d713d118d15e8549298d6daf8a
7
- data.tar.gz: e8c21ec3753a9494f1cf36787a46a20f2780247471ea32ff8d15f8f1815025a247a4c30af04259ef1bf272fc89586075da95ebfa7624ed9b3b8e8e109dbc9846
6
+ metadata.gz: ecf738c6d571330ac91a4a1cf26e185a793a3ac46880054b68e6ea0335245d54cc292fafbb4f98406cd08cc6cd497a2378fce7cee0b6b1471844efe6967f6cdd
7
+ data.tar.gz: 66d189e4ca9163789a9f394e31d573746878a71e156b03a2bbd0b1ff0e8f85ec69a768713fca968655f33848ff2d4e27f778e455eaeafd85bd17d628601baf50
@@ -0,0 +1,24 @@
1
+ module GetsKlass
2
+ extend ActiveSupport::Concern
3
+
4
+ included do
5
+ before_filter :get_klass
6
+ end
7
+
8
+ def get_klass
9
+ rescue_uninitialized_constant do
10
+ @klass = params[:klass].classify.constantize
11
+ end
12
+ test_class(@klass)
13
+
14
+ @roots = ActionController::Base.helpers.sanitize(params[:klass]).pluralize
15
+ @root = @roots.singularize
16
+ end
17
+
18
+ def test_class(klass)
19
+ if klass.nil? || !RestArea.class_whitelist.include?(klass)
20
+ raise ActionController::RoutingError.new("Resource Does Not Exist")
21
+ end
22
+ end
23
+
24
+ end
@@ -1,4 +1,15 @@
1
1
  module RestArea
2
- class ApplicationController < ActionController::Base
2
+ class ApplicationController < ::ApplicationController
3
+
4
+ private
5
+
6
+ def rescue_uninitialized_constant
7
+ yield
8
+ rescue NameError => e
9
+ unless e.message =~ /uninitialized constant/
10
+ throw e
11
+ end
12
+ end
3
13
  end
14
+
4
15
  end
@@ -0,0 +1,36 @@
1
+ module RestArea
2
+ class MessageController < ApplicationController
3
+ include GetsKlass
4
+ before_filter :get_message, :set_message_class, :set_message_serializer
5
+
6
+ def get
7
+ if @message_serializer
8
+ render json: @klass.find(params[:id]).send(@message).all, each_serializer: @message_serializer, root:@message
9
+ elsif @message_class
10
+ render json: { @message => @klass.find(params[:id]).send(@message).all }.to_json(root:false)
11
+ else
12
+ raise NotImplementedError
13
+ end
14
+ end
15
+
16
+ private
17
+
18
+ def get_message
19
+ @message = params[:message]
20
+ end
21
+
22
+ def set_message_class
23
+ rescue_uninitialized_constant do
24
+ @message_class = @message.classify.constantize
25
+ end
26
+ test_class(@message_class) if @message_class
27
+ end
28
+
29
+ def set_message_serializer
30
+ return unless @message_class
31
+ rescue_uninitialized_constant do
32
+ @message_serializer = ( '::' + @message.classify + "Serializer" ).constantize
33
+ end
34
+ end
35
+ end
36
+ end
@@ -1,7 +1,8 @@
1
1
  module RestArea
2
2
  class RestController < ApplicationController
3
3
  skip_before_filter :verify_authenticity_token
4
- before_filter :get_class, :set_class_serializer
4
+ include GetsKlass
5
+ before_filter :set_class_serializer
5
6
 
6
7
  # GET
7
8
  def index
@@ -64,22 +65,10 @@ module RestArea
64
65
  def set_class_serializer
65
66
  @serializer = ( '::' + @klass.to_s + "Serializer" ).constantize
66
67
  rescue NameError => e
67
- if e.message =~ /uninitialized constant/
68
- @serializer = false
69
- else
68
+ unless e.message =~ /uninitialized constant/
70
69
  throw e
71
70
  end
72
71
  end
73
72
 
74
- def get_class
75
- @klass = params[:klass].singularize.camelize.constantize
76
- unless RestArea.class_whitelist.include? @klass
77
- raise ActionController::RoutingError.new("Resource Does Not Exist")
78
- end
79
-
80
- @roots = ActionController::Base.helpers.sanitize(params[:klass]).pluralize
81
- @root = @roots.singularize
82
- end
83
-
84
73
  end
85
74
  end
data/config/routes.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  RestArea::Engine.routes.draw do
2
2
  get '/:klass', :to => "rest#index"
3
3
  get '/:klass/:id', :to => "rest#show"
4
+ get '/:klass/:id/:message', :to => 'message#get'
4
5
  post '/:klass', :to => "rest#create"
5
6
  put '/:klass/:id', :to => "rest#update"
6
7
  delete '/:klass/:id', :to => "rest#delete"
@@ -1,3 +1,3 @@
1
1
  module RestArea
2
- VERSION = "2.0.1"
2
+ VERSION = "2.1.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rest_area
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Benjamin Guest
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-27 00:00:00.000000000 Z
11
+ date: 2014-09-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -93,7 +93,9 @@ files:
93
93
  - Rakefile
94
94
  - app/assets/javascripts/rest_area/application.js
95
95
  - app/assets/stylesheets/rest_area/application.css
96
+ - app/controllers/concerns/gets_klass.rb
96
97
  - app/controllers/rest_area/application_controller.rb
98
+ - app/controllers/rest_area/message_controller.rb
97
99
  - app/controllers/rest_area/rest_controller.rb
98
100
  - app/helpers/rest_area/application_helper.rb
99
101
  - app/views/layouts/rest_area/application.html.erb