Class: YiffSpace::Utils::UserResolvable

Inherits:
Object
  • Object
show all
Defined in:
lib/yiffspace/utils/user_resolvable.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(user, ip_addr, validate: true) ⇒ UserResolvable

Returns a new instance of UserResolvable.

Raises:

  • (ArgumentError)


8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/yiffspace/utils/user_resolvable.rb', line 8

def initialize(user, ip_addr, validate: true)
  if user.is_a?(UserResolvable)
    TraceLogger.warn("UserResolvable", "Unexpectedly received UserResolvable for user argument")
    user = recursive_resolve(user)
  end
  @user = user
  ip_addr = ip_addr.to_s if ip_addr.is_a?(IPAddr)
  @ip_addr = ip_addr
  return unless validate
  raise(ArgumentError, "Expected User for user argument, got #{user.inspect} (#{user.class.name})") unless user.is_a?(YiffSpace.config.user_class)
  raise(ArgumentError, "Expected String for ip_addr argument, got #{ip_addr.inspect} (#{ip_addr.class.name})") unless ip_addr.is_a?(String)
end

Instance Attribute Details

#ip_addrObject (readonly)

Returns the value of attribute ip_addr.



6
7
8
# File 'lib/yiffspace/utils/user_resolvable.rb', line 6

def ip_addr
  @ip_addr
end

#userObject (readonly) Also known as: resolve

Returns the value of attribute user.



6
7
8
# File 'lib/yiffspace/utils/user_resolvable.rb', line 6

def user
  @user
end

Class Method Details

.recursive_resolve(resolvable) ⇒ Object



37
38
39
40
41
# File 'lib/yiffspace/utils/user_resolvable.rb', line 37

def self.recursive_resolve(resolvable)
  result = resolvable
  result = result.resolve while result.is_a?(UserResolvable)
  result
end

Instance Method Details

#==(other) ⇒ Object



43
44
45
46
47
# File 'lib/yiffspace/utils/user_resolvable.rb', line 43

def ==(other)
  return other == user if other.is_a?(YiffSpace.config.user_class)

  other.is_a?(UserResolvable) && user == other.user
end

#===(other) ⇒ Object



49
50
51
# File 'lib/yiffspace/utils/user_resolvable.rb', line 49

def ===(other)
  (other == YiffSpace.config.user_like_class && user.is_a?(YiffSpace.config.user_class)) || super
end

#is_a?(other) ⇒ Boolean

Returns:

  • (Boolean)


53
54
55
# File 'lib/yiffspace/utils/user_resolvable.rb', line 53

def is_a?(other)
  (other == YiffSpace.config.user_like_class && user.is_a?(YiffSpace.config.user_class)) || super
end

#resolvable(ip_addr = nil) ⇒ Object



23
24
25
26
# File 'lib/yiffspace/utils/user_resolvable.rb', line 23

def resolvable(ip_addr = nil)
  @ip_addr = ip_addr if ip_addr.present?
  self
end