Module: Legion::Extensions::ServiceNow::UserGroup::Runners::UserGroup

Includes:
Helpers::Lex, Helpers::Client
Included in:
Client
Defined in:
lib/legion/extensions/service_now/user_group/runners/user_group.rb

Instance Method Summary collapse

Methods included from Helpers::Client

#connection, #fetch_oauth2_token, #handle_response

Instance Method Details

#add_group_member(group_sys_id:, user_sys_id:) ⇒ Object



61
62
63
64
65
# File 'lib/legion/extensions/service_now/user_group/runners/user_group.rb', line 61

def add_group_member(group_sys_id:, user_sys_id:, **)
  body = { group: group_sys_id, user: user_sys_id }
  resp = connection(**).post('/api/now/table/sys_user_grmember', body)
  { member: resp.body['result'] }
end

#create_group(name:, description: nil, manager: nil, email: nil) ⇒ Object



29
30
31
32
33
34
35
36
# File 'lib/legion/extensions/service_now/user_group/runners/user_group.rb', line 29

def create_group(name:, description: nil, manager: nil, email: nil, **)
  body = { name: name }
  body[:description] = description if description
  body[:manager]     = manager if manager
  body[:email]       = email if email
  resp = connection(**).post('/api/now/table/sys_user_group', body)
  { group: resp.body['result'] }
end

#delete_group(sys_id:) ⇒ Object



47
48
49
50
# File 'lib/legion/extensions/service_now/user_group/runners/user_group.rb', line 47

def delete_group(sys_id:, **)
  resp = connection(**).delete("/api/now/table/sys_user_group/#{sys_id}")
  { deleted: resp.status == 204, sys_id: sys_id }
end

#get_group(sys_id:) ⇒ Object



18
19
20
21
# File 'lib/legion/extensions/service_now/user_group/runners/user_group.rb', line 18

def get_group(sys_id:, **)
  resp = connection(**).get("/api/now/table/sys_user_group/#{sys_id}")
  { group: resp.body['result'] }
end

#get_group_by_name(name:) ⇒ Object



23
24
25
26
27
# File 'lib/legion/extensions/service_now/user_group/runners/user_group.rb', line 23

def get_group_by_name(name:, **)
  params = { sysparm_query: "name=#{name}", sysparm_limit: 1 }
  resp = connection(**).get('/api/now/table/sys_user_group', params)
  { group: resp.body['result']&.first }
end

#list_group_members(group_sys_id:, sysparm_limit: 100) ⇒ Object



52
53
54
55
56
57
58
59
# File 'lib/legion/extensions/service_now/user_group/runners/user_group.rb', line 52

def list_group_members(group_sys_id:, sysparm_limit: 100, **)
  params = {
    sysparm_query: "group=#{group_sys_id}",
    sysparm_limit: sysparm_limit
  }
  resp = connection(**).get('/api/now/table/sys_user_grmember', params)
  { members: resp.body['result'] }
end

#list_groups(sysparm_limit: 100, sysparm_offset: 0, sysparm_query: nil) ⇒ Object



11
12
13
14
15
16
# File 'lib/legion/extensions/service_now/user_group/runners/user_group.rb', line 11

def list_groups(sysparm_limit: 100, sysparm_offset: 0, sysparm_query: nil, **)
  params = { sysparm_limit: sysparm_limit, sysparm_offset: sysparm_offset }
  params[:sysparm_query] = sysparm_query if sysparm_query
  resp = connection(**).get('/api/now/table/sys_user_group', params)
  { groups: resp.body['result'] }
end

#remove_group_member(membership_sys_id:) ⇒ Object



67
68
69
70
# File 'lib/legion/extensions/service_now/user_group/runners/user_group.rb', line 67

def remove_group_member(membership_sys_id:, **)
  resp = connection(**).delete("/api/now/table/sys_user_grmember/#{membership_sys_id}")
  { deleted: resp.status == 204, sys_id: membership_sys_id }
end

#update_group(sys_id:, name: nil, description: nil, manager: nil) ⇒ Object



38
39
40
41
42
43
44
45
# File 'lib/legion/extensions/service_now/user_group/runners/user_group.rb', line 38

def update_group(sys_id:, name: nil, description: nil, manager: nil, **)
  body = {}
  body[:name]        = name if name
  body[:description] = description if description
  body[:manager]     = manager if manager
  resp = connection(**).patch("/api/now/table/sys_user_group/#{sys_id}", body)
  { group: resp.body['result'] }
end