lib/restful_resource/base.rb in restful_resource-0.0.6 vs lib/restful_resource/base.rb in restful_resource-0.0.7
- old
+ new
@@ -2,24 +2,37 @@
class Base
def self.url=(url)
@url = url
end
- def self.url(params={})
+ def self.processed_url_and_params(params={})
url = @url
- params.keys.each do |key|
- url = url.gsub(':'+key.to_s, params[key].to_s)
+ other_params = params.clone
+ missing_params = []
+
+ url_params = url.scan(/:([A-Za-z][^\/]*)/).flatten
+ url_params.each do |key|
+ value = other_params.delete(key.to_sym)
+ if value.nil?
+ missing_params << key
+ else
+ url = url.gsub(':'+key.to_s, value.to_s)
+ end
end
- url_params = url.scan(/:([A-Za-z][^\/]*)/)
- if url_params.any?
- raise ParameterMissingError.new(url_params)
+ if missing_params.any?
+ raise ParameterMissingError.new(missing_params)
end
- url
+ [url, other_params]
end
+ def self.url(params={})
+ processed_url_and_params(params).first
+ end
+
+
def self.has_one(nested_resource_type)
klass = nested_resource_type.to_s.camelize.safe_constantize
klass = OpenStruct if (klass.nil? || klass.superclass != RestResource)
self.send(:define_method, nested_resource_type) do
@@ -79,10 +92,11 @@
response = RestClient.get("#{url}/search", params: params)
paginate_response(response)
end
def self.all(params = {})
- response = RestClient.get("#{url}", params: params)
+ url, other_params = processed_url_and_params(params)
+ response = RestClient.get("#{url}", params: other_params)
paginate_response(response)
end
def self.get(postfix_url = "", params = {})
response = RestClient.get("#{url}#{postfix_url}", params: params)