Class: Slk::Services::UserLookup

Inherits:
Object
  • Object
show all
Defined in:
lib/slk/services/user_lookup.rb

Overview

Consolidated service for user name resolution Provides ID → name and name → ID lookups with caching

Instance Method Summary collapse

Constructor Details

#initialize(cache_store:, workspace:, api_client: nil, on_debug: nil) ⇒ UserLookup

Returns a new instance of UserLookup.



8
9
10
11
12
13
# File 'lib/slk/services/user_lookup.rb', line 8

def initialize(cache_store:, workspace:, api_client: nil, on_debug: nil)
  @cache = cache_store
  @api = api_client
  @workspace = workspace
  @on_debug = on_debug
end

Instance Method Details

#find_id_by_name(name) ⇒ String?

Find user ID by display name (reverse lookup)

Parameters:

  • name (String)

    Display name to search for

Returns:

  • (String, nil)

    User ID or nil if not found



46
47
48
49
50
51
52
53
# File 'lib/slk/services/user_lookup.rb', line 46

def find_id_by_name(name)
  return nil if name.to_s.empty?

  cached = @cache.get_user_id_by_name(@workspace.name, name)
  return cached if cached

  fetch_id_by_name(name)
end

#resolve_name(user_id) ⇒ String?

Resolve user ID to display name (most common use case)

Parameters:

  • user_id (String)

    Slack user ID (e.g., “U123ABC”)

Returns:

  • (String, nil)

    Display name or nil if not found



18
19
20
21
22
23
24
25
# File 'lib/slk/services/user_lookup.rb', line 18

def resolve_name(user_id)
  return nil if user_id.to_s.empty?

  cached = @cache.get_user(@workspace.name, user_id)
  return cached if cached

  fetch_and_cache_name(user_id)
end

#resolve_name_or_bot(user_id) ⇒ String?

Resolve user ID to display name, handling bots

Parameters:

  • user_id (String)

    Slack user or bot ID

Returns:

  • (String, nil)

    Display name or nil if not found



30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/slk/services/user_lookup.rb', line 30

def resolve_name_or_bot(user_id)
  return nil if user_id.to_s.empty?

  cached = @cache.get_user(@workspace.name, user_id)
  return cached if cached

  if user_id.start_with?('B')
    fetch_and_cache_bot_name(user_id)
  else
    fetch_and_cache_name(user_id)
  end
end