Module: Legion::Extensions::ServiceNow::User::Runners::User

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

Instance Method Summary collapse

Methods included from Helpers::Client

#connection, #fetch_oauth2_token, #handle_response

Instance Method Details

#create_user(user_name:, first_name: nil, last_name: nil, email: nil, title: nil, department: nil) ⇒ Object



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

def create_user(user_name:, first_name: nil, last_name: nil, email: nil,
                title: nil, department: nil, **)
  body = { user_name: user_name }
  body[:first_name]  = first_name if first_name
  body[:last_name]   = last_name if last_name
  body[:email]       = email if email
  body[:title]       = title if title
  body[:department]  = department if department
  resp = connection(**).post('/api/now/table/sys_user', body)
  { user: resp.body['result'] }
end

#delete_user(sys_id:) ⇒ Object



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

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

#get_user(sys_id:) ⇒ Object



20
21
22
23
# File 'lib/legion/extensions/service_now/user/runners/user.rb', line 20

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

#get_user_by_email(email:) ⇒ Object



31
32
33
34
35
# File 'lib/legion/extensions/service_now/user/runners/user.rb', line 31

def get_user_by_email(email:, **)
  params = { sysparm_query: "email=#{email}", sysparm_limit: 1 }
  resp = connection(**).get('/api/now/table/sys_user', params)
  { user: resp.body['result']&.first }
end

#get_user_by_username(user_name:) ⇒ Object



25
26
27
28
29
# File 'lib/legion/extensions/service_now/user/runners/user.rb', line 25

def get_user_by_username(user_name:, **)
  params = { sysparm_query: "user_name=#{user_name}", sysparm_limit: 1 }
  resp = connection(**).get('/api/now/table/sys_user', params)
  { user: resp.body['result']&.first }
end

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



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

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

#update_user(sys_id:, first_name: nil, last_name: nil, email: nil, title: nil, department: nil, active: nil) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/legion/extensions/service_now/user/runners/user.rb', line 49

def update_user(sys_id:, first_name: nil, last_name: nil, email: nil,
                title: nil, department: nil, active: nil, **)
  body = {}
  body[:first_name]  = first_name if first_name
  body[:last_name]   = last_name if last_name
  body[:email]       = email if email
  body[:title]       = title if title
  body[:department]  = department if department
  body[:active]      = active unless active.nil?
  resp = connection(**).patch("/api/now/table/sys_user/#{sys_id}", body)
  { user: resp.body['result'] }
end