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.
@@ -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
- private
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
- :first => page_link(1),
170
- :last => page_link(total_pages.to_s)
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[:next] = page_link((current_page_index + 2))
174
+ pagination[:links] << { :rel => 'next', :href => page_link((current_page_index + 2)) }
174
175
  end
175
176
  if current_page_index >= 1
176
- pagination[:previous] = page_link(current_page_index)
177
+ pagination[:links] << { :rel => 'previous', :href => page_link(current_page_index) }
177
178
  end
178
179
  return pagination
179
- end
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 base_url + "?" + query_parameters.to_query
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
- object.merge!(:self => get_self_link(object))
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[:self] = get_self_link(object)
256
+ add_link( object, get_self_link(object), 'self' )
244
257
  else
245
258
  object = prepare_representation(hashity_hash(object))
246
259
  end
@@ -1,3 +1,3 @@
1
1
  module Windsor
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3a"
3
3
  end
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.2
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: 2011-09-27 00:00:00.000000000Z
13
+ date: 2012-01-25 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails
17
- requirement: &2156447380 !ruby/object:Gem::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: *2156447380
25
+ version_requirements: *2153358120
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: sqlite3
28
- requirement: &2156446960 !ruby/object:Gem::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: *2156446960
36
+ version_requirements: *2153357700
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: rspec
39
- requirement: &2156446500 !ruby/object:Gem::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: *2156446500
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: '0'
81
+ version: 1.3.1
82
82
  requirements: []
83
83
  rubyforge_project:
84
84
  rubygems_version: 1.8.10