windsor 0.0.2 → 0.0.3a
Sign up to get free protection for your applications and to get access to all the features.
- data/app/controllers/windsor_controller.rb +26 -13
- data/lib/windsor/version.rb +1 -1
- metadata +12 -12
@@ -146,7 +146,8 @@ class WindsorController < ApplicationController
|
|
146
146
|
end
|
147
147
|
end
|
148
148
|
|
149
|
-
def get_self_link(object_hash)
|
149
|
+
def get_self_link(object_hash = nil)
|
150
|
+
return request_uri if object_hash.nil?
|
150
151
|
url_conditions = { :controller => get_controller_name, :action => "index" }
|
151
152
|
url_conditions.merge!(:action => "show", :id => object_hash["id"].to_s) unless object_hash["id"].nil?
|
152
153
|
url_for(url_conditions)
|
@@ -156,9 +157,7 @@ class WindsorController < ApplicationController
|
|
156
157
|
model_class.name.underscore.pluralize
|
157
158
|
end
|
158
159
|
|
159
|
-
|
160
|
-
|
161
|
-
def get_pagination_object(total_items, current_page_index)
|
160
|
+
def get_pagination_object(total_items, current_page_index)
|
162
161
|
total_pages = (total_items.to_f / @max_page_size).ceil
|
163
162
|
total_pages = 1 if total_pages == 0 # Collections with no items in them still have 1 page.
|
164
163
|
last_page_index = total_pages - 1
|
@@ -166,23 +165,30 @@ class WindsorController < ApplicationController
|
|
166
165
|
pagination = {
|
167
166
|
:total_items => total_items,
|
168
167
|
:max_page_size => @max_page_size,
|
169
|
-
:
|
170
|
-
|
168
|
+
:links => [
|
169
|
+
{ :rel => 'first', :href => page_link(1) },
|
170
|
+
{ :rel => 'last', :href => page_link(total_pages.to_s)}
|
171
|
+
]
|
171
172
|
}
|
172
173
|
unless current_page_index == last_page_index
|
173
|
-
pagination[:
|
174
|
+
pagination[:links] << { :rel => 'next', :href => page_link((current_page_index + 2)) }
|
174
175
|
end
|
175
176
|
if current_page_index >= 1
|
176
|
-
pagination[:
|
177
|
+
pagination[:links] << { :rel => 'previous', :href => page_link(current_page_index) }
|
177
178
|
end
|
178
179
|
return pagination
|
179
|
-
|
180
|
+
end
|
181
|
+
|
182
|
+
private
|
183
|
+
|
184
|
+
def request_uri
|
185
|
+
request.base_url + request.path
|
186
|
+
end
|
180
187
|
|
181
188
|
def page_link(page_number)
|
182
189
|
query_parameters = request.query_parameters
|
183
|
-
base_url = request.base_url + request.path
|
184
190
|
query_parameters[:page] = page_number
|
185
|
-
return
|
191
|
+
return request_uri + "?" + query_parameters.to_query
|
186
192
|
end
|
187
193
|
|
188
194
|
# Removes extra attributes passed in. Extra attributes is defined as attributes not sent in a GET.
|
@@ -212,8 +218,15 @@ class WindsorController < ApplicationController
|
|
212
218
|
{}
|
213
219
|
end
|
214
220
|
|
221
|
+
def add_link(object, href, rel)
|
222
|
+
unless object['links'].is_a?(Array)
|
223
|
+
object['links'] = []
|
224
|
+
end
|
225
|
+
object['links'] << { 'rel' => rel, 'href' => href }
|
226
|
+
end
|
227
|
+
|
215
228
|
def prepare_representation(object)
|
216
|
-
|
229
|
+
add_link( object, get_self_link(object), 'self' )
|
217
230
|
attributes = enabled_attributes(object)
|
218
231
|
object.each do |key, value|
|
219
232
|
object.delete key unless attributes.include?(key)
|
@@ -240,7 +253,7 @@ class WindsorController < ApplicationController
|
|
240
253
|
object[list_name].map! do |item|
|
241
254
|
prepare_representation(hashity_hash(item))
|
242
255
|
end
|
243
|
-
object
|
256
|
+
add_link( object, get_self_link(object), 'self' )
|
244
257
|
else
|
245
258
|
object = prepare_representation(hashity_hash(object))
|
246
259
|
end
|
data/lib/windsor/version.rb
CHANGED
metadata
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: windsor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.3a
|
5
|
+
prerelease: 5
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Sam DeCesare
|
@@ -10,22 +10,22 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2012-01-25 00:00:00.000000000Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rails
|
17
|
-
requirement: &
|
17
|
+
requirement: &2153358120 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
|
-
- -
|
20
|
+
- - ! '>'
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: 3.1.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *2153358120
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: sqlite3
|
28
|
-
requirement: &
|
28
|
+
requirement: &2153357700 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ! '>='
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *2153357700
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: rspec
|
39
|
-
requirement: &
|
39
|
+
requirement: &2153357240 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ! '>='
|
@@ -44,7 +44,7 @@ dependencies:
|
|
44
44
|
version: '0'
|
45
45
|
type: :development
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *2153357240
|
48
48
|
description: Windsor is a plugin for building RESTful APIs in Rails.
|
49
49
|
email:
|
50
50
|
- sam@samdecesare.com
|
@@ -76,9 +76,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
76
76
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
77
77
|
none: false
|
78
78
|
requirements:
|
79
|
-
- - ! '
|
79
|
+
- - ! '>'
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version:
|
81
|
+
version: 1.3.1
|
82
82
|
requirements: []
|
83
83
|
rubyforge_project:
|
84
84
|
rubygems_version: 1.8.10
|