windsor 0.0.2 → 0.0.3a
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|