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