rest_engine 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -14,56 +14,46 @@ module RestEngine
14
14
  options[:offset] = (page - 1) * options[:limit]
15
15
  end
16
16
 
17
- items = @model.all(options)
18
-
19
- respond(:success => true, @resources => items)
17
+ @items = @model.all(options)
20
18
  end
21
19
 
22
20
  def show
23
- item = @model.find(params[:id])
24
- respond(:success => true, @resources => [item])
21
+ @item = @model.find(params[:id])
25
22
  end
26
23
 
27
24
  def destroy
28
- item = @model.find(params[:id])
29
- if item.destroy
30
- respond(:success => true, :message => "Destroyed #{@model_name} #{item.id}")
31
- else
32
- respond(:success => false, :message => "Failed to destroy #{@model_name} #{item.id}")
33
- end
25
+ @item = @model.find(params[:id])
26
+ @success = !!@item.destroy
34
27
  end
35
28
 
36
29
  def create
37
- item = @model.new(request.POST)
38
- if item.save
39
- respond(:success => true, :message => "Created new #{@model_name} #{item.id}", @resources => [item])
40
- else
41
- respond(:success => false, :message => "Failed to create #{@model_name}")
42
- end
30
+ @item = @model.new(request.POST)
31
+ @success = !!@item.save
43
32
  end
44
33
 
45
34
  def update
46
- item = @model.find(params[:id])
47
- if item.update_attributes(request.POST)
48
- respond(:success => true, :message => "Updated #{@model_name} #{item.id}", @resources => [item])
49
- else
50
- respond(:success => false, :message => "Failed to update #{@model_name}")
51
- end
35
+ @item = @model.find(params[:id])
36
+ @success = !!@item.update_attributes(request.POST)
52
37
  end
53
38
 
54
39
  private
55
40
 
56
- def respond data
57
- ActiveRecord::Base.include_root_in_json = false
58
- respond_to do |format|
59
- format.any(:xml, :json) { render(request.format.to_sym => data) }
60
- end
61
- end
62
-
63
41
  def get_model
64
42
  @resources = params[:resources]
65
43
  @model_name = @resources.classify
66
- @model = @model_name.constantize
44
+ if RestEngine.config.model_visible?(@model_name)
45
+ begin
46
+ @model = @model_name.constantize
47
+ rescue NameError
48
+ not_found
49
+ end
50
+ else
51
+ not_found
52
+ end
53
+ end
54
+
55
+ def not_found
56
+ raise ActionController::RoutingError.new('The resources you were looking for do not exist')
67
57
  end
68
58
  end
69
59
  end
@@ -0,0 +1,8 @@
1
+ <%- ActiveRecord::Base.include_root_in_json = false -%>
2
+ <%=
3
+ {
4
+ :success => @success,
5
+ :message => @success ? "Created new #{@resources} #{@item.id}" : "Failed to create #{@resources}",
6
+ @resources => @success ? [@item] : []
7
+ }.to_json.html_safe
8
+ -%>
@@ -0,0 +1,7 @@
1
+ <%=
2
+ {
3
+ :success => @success,
4
+ :message => @success ? "Created new #{@resources} #{@item.id}" : "Failed to create #{@resources}",
5
+ @resources => @success ? [@item] : []
6
+ }.to_xml.html_safe
7
+ -%>
@@ -0,0 +1,7 @@
1
+ <%- ActiveRecord::Base.include_root_in_json = false -%>
2
+ <%=
3
+ {
4
+ :success => @success,
5
+ :message => @success ? "Destroyed #{@resources} #{@item.id}" : "Failed to destroy #{@resources} #{@item.id}"
6
+ }.to_json.html_safe
7
+ -%>
@@ -0,0 +1,6 @@
1
+ <%=
2
+ {
3
+ :success => @success,
4
+ :message => @success ? "Destroyed #{@resources} #{@item.id}" : "Failed to destroy #{@resources} #{@item.id}"
5
+ }.to_xml.html_safe
6
+ -%>
@@ -0,0 +1,7 @@
1
+ <%- ActiveRecord::Base.include_root_in_json = false -%>
2
+ <%=
3
+ {
4
+ :success => true,
5
+ @resources => @items
6
+ }.to_json.html_safe
7
+ -%>
@@ -0,0 +1,6 @@
1
+ <%=
2
+ {
3
+ :success => true,
4
+ @resources => @items
5
+ }.to_xml.html_safe
6
+ -%>
@@ -0,0 +1,7 @@
1
+ <%- ActiveRecord::Base.include_root_in_json = false -%>
2
+ <%=
3
+ {
4
+ :success => true,
5
+ @resources => [@item]
6
+ }.to_json.html_safe
7
+ -%>
@@ -0,0 +1,6 @@
1
+ <%=
2
+ {
3
+ :success => true,
4
+ @resources => [@item]
5
+ }.to_xml.html_safe
6
+ -%>
@@ -0,0 +1,8 @@
1
+ <%- ActiveRecord::Base.include_root_in_json = false -%>
2
+ <%=
3
+ {
4
+ :success => @success,
5
+ :message => @success ? "Updated #{@resources} #{@item.id}" : "Failed to update #{@resources} #{@item.id}",
6
+ @resources => [@item]
7
+ }.to_json.html_safe
8
+ -%>
@@ -0,0 +1,7 @@
1
+ <%=
2
+ {
3
+ :success => @success,
4
+ :message => @success ? "Updated #{@resources} #{@item.id}" : "Failed to update #{@resources} #{@item.id}",
5
+ @resources => [@item]
6
+ }.to_xml.html_safe
7
+ -%>
@@ -0,0 +1,26 @@
1
+ require 'rest_engine'
2
+
3
+ module RestEngine
4
+ class Config
5
+ def initialize config_file
6
+ if File.exists?(config_file)
7
+ @config = YAML.load_file(config_file)
8
+ end
9
+ @config ||= {}
10
+ end
11
+
12
+ def [] key
13
+ @config[key]
14
+ end
15
+
16
+ def model_visible? model
17
+ visible = true
18
+ if self['whitelisted_models']
19
+ visible = self['whitelisted_models'].include?(model)
20
+ elsif self['blacklisted_models']
21
+ visible = !self['blacklisted_models'].include?(model)
22
+ end
23
+ visible
24
+ end
25
+ end
26
+ end
data/lib/rest_engine.rb CHANGED
@@ -1,4 +1,15 @@
1
1
  require 'rest_engine/engine'
2
+ require 'rest_engine/config'
2
3
 
3
4
  module RestEngine
5
+ @@config = nil
6
+
7
+ def self.config
8
+ unless @@config
9
+ config_file = File.join(Rails.root, 'config', 'rest_engine.yml')
10
+ @@config = RestEngine::Config.new(config_file)
11
+ end
12
+
13
+ @@config
14
+ end
4
15
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rest_engine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,12 +9,12 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-07-21 00:00:00.000000000 +10:00
12
+ date: 2011-08-30 00:00:00.000000000 +10:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails
17
- requirement: &2159038320 !ruby/object:Gem::Requirement
17
+ requirement: &2157548340 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ~>
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: 3.0.9
23
23
  type: :development
24
24
  prerelease: false
25
- version_requirements: *2159038320
25
+ version_requirements: *2157548340
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: sqlite3
28
- requirement: &2159037780 !ruby/object:Gem::Requirement
28
+ requirement: &2157547740 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: 1.3.3
34
34
  type: :development
35
35
  prerelease: false
36
- version_requirements: *2159037780
36
+ version_requirements: *2157547740
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: rspec
39
- requirement: &2159037180 !ruby/object:Gem::Requirement
39
+ requirement: &2157547120 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ~>
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: 2.3.0
45
45
  type: :development
46
46
  prerelease: false
47
- version_requirements: *2159037180
47
+ version_requirements: *2157547120
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: rspec-rails
50
- requirement: &2159036660 !ruby/object:Gem::Requirement
50
+ requirement: &2157546460 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ~>
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: 2.3.1
56
56
  type: :development
57
57
  prerelease: false
58
- version_requirements: *2159036660
58
+ version_requirements: *2157546460
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: bundler
61
- requirement: &2159003540 !ruby/object:Gem::Requirement
61
+ requirement: &2157545860 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ~>
@@ -66,10 +66,10 @@ dependencies:
66
66
  version: 1.0.15
67
67
  type: :development
68
68
  prerelease: false
69
- version_requirements: *2159003540
69
+ version_requirements: *2157545860
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: jeweler
72
- requirement: &2159003060 !ruby/object:Gem::Requirement
72
+ requirement: &2157545260 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ~>
@@ -77,10 +77,10 @@ dependencies:
77
77
  version: 1.6.2
78
78
  type: :development
79
79
  prerelease: false
80
- version_requirements: *2159003060
80
+ version_requirements: *2157545260
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: rcov
83
- requirement: &2159002580 !ruby/object:Gem::Requirement
83
+ requirement: &2157544660 !ruby/object:Gem::Requirement
84
84
  none: false
85
85
  requirements:
86
86
  - - ! '>='
@@ -88,10 +88,10 @@ dependencies:
88
88
  version: '0'
89
89
  type: :development
90
90
  prerelease: false
91
- version_requirements: *2159002580
91
+ version_requirements: *2157544660
92
92
  - !ruby/object:Gem::Dependency
93
93
  name: factory_girl
94
- requirement: &2159002100 !ruby/object:Gem::Requirement
94
+ requirement: &2157544060 !ruby/object:Gem::Requirement
95
95
  none: false
96
96
  requirements:
97
97
  - - ~>
@@ -99,7 +99,7 @@ dependencies:
99
99
  version: 1.3.3
100
100
  type: :development
101
101
  prerelease: false
102
- version_requirements: *2159002100
102
+ version_requirements: *2157544060
103
103
  description:
104
104
  email: yehezkielbs@gmail.com
105
105
  executables: []
@@ -110,8 +110,19 @@ extra_rdoc_files:
110
110
  files:
111
111
  - app/controllers/rest_engine/application_controller.rb
112
112
  - app/controllers/rest_engine/main_controller.rb
113
+ - app/views/rest_engine/main/create.json.erb
114
+ - app/views/rest_engine/main/create.xml.erb
115
+ - app/views/rest_engine/main/destroy.json.erb
116
+ - app/views/rest_engine/main/destroy.xml.erb
117
+ - app/views/rest_engine/main/list.json.erb
118
+ - app/views/rest_engine/main/list.xml.erb
119
+ - app/views/rest_engine/main/show.json.erb
120
+ - app/views/rest_engine/main/show.xml.erb
121
+ - app/views/rest_engine/main/update.json.erb
122
+ - app/views/rest_engine/main/update.xml.erb
113
123
  - config/routes.rb
114
124
  - lib/rest_engine.rb
125
+ - lib/rest_engine/config.rb
115
126
  - lib/rest_engine/engine.rb
116
127
  - LICENSE.txt
117
128
  - README.md
@@ -131,7 +142,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
131
142
  version: '0'
132
143
  segments:
133
144
  - 0
134
- hash: 1271305889267693870
145
+ hash: 3600470596728511272
135
146
  required_rubygems_version: !ruby/object:Gem::Requirement
136
147
  none: false
137
148
  requirements: