Sha256: f16b8fc083a6c311757a8e80b25013ecebeb8d750c69d736f9ddf54dd42cd5f0

Contents?: true

Size: 1.49 KB

Versions: 3

Compression:

Stored size: 1.49 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
	  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.find_by(hash, page = 1, count = 10)
	  raise RequestError.new("Invalid page count") if page < 1 or count < 1
	  
	  request = PagarMe::Request.new(self.url,  'GET')
	  
	  request.parameters = hash
	  request.parameters.merge!({:page => page, :count => count})
	  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

3 entries across 3 versions & 1 rubygems

Version Path
pagarme-1.9.2 lib/pagarme/model.rb
pagarme-1.9.1 lib/pagarme/model.rb
pagarme-1.9 lib/pagarme/model.rb