Class: ForestAdminDatasourceZendesk::Client

Inherits:
Object
  • Object
show all
Includes:
Introspection, Writes
Defined in:
lib/forest_admin_datasource_zendesk/client.rb,
lib/forest_admin_datasource_zendesk/client/writes.rb,
lib/forest_admin_datasource_zendesk/client/introspection.rb

Defined Under Namespace

Modules: Introspection, Writes

Constant Summary collapse

MAX_PER_PAGE =
100

Instance Method Summary collapse

Methods included from Introspection

#fetch_organization_fields, #fetch_ticket_fields, #fetch_user_fields

Methods included from Writes

#create_organization, #create_ticket, #create_user, #delete_organization, #delete_ticket, #delete_user, #update_organization, #update_ticket, #update_user

Constructor Details

#initialize(configuration) ⇒ Client

Returns a new instance of Client.



8
9
10
# File 'lib/forest_admin_datasource_zendesk/client.rb', line 8

def initialize(configuration)
  @configuration = configuration
end

Instance Method Details

#count(type, query:) ⇒ Object



17
18
19
20
21
22
# File 'lib/forest_admin_datasource_zendesk/client.rb', line 17

def count(type, query:)
  must_succeed("count(#{type})") do
    body = api.connection.get('search/count', query: compose_query(type, query)).body
    Integer(body['count'] || 0)
  end
end

#fetch_organizations_by_ids(ids) ⇒ Object



52
53
54
55
56
# File 'lib/forest_admin_datasource_zendesk/client.rb', line 52

def fetch_organizations_by_ids(ids)
  best_effort('fetch_organizations_by_ids', default: {}) do
    bulk_show_many('organizations', ids) { |o| [o['id'], o] }
  end
end

#fetch_ticket_comments(ticket_id) ⇒ Object



24
25
26
27
28
# File 'lib/forest_admin_datasource_zendesk/client.rb', line 24

def fetch_ticket_comments(ticket_id)
  must_succeed("fetch_ticket_comments(#{ticket_id})") do
    Array(api.connection.get("tickets/#{ticket_id}/comments").body['comments'])
  end
end

#fetch_tickets_by_ids(ids) ⇒ Object



40
41
42
43
44
# File 'lib/forest_admin_datasource_zendesk/client.rb', line 40

def fetch_tickets_by_ids(ids)
  must_succeed('fetch_tickets_by_ids') do
    bulk_show_many('tickets', ids) { |t| [t['id'], t] }
  end
end

#fetch_user_emails(ids) ⇒ Object



34
35
36
37
38
# File 'lib/forest_admin_datasource_zendesk/client.rb', line 34

def fetch_user_emails(ids)
  best_effort('fetch_user_emails', default: {}) do
    bulk_show_many('users', ids) { |u| [u['id'], u['email']] }
  end
end

#fetch_users_by_ids(ids) ⇒ Object



46
47
48
49
50
# File 'lib/forest_admin_datasource_zendesk/client.rb', line 46

def fetch_users_by_ids(ids)
  best_effort('fetch_users_by_ids', default: {}) do
    bulk_show_many('users', ids) { |u| [u['id'], u] }
  end
end

#find_organization(id) ⇒ Object



32
# File 'lib/forest_admin_datasource_zendesk/client.rb', line 32

def find_organization(id) = find_one(api.organizations, id)

#find_ticket(id) ⇒ Object



30
# File 'lib/forest_admin_datasource_zendesk/client.rb', line 30

def find_ticket(id)       = find_one(api.tickets, id)

#find_user(id) ⇒ Object



31
# File 'lib/forest_admin_datasource_zendesk/client.rb', line 31

def find_user(id)         = find_one(api.users, id)

#search(type, **opts) ⇒ Object



12
13
14
15
# File 'lib/forest_admin_datasource_zendesk/client.rb', line 12

def search(type, **opts)
  params = build_search_params(type, opts)
  must_succeed("search(#{type})") { api.search(params).to_a }
end