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