rack-autocrud 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/rack/autocrud.rb +19 -4
- metadata +2 -2
data/lib/rack/autocrud.rb
CHANGED
@@ -74,9 +74,17 @@ module Rack
|
|
74
74
|
return ret unless ret.nil?
|
75
75
|
end
|
76
76
|
|
77
|
+
# Rewind the body
|
77
78
|
request.body.rewind if request.body.respond_to?(:rewind)
|
78
|
-
|
79
|
-
|
79
|
+
|
80
|
+
# Attempt to create the model object
|
81
|
+
obj = nil
|
82
|
+
begin
|
83
|
+
obj = model.create(JSON.parse(request.body.read))
|
84
|
+
halt [402, '{ "error": "Failed to save ' + endpoint + '" }'] unless obj && obj.saved?
|
85
|
+
rescue JSON::ParserError
|
86
|
+
return [ 400, { 'error' => 'Invalid JSON in request body.', 'details' => $! }.to_json ]
|
87
|
+
end
|
80
88
|
|
81
89
|
# Call the post-create hook
|
82
90
|
if self.respond_to?(:post_create)
|
@@ -112,9 +120,16 @@ module Rack
|
|
112
120
|
return ret unless ret.nil?
|
113
121
|
end
|
114
122
|
|
123
|
+
# Rewind the body
|
115
124
|
request.body.rewind if request.body.respond_to?(:rewind)
|
116
|
-
|
117
|
-
|
125
|
+
|
126
|
+
# Attempt to update the model
|
127
|
+
begin
|
128
|
+
saved = model.update(JSON.parse(request.body.read))
|
129
|
+
halt [403, 'Access Denied'] unless saved
|
130
|
+
rescue JSON::ParserError
|
131
|
+
return [ 400, { 'error' => 'Invalid JSON in request body.', 'details' => $! }.to_json ]
|
132
|
+
end
|
118
133
|
|
119
134
|
# Call the post-update hook
|
120
135
|
if self.respond_to?(:post_update)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-autocrud
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-10-
|
12
|
+
date: 2012-10-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|