rest_api 0.1.1 → 0.1.2

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/README.md CHANGED
@@ -266,13 +266,17 @@ And you have a RESTful url like this:
266
266
 
267
267
  *http://www.myapiurl.com/categories/2/categories*
268
268
 
269
- That allows you to get/post/put/delete the child categories of category 2. But if you try to do:
269
+ That allows you to get/post/put/delete the child categories of category 2. And if you try to do:
270
270
 
271
271
  ```ruby
272
272
  RestApi.request.get_categories_in_categories(2)
273
273
  ```
274
274
 
275
- or
275
+ It will be OK and will make a GET to:
276
+
277
+ *http://www.myapiurl.com/categories/2/categories/*
278
+
279
+ But if you try:
276
280
 
277
281
  ```ruby
278
282
  RestApi.request.get_categories_in_categories(:resources_params => {:categories => 2})
@@ -282,7 +286,7 @@ It will make a GET to:
282
286
 
283
287
  *http://www.myapiurl.com/categories/2/categories/2*
284
288
 
285
- Because the resources params arguments are linked to a resource name defined in the method call.
289
+ Because the resources params arguments are linked to the resource name defined in the method call.
286
290
 
287
291
  You can turn this aroud by defining a request method and mapping the resources like this:
288
292
 
@@ -44,31 +44,32 @@ module RestApi
44
44
  end
45
45
 
46
46
  def insert_resources_params_in_tokens_array(tokens_array, resources_params)
47
- resources_params_hash = {}
48
- tokens_array_copy = Array.new tokens_array #copy so the original remains intact
47
+
48
+ # copy so the original remains intact (because tokens_array is a pointer)
49
+ tokens_array_copy = Array.new tokens_array
50
+ params_insert_positions = Array.new
49
51
 
50
52
  if resources_params.is_a?(Hash)
51
- resources_params_hash = resources_params
53
+ tokens_array_copy.each_with_index do |token, index|
54
+ params_insert_positions << {
55
+ :param => resources_params[token.to_sym],
56
+ :position => (index + 1)
57
+ } if resources_params.has_key? token.to_sym
58
+ end
52
59
  else
53
- tokens_array_copy.each_with_index do |token, index|
54
- resources_params_hash[token.to_sym] = resources_params[index] unless resources_params[index].nil?
60
+ resources_params.each_with_index do |param, index|
61
+ params_insert_positions << {
62
+ :param => param,
63
+ :position => (index + 1)
64
+ } if (index + 1) <= tokens_array.length
55
65
  end
56
66
  end
57
67
 
58
- params_insert_positions = Array.new
59
- tokens_array_copy.each_with_index do |token, index|
60
- params_insert_positions << {
61
- :param => resources_params_hash[token.to_sym],
62
- :position => (index + 1)
63
- } if resources_params_hash.has_key? token.to_sym
64
- end
65
-
66
68
  params_insert_positions.inject(0) do |insert_offset,insert_position_hash|
67
69
  insert_position = insert_position_hash[:position] + insert_offset
68
70
  tokens_array_copy.insert(insert_position, insert_position_hash[:param].to_s)
69
71
  insert_offset + 1
70
72
  end
71
-
72
73
  tokens_array_copy
73
74
  end
74
75
 
@@ -1,3 +1,3 @@
1
1
  module RestApi
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -174,6 +174,27 @@ describe "RestApi::API - url_parser" do
174
174
  tokens_array = ["usuarios", "eventos", "carros", "festas"]
175
175
  RestApi.api::RequestParser.send(:insert_resources_params_in_tokens_array, tokens_array, [1,2,4]).should be == ["usuarios", "1", "eventos", "2", "carros", "4", "festas"]
176
176
  end
177
+
178
+ it "should accept params as an array - resources with same name" do
179
+ tokens_array = ["usuarios", "usuarios"]
180
+ RestApi.api::RequestParser.send(:insert_resources_params_in_tokens_array, tokens_array, [1]).should be == ["usuarios", "1", "usuarios"]
181
+ end
182
+
183
+
184
+ it "should accept params as an array - ignore extra params" do
185
+ tokens_array = ["usuarios", "usuarios"]
186
+ RestApi.api::RequestParser.send(:insert_resources_params_in_tokens_array, tokens_array, [1,5,6,7]).should be == ["usuarios", "1", "usuarios", "5"]
187
+ end
188
+
189
+ it "should accept params as an array - resources with same name case 2" do
190
+ tokens_array = ["usuarios", "usuarios", "usuarios"]
191
+ RestApi.api::RequestParser.send(:insert_resources_params_in_tokens_array, tokens_array, [1]).should be == ["usuarios", "1", "usuarios", "usuarios"]
192
+ end
193
+
194
+ it "should accept params as an array - resources with same name case 3" do
195
+ tokens_array = ["usuarios", "usuarios", "usuarios"]
196
+ RestApi.api::RequestParser.send(:insert_resources_params_in_tokens_array, tokens_array, [1,6]).should be == ["usuarios", "1", "usuarios", "6", "usuarios"]
197
+ end
177
198
  end
178
199
 
179
200
  describe "pluralize_resource" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rest_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: