windsor 0.0.2 → 0.0.3a

Sign up to get free protection for your applications and to get access to all the features.
@@ -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