lib/restful_resource/base.rb in restful_resource-0.8.9 vs lib/restful_resource/base.rb in restful_resource-0.8.10
- old
+ new
@@ -1,48 +1,44 @@
module RestfulResource
class Base < OpenObject
extend RestfulResource::Associations
- def self.http=(http)
- @http = http
- end
+ def self.configure(base_url: nil, username: nil, password: nil)
+ @base_url = URI.parse(base_url)
- def self.http
- @http ||= RestfulResource::HttpClient.new(authorization: superclass.base_authorization)
- end
+ auth = nil
- def self.http_authorization(user, password)
- @base_authorization = RestfulResource::Authorization.http_authorization(user, password)
- end
+ if (username.present? && password.present?)
+ auth = RestfulResource::Authorization.http_authorization(username, password)
+ end
- def self.base_url=(url)
- @base_url = URI.parse(url)
+ @http = RestfulResource::HttpClient.new(authorization: auth)
end
def self.resource_path(url)
@resource_path = url
end
def self.find(id, params={})
- response = superclass.http.get(member_url(id, params))
+ response = http.get(member_url(id, params))
self.new(parse_json(response.body))
end
def self.where(params={})
- response = superclass.http.get(collection_url(params))
+ response = http.get(collection_url(params))
self.paginate_response(response)
end
def self.get(params={})
- response = superclass.http.get(collection_url(params))
+ response = http.get(collection_url(params))
RestfulResource::OpenObject.new(parse_json(response.body))
end
def self.put(id, data: {}, **params)
url = member_url(id, params)
- response = superclass.http.put(url, data: data)
+ response = http.put(url, data: data)
self.new(parse_json(response.body))
end
def self.all
self.where
@@ -61,31 +57,34 @@
def as_json(options=nil)
@inner_object.send(:table).as_json(options)
end
protected
- def self.base_url
- raise BaseUrlMissing.new if @base_url.nil?
-
- @base_url
+ def self.http
+ @http || superclass.http
end
- def self.base_authorization
- @base_authorization
+ def self.base_url
+ result = @base_url
+ if result.nil? && superclass.respond_to?(:base_url)
+ result = superclass.base_url
+ end
+ raise "Base url missing" if result.nil?
+ result
end
private
def self.merge_url_paths(uri, *paths)
uri.merge(paths.compact.join('/')).to_s
end
def self.member_url(id, params)
- url = merge_url_paths(superclass.base_url, @resource_path, id, @action_prefix)
+ url = merge_url_paths(base_url, @resource_path, id, @action_prefix)
replace_parameters(url, params)
end
def self.collection_url(params)
- url = merge_url_paths(superclass.base_url, @resource_path, @action_prefix)
+ url = merge_url_paths(base_url, @resource_path, @action_prefix)
replace_parameters(url, params)
end
def self.new_collection(json)
json.map do |element|