module TiendaNube::Resource
Attributes
access_token[RW]
api_url[RW]
api_version[RW]
store_id[RW]
Public Class Methods
base_url()
click to toggle source
# File lib/tienda_nube/resource.rb, line 11 def self.base_url "#{self.api_url}/#{self.api_version}/#{self.store_id}" end
config() { |self| ... }
click to toggle source
# File lib/tienda_nube/resource.rb, line 8 def self.config yield self end
delete(path)
click to toggle source
# File lib/tienda_nube/resource.rb, line 48 def self.delete(path) uri = self.uri(path) request = Net::HTTP::Delete.new uri self.send_request(uri, request) end
get(path, query={})
click to toggle source
# File lib/tienda_nube/resource.rb, line 42 def self.get(path, query={}) uri = self.uri(path) uri.query = URI.encode_www_form(query) unless query.empty? request = Net::HTTP::Get.new uri self.send_request(uri, request) end
post(path, data)
click to toggle source
# File lib/tienda_nube/resource.rb, line 53 def self.post(path, data) uri = self.uri(path) request = Net::HTTP::Post.new uri request.body = data.to_json self.send_request(uri, request) end
put(path, data)
click to toggle source
# File lib/tienda_nube/resource.rb, line 59 def self.put(path, data) uri = self.uri(path) request = Net::HTTP::Put.new uri request.body = data.to_json self.send_request(uri, request) end
send_request(uri, request)
click to toggle source
# File lib/tienda_nube/resource.rb, line 14 def self.send_request(uri, request) request['Authentication'] = "bearer #{self.access_token}" request['Content-Type'] = "application/json" response = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http| http.request request end result = { :status => [response.code, response.message], :headers => response.to_hash, :body => response.body && !response.body.empty? ? JSON.parse(response.body) : nil } if links = response["link"] result[:pages] = links.split(", ").inject({}) do |hash, link| array = link.split("; ") hash[$1] = array[0].gsub(/^<(.*)>$/, '\1') if array[1].match(/rel=\"([a-z]+)\"/) hash end end return result end
uri(path)
click to toggle source
# File lib/tienda_nube/resource.rb, line 35 def self.uri(path) unless (uri=URI(path)).absolute? uri = URI(self.base_url) uri.path = "/#{self.api_version}/#{self.store_id}/#{path}" end return uri end