rest_framework 0.2.3 → 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -0
- data/lib/rest_framework/VERSION_STAMP +1 -1
- data/lib/rest_framework/routers.rb +25 -42
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8d9ce4741f59e6f68bfa18bc2e6c11202c91fbe251eeaa5562f8f718e6e8afaa
|
4
|
+
data.tar.gz: 652ad42a8d0bad99e552af9117112df707e67d4c1e6dd2dd983e7925933fcab6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 26036468d40ccc77a203981ba442265ef82c7a991fee800ee3d7925d96d09a696f3db06930e8252c49cf63e86d2aee2fd121a735e5e06609585299ff984d6992
|
7
|
+
data.tar.gz: 3c53d8eed996e380ab3390acfde7a3cef262d38a1355d0016aa6d8129b8e329c99003c0181ec1602f5bb1ba8869355e6b1eb0ff366d8b814ff83f6bb3c9cbf4d
|
data/README.md
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
[![Gem Version](https://badge.fury.io/rb/rest_framework.svg)](https://badge.fury.io/rb/rest_framework)
|
4
4
|
[![Build Status](https://travis-ci.org/gregschmit/rails-rest-framework.svg?branch=master)](https://travis-ci.org/gregschmit/rails-rest-framework)
|
5
5
|
[![Coverage Status](https://coveralls.io/repos/github/gregschmit/rails-rest-framework/badge.svg?branch=master)](https://coveralls.io/github/gregschmit/rails-rest-framework?branch=master)
|
6
|
+
[![Maintainability](https://api.codeclimate.com/v1/badges/ba5df7706cb544d78555/maintainability)](https://codeclimate.com/github/gregschmit/rails-rest-framework/maintainability)
|
6
7
|
|
7
8
|
A framework for DRY RESTful APIs in Ruby on Rails.
|
8
9
|
|
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.4
|
@@ -6,7 +6,7 @@ module ActionDispatch::Routing
|
|
6
6
|
# Internal helper to take extra_actions hash and convert to a consistent format.
|
7
7
|
protected def _parse_extra_actions(extra_actions)
|
8
8
|
return (extra_actions || {}).map do |k,v|
|
9
|
-
kwargs = {}
|
9
|
+
kwargs = {action: k}
|
10
10
|
path = k
|
11
11
|
|
12
12
|
# Convert structure to path/methods/kwargs.
|
@@ -25,11 +25,6 @@ module ActionDispatch::Routing
|
|
25
25
|
path = v.delete(:path)
|
26
26
|
end
|
27
27
|
|
28
|
-
# Set the action to be the action key unless it's already defined.
|
29
|
-
if !kwargs[:action]
|
30
|
-
kwargs[:action] = k
|
31
|
-
end
|
32
|
-
|
33
28
|
# Pass any further kwargs to the underlying Rails interface.
|
34
29
|
kwargs = kwargs.merge(v)
|
35
30
|
elsif v.is_a?(Symbol) || v.is_a?(String)
|
@@ -77,6 +72,16 @@ module ActionDispatch::Routing
|
|
77
72
|
return controller
|
78
73
|
end
|
79
74
|
|
75
|
+
# Interal interface for routing extra actions.
|
76
|
+
protected def _route_extra_actions(actions, &block)
|
77
|
+
actions.each do |action_config|
|
78
|
+
action_config[:methods].each do |m|
|
79
|
+
public_send(m, action_config[:path], **action_config[:kwargs])
|
80
|
+
end
|
81
|
+
yield if block_given?
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
80
85
|
# Internal core implementation of the `rest_resource(s)` router, both singular and plural.
|
81
86
|
# @param default_singular [Boolean] the default plurality of the resource if the plurality is
|
82
87
|
# not otherwise defined by the controller
|
@@ -105,28 +110,20 @@ module ActionDispatch::Routing
|
|
105
110
|
end
|
106
111
|
resource_method = singular ? :resource : :resources
|
107
112
|
|
108
|
-
#
|
113
|
+
# Call either `resource` or `resources`, passing appropriate modifiers.
|
109
114
|
skip_undefined = kwargs.delete(:skip_undefined) || true
|
110
115
|
skip = controller_class.get_skip_actions(skip_undefined: skip_undefined)
|
111
116
|
public_send(resource_method, name, except: skip, **kwargs) do
|
112
117
|
if controller_class.respond_to?(:extra_member_actions)
|
113
118
|
member do
|
114
119
|
actions = self._parse_extra_actions(controller_class.extra_member_actions)
|
115
|
-
actions
|
116
|
-
action_config[:methods].each do |m|
|
117
|
-
public_send(m, action_config[:path], **action_config[:kwargs])
|
118
|
-
end
|
119
|
-
end
|
120
|
+
_route_extra_actions(actions)
|
120
121
|
end
|
121
122
|
end
|
122
123
|
|
123
124
|
collection do
|
124
125
|
actions = self._parse_extra_actions(controller_class.extra_actions)
|
125
|
-
actions
|
126
|
-
action_config[:methods].each do |m|
|
127
|
-
public_send(m, action_config[:path], **action_config[:kwargs])
|
128
|
-
end
|
129
|
-
end
|
126
|
+
_route_extra_actions(actions)
|
130
127
|
end
|
131
128
|
|
132
129
|
yield if block_given?
|
@@ -150,6 +147,7 @@ module ActionDispatch::Routing
|
|
150
147
|
# Route a controller without the default resourceful paths.
|
151
148
|
def rest_route(name=nil, **kwargs, &block)
|
152
149
|
controller = kwargs.delete(:controller) || name
|
150
|
+
route_root_to = kwargs.delete(:route_root_to)
|
153
151
|
if controller.is_a?(Class)
|
154
152
|
controller_class = controller
|
155
153
|
else
|
@@ -162,42 +160,27 @@ module ActionDispatch::Routing
|
|
162
160
|
# Route actions using the resourceful router, but skip all builtin actions.
|
163
161
|
actions = self._parse_extra_actions(controller_class.extra_actions)
|
164
162
|
public_send(:resource, name, only: [], **kwargs) do
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
end
|
169
|
-
yield if block_given?
|
163
|
+
# Route a root for this resource.
|
164
|
+
if route_root_to
|
165
|
+
get '', action: route_root_to
|
170
166
|
end
|
167
|
+
|
168
|
+
_route_extra_actions(actions, &block)
|
171
169
|
end
|
172
170
|
end
|
173
171
|
|
174
172
|
# Route a controller's `#root` to '/' in the current scope/namespace, along with other actions.
|
175
|
-
# @param name [Symbol] the snake_case name of the controller
|
176
173
|
def rest_root(name=nil, **kwargs, &block)
|
177
174
|
# By default, use RootController#root.
|
178
175
|
root_action = kwargs.delete(:action) || :root
|
179
176
|
controller = kwargs.delete(:controller) || name || :root
|
180
177
|
|
181
|
-
#
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
controller_class = self._get_controller_class(controller, pluralize: false)
|
186
|
-
actions = self._parse_extra_actions(controller_class.extra_actions)
|
187
|
-
actions.each do |action_config|
|
188
|
-
# Add :action unless kwargs defines it.
|
189
|
-
unless action_config[:kwargs].key?(:action)
|
190
|
-
action_config[:kwargs][:action] = action_config[:path]
|
191
|
-
end
|
178
|
+
# Remove path if name is nil (routing to the root of current namespace).
|
179
|
+
unless name
|
180
|
+
kwargs[:path] = ''
|
181
|
+
end
|
192
182
|
|
193
|
-
|
194
|
-
public_send(
|
195
|
-
m,
|
196
|
-
File.join(name.to_s, action_config[:path].to_s),
|
197
|
-
controller: controller,
|
198
|
-
**action_config[:kwargs],
|
199
|
-
)
|
200
|
-
end
|
183
|
+
return rest_route(controller, route_root_to: root_action, **kwargs) do
|
201
184
|
yield if block_given?
|
202
185
|
end
|
203
186
|
end
|