lib/crowd_pay.rb in crowd_pay-0.0.3 vs lib/crowd_pay.rb in crowd_pay-0.0.4

- old
+ new

@@ -10,16 +10,16 @@ autoload :Investor, 'crowd_pay/investor' autoload :Transaction, 'crowd_pay/transaction' autoload :Verification, 'crowd_pay/verification' module InstanceMethods - def initialize(opts={}) + def initialize(opts = {}) opts.each do |k, v| associations = self.class.class_variable_get(:@@associations) assoc_name = k.downcase.to_sym - if associations.has_key?(assoc_name) + if associations.key?(assoc_name) klass = associations[assoc_name][:class_name].constantize association = v.each_with_object([]) do |data, array| obj = klass.new obj.assign_attributes(data) @@ -32,36 +32,36 @@ end end end def assign_attributes(hash) - self.send :initialize, hash + send :initialize, hash end - def populate_errors error - self.errors.add(:api, (error.has_key?("Message") ? error["Message"] : error)) - if error.has_key?("ModelState") - model_state = error["ModelState"].symbolize_keys! + def populate_errors(error) + errors.add(:api, (error.key?('Message') ? error['Message'] : error)) + if error.key?('ModelState') + model_state = error['ModelState'].symbolize_keys! model_state.each do |k, v| next if k == self.class.name.downcase.to_sym v.each do |e| - self.errors.add(k.to_s.split(".").last, e) + errors.add(k.to_s.split('.').last, e) end end end end end module ClassMethods def create_connection - @@connection = Faraday.new(:url => domain) do |faraday| - # faraday.response :logger if Rails.env.develop? || Rails.env.test? # log requests to STDOUT + @@connection = Faraday.new(url: domain) do |faraday| faraday.adapter Faraday.default_adapter faraday.headers['X-ApiKey'] = api_key faraday.headers['X-PortalKey'] = portal_key faraday.headers['X-ByPassValidation'] = by_pass_validation if by_pass_validation + faraday.headers['Authorization'] = authorization if authorization end end def parse(response) body = JSON.parse response.body @@ -73,27 +73,28 @@ build_object response.status, attributes end end end - def build_object status, attributes - obj = self.new + def build_object(status, attributes) + obj = new + case status when 200, 201 build_hash_object obj, attributes when 409 build_hash_object obj, attributes['ModelObject'] when 400, 405, 404 - #FIX ME: 404 catching is not tested obj.populate_errors attributes else - obj.errors.add(:base, "Unknown Error Status #{status}: crowd_pay.rb#parse method") + obj.errors.add(:base, "Unknown Error Status #{status}: crowd_pay.rb#parse method") end - return obj + + obj end - def build_hash_object obj, attributes + def build_hash_object(obj, attributes) attributes = attributes.each_with_object({}) do |(k, v), hash| hash[k.downcase] = v end obj.assign_attributes(attributes) end @@ -103,23 +104,23 @@ req.url(url) req.headers['Content-Type'] = 'application/json' end end - def post(url, data, cip_by_pass_validation=false) - data = data.to_json unless data.kind_of? String + def post(url, data, cip_by_pass_validation = false) + data = data.to_json unless data.is_a? String connection.post do |req| req.url(url) req.headers['Content-Type'] = 'application/json' req.headers['X-CipByPassValidation'] = 'true' if cip_by_pass_validation req.body = data end end def put(url, data) - data = data.to_json unless data.kind_of? String + data = data.to_json unless data.is_a? String connection.put do |req| req.url(url) req.headers['Content-Type'] = 'application/json' req.body = data @@ -135,27 +136,29 @@ private def register_association(assoc_name, details) hash = class_variable_get(:@@associations) - class_variable_set(:@@associations, hash.merge({assoc_name => details.symbolize_keys}.symbolize_keys)) + class_variable_set(:@@associations, hash.merge({ assoc_name => details.symbolize_keys }.symbolize_keys)) attr_accessor assoc_name.to_sym end end def self.included(base) base.send :include, InstanceMethods base.extend ClassMethods base.class_eval do - cattr_reader :domain, :api_key, :portal_key, :connection, :associations, :by_pass_validation + cattr_reader :domain, :api_key, :portal_key, :connection, :associations, + :by_pass_validation, :authorization class_variable_set :@@domain, ENV['CROWD_PAY_DOMAIN'] class_variable_set :@@api_key, ENV['CROWD_PAY_API_KEY'] class_variable_set :@@portal_key, ENV['CROWD_PAY_PORTAL_KEY'] class_variable_set :@@by_pass_validation, ENV['CROWD_PAY_BY_PASS'] + class_variable_set :@@authorization, ENV['CROWD_PAY_AUTH'] class_variable_set :@@associations, {} - unless(base.class_variable_get(:@@connection)) + unless base.class_variable_get(:@@connection) connection = base.create_connection base.class_variable_set(:@@connection, connection) end end end