Sha256: aff41eb518cae99fd95837940191a154f69c28add311091954509ae8eca3f880

Contents?: true

Size: 1.18 KB

Versions: 1

Compression:

Stored size: 1.18 KB

Contents

module PagarMe
  class Model < PagarMeObject

	def self.class_name
	  self.name.split('::')[-1]
	end

	def self.url()
	  if self == Model
		raise PagarMeError.new('Cant request for model')
	  end
	  "/#{CGI.escape(class_name.downcase)}s"
	end

	def url
		raise PagarMeError.new("ID invalido", 'id') if !self.id
	  "#{self.class.url}/#{CGI.escape(id.to_s)}"
	end

	def create
	  request = PagarMe::Request.new(self.class.url, 'POST')
	  request.parameters = self.to_hash
	  response = request.run
	  update(response)
	end

	def save
	  request = PagarMe::Request.new(self.url, 'PUT')
	  request.parameters = self.unsaved_values
	  puts request.parameters.inspect
	  response = request.run
	  update(response)
	end

	def self.find_by_id(id)
	  request = PagarMe::Request.new(self.url + "/#{id}", 'GET')
	  response = request.run
	  PagarMe::Util.convert_to_pagarme_object(response)
	end

	def self.all(page = 1, count = 10)
	  raise RequestError.new("Invalid page count") if page < 1 or count < 1

	  request = PagarMe::Request.new(url, 'GET')
	  request.parameters = {
		:page => page,
		:count => count
	  }

	  response = request.run
	  response.map { |obj_response| self.new(obj_response) }
	end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
pagarme-1.3 lib/pagarme/model.rb