class Centaman::Service::Member
Attributes
email[R]
member_code[R]
Public Class Methods
find(id)
click to toggle source
given primary member id, returns array with primary and associated secondary member records
# File lib/centaman/service/member.rb, line 29 def self.find(id) members = self.find_members_by_id(id) return unless members && members.any? return members if members.detect { |obj| obj.is_primary } find_members_by_id(members[0].primary_member_id) end
find_member(id)
click to toggle source
returns individual member object matching the given id
# File lib/centaman/service/member.rb, line 37 def self.find_member(id) member_array = find(id) || [] member_array.detect { |obj| obj.id == id } end
Private Class Methods
find_members_by_id(id)
click to toggle source
# File lib/centaman/service/member.rb, line 44 def self.find_members_by_id(id) obj = new(member_code: id) obj.objects end
Public Instance Methods
after_init(args)
click to toggle source
# File lib/centaman/service/member.rb, line 7 def after_init(args) @member_code = args.fetch(:member_code, nil).try(:to_i) @email = args.fetch(:email, nil) required_args end
build_object(resp)
click to toggle source
# File lib/centaman/service/member.rb, line 21 def build_object(resp) return build_objects(resp) if resp.respond_to?(:map) return not_found(resp) unless resp.respond_to?(:merge) @build_object ||= object_class.new(resp.merge(additional_hash_to_serialize_after_response)) end
endpoint()
click to toggle source
# File lib/centaman/service/member.rb, line 13 def endpoint member_code ? member_endpoint(:member_code) : member_endpoint(:email) end
object_class()
click to toggle source
# File lib/centaman/service/member.rb, line 17 def object_class Centaman::Object::Member end
Private Instance Methods
args_missing()
click to toggle source
# File lib/centaman/service/member.rb, line 62 def args_missing arg_missing = [member_code, email].compact.empty? end
endpoint_url(key, val)
click to toggle source
# File lib/centaman/service/member.rb, line 54 def endpoint_url(key, val) endpoint_options = { member_code: "/member_services/Member/#{val}", email: "/member_services/Member?email=#{val}" } endpoint_options[key] end
member_endpoint(attr_key)
click to toggle source
# File lib/centaman/service/member.rb, line 49 def member_endpoint(attr_key) attr_val = self.send(attr_key) endpoint_url(attr_key, attr_val) end
not_found(resp={})
click to toggle source
# File lib/centaman/service/member.rb, line 70 def not_found(resp={}) { error: resp.parsed_response || 'Member not found' } end
required_args()
click to toggle source
# File lib/centaman/service/member.rb, line 66 def required_args raise "missing required arguments. #{self.class} must be instantiated with a :member_code or :email" if args_missing end