Class: Readiness::Zendesk::Groups

Inherits:
Client
  • Object
show all
Defined in:
lib/support_readiness/zendesk/groups.rb

Overview

Defines the class Groups within the module Readiness::Zendesk.

Author:

  • Jason Colyer

Since:

  • 1.0.0

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Client

auth_error, bad_request_error, convert_actions, convert_conditions, convert_standard_names_to_ids, convert_ticket_form_agent_conditions, convert_ticket_form_brands, convert_ticket_form_end_user_conditions, convert_ticket_form_names_to_ids, convert_view_names_to_ids, convert_view_restrictions, covert_ticket_form_field_ids, create_package!, erb_renderer, handle_request_error, not_found_error, not_processible_error, put_into_archive, recursively_deflate_directory, timestamp_filename, to_clean_json, to_clean_json_with_key, to_hash, to_nearly_clean_json, to_nearly_clean_json_with_key, to_param_string, write_entries

Constructor Details

#initialize(object = {}) ⇒ Groups

Creates a new Readiness::Zendesk::Groups instance

Examples:

require 'support_readiness'
Readiness::Zendesk::Groups.new

Parameters:

Author:

  • Jason Colyer

Since:

  • 1.0.0



24
25
26
27
28
29
30
31
# File 'lib/support_readiness/zendesk/groups.rb', line 24

def initialize(object = {})
  @default = object['default']
  @deleted = object['deleted']
  @description = object['description']
  @id = object['id']
  @is_public = object['is_public']
  @name = object['name']
end

Instance Attribute Details

#defaultObject

Since:

  • 1.0.0



13
14
15
# File 'lib/support_readiness/zendesk/groups.rb', line 13

def default
  @default
end

#deletedObject

Since:

  • 1.0.0



13
14
15
# File 'lib/support_readiness/zendesk/groups.rb', line 13

def deleted
  @deleted
end

#descriptionObject

Since:

  • 1.0.0



13
14
15
# File 'lib/support_readiness/zendesk/groups.rb', line 13

def description
  @description
end

#idObject

Since:

  • 1.0.0



13
14
15
# File 'lib/support_readiness/zendesk/groups.rb', line 13

def id
  @id
end

#is_publicObject

Since:

  • 1.0.0



13
14
15
# File 'lib/support_readiness/zendesk/groups.rb', line 13

def is_public
  @is_public
end

#nameObject

Since:

  • 1.0.0



13
14
15
# File 'lib/support_readiness/zendesk/groups.rb', line 13

def name
  @name
end

Class Method Details

.count(client) ⇒ Hash

Show information on the approximate count of groups.

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
count = Readiness::Zendesk::Groups.count(client)
pp count['value']
# => 102

Parameters:

  • client (Object)

    An instance of Client

Returns:

  • (Hash)

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



75
76
77
78
79
# File 'lib/support_readiness/zendesk/groups.rb', line 75

def self.count(client)
  response = client.connection.get('groups/count')
  handle_request_error(0, 'Zendesk', response.status) unless response.status == 200
  Oj.load(response.body)['count']
end

.create!(client, group) ⇒ Object

Creates a group. Will exit if unsuccessful

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
group = Readiness::Zendesk::Groups.new
group.name = 'My Group'
create = Readiness::Zendesk::Groups.create!(client, group)
pp create.id
# => 122

Parameters:

Returns:

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



182
183
184
185
186
# File 'lib/support_readiness/zendesk/groups.rb', line 182

def self.create!(client, group)
  response = client.connection.post 'groups', to_clean_json_with_key(group, 'group')
  handle_request_error(1, 'Zendesk', response.status, { action: 'Create group', message: Oj.load(response.body)}) unless response.status == 201
  Groups.new(Oj.load(response.body)['group'])
end

.delete!(client, group) ⇒ Boolean

Deletes a group. Will exit if unsuccessful

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
group = Readiness::Zendesk::Groups.find!(client, 122)
delete = Readiness::Zendesk::Groups.delete!(client, group)
pp delete
# => true

Parameters:

Returns:

  • (Boolean)

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



235
236
237
238
239
# File 'lib/support_readiness/zendesk/groups.rb', line 235

def self.delete!(client, group)
  response = client.connection.delete "groups/#{group.id}"
  handle_request_error(1, 'Zendesk', response.status, { action: 'Delete an group', id: group.id, message: Oj.load(response.body)}) unless response.status == 204
  true
end

.find(client, gid) ⇒ Hash

Locates a group within Zendesk. This will not exit on error (except Authentication errors)

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
group = Readiness::Zendesk::Groups.find(client, 211)
pp group.name
# => "DJs"

Parameters:

  • client (Object)

    An instance of Client

  • gid (Integer)

    The group ID to find

Returns:

  • (Hash)

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



100
101
102
103
104
105
106
# File 'lib/support_readiness/zendesk/groups.rb', line 100

def self.find(client, gid)
  response = client.connection.get("groups/#{gid}")
  handle_request_error(0, 'Zendesk', response.status,  { action: 'get', id: gid }) unless response.status == 200
  return Groups.new(Oj.load(response.body)['group']) if response.status == 200

  Oj.load(response.body)
end

.find!(client, gid) ⇒ Hash

Locates a group within Zendesk. This will exit on error

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
group = Readiness::Zendesk::Groups.find!(client, 211)
pp group.name
# => "DJs"

Parameters:

  • client (Object)

    An instance of Client

  • gid (Integer)

    The group ID to find

Returns:

  • (Hash)

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



127
128
129
130
131
# File 'lib/support_readiness/zendesk/groups.rb', line 127

def self.find!(client, gid)
  response = client.connection.get("groups/#{gid}")
  handle_request_error(1, 'Zendesk', response.status, { action: 'Find group', id: gid }) unless response.status == 200
  Groups.new(Oj.load(response.body)['group'])
end

.find_by_name(client, name, cache = nil) ⇒ Object

Locates a group within Zendesk by name. Can utilize a cacheh for quicker results

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
field = Readiness::Zendesk::Groups.find_by_name(client, 'Security')
pp field.id
# => 456

Parameters:

  • client (Object)

    An instance of Client

  • name (String)

    The group name to look for

  • cache (Array) (defaults to: nil)

    The results of #list

Returns:

Author:

  • Jason Colyer

Since:

  • 1.0.112



152
153
154
155
156
157
158
159
# File 'lib/support_readiness/zendesk/groups.rb', line 152

def self.find_by_name(client, name, cache = nil)
  groups = if cache.nil?
             Groups.list(client)
           else
             cache
           end
  groups.detect { |f| f.name == name }
end

.list(client) ⇒ Array

Lists the first 100 groups

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
groups = Readiness::Zendesk::Groups.list(client)
pp groups.first.id
# => 211

Parameters:

  • client (Object)

    An instance of Client

Returns:

  • (Array)

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



51
52
53
54
55
# File 'lib/support_readiness/zendesk/groups.rb', line 51

def self.list(client)
  response = client.connection.get("groups?page[size]=100")
  handle_request_error(0, 'Zendesk', response.status) unless response.status == 200
  Oj.load(response.body)['groups'].map { |g| Groups.new(g) }
end

.memberships(client, group) ⇒ Array

Lists the members of a group

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
group = Readiness::Zendesk::Groups.find!(client, 122)
members = Readiness::Zendesk::Groups.memberships(client, group)
pp members.count
# => 38

Parameters:

  • client (Object)

    An instance of Client

Returns:

  • (Array)

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



260
261
262
263
264
265
266
267
268
269
270
271
272
273
# File 'lib/support_readiness/zendesk/groups.rb', line 260

def self.memberships(client, group)
  array = []
  opts = "page[size]=100"
  loop do
    response = client.connection.get("groups/#{group.id}/memberships?#{opts}")
    handle_request_error(0, 'Zendesk', response.status) unless response.status == 200
    body = Oj.load(response.body)
    array += body['group_memberships']
    break unless body['meta']['has_more']

    opts = body['links'] ['next'].split('?').last
  end
  array
end

.update!(client, group) ⇒ Object

Updates a group. Will exit if unsuccessful

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
group = Readiness::Zendesk::Groups.find!(client, 122)
group.name = 'My Group 2'
update = Readiness::Zendesk::Groups.update!(client, group)
pp update.name
# => "My Group 2"

Parameters:

Returns:

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



209
210
211
212
213
# File 'lib/support_readiness/zendesk/groups.rb', line 209

def self.update!(client, group)
  response = client.connection.put "groups/#{group.id}", to_clean_json_with_key(group, 'group')
  handle_request_error(1, 'Zendesk', response.status, { action: 'Update group', id: group.id, message: Oj.load(response.body)}) unless response.status == 200
  Groups.new(Oj.load(response.body)['group'])
end