zendesk2 1.9.0 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +30 -0
- data/.travis.yml +3 -1
- data/Gemfile +4 -5
- data/Guardfile +4 -3
- data/Rakefile +4 -3
- data/lib/zendesk2.rb +9 -6
- data/lib/zendesk2/attributes.rb +11 -8
- data/lib/zendesk2/audit_event.rb +5 -3
- data/lib/zendesk2/categories.rb +4 -3
- data/lib/zendesk2/category.rb +10 -5
- data/lib/zendesk2/client.rb +3 -3
- data/lib/zendesk2/collection.rb +35 -21
- data/lib/zendesk2/create_category.rb +10 -9
- data/lib/zendesk2/create_forum.rb +11 -10
- data/lib/zendesk2/create_group.rb +13 -12
- data/lib/zendesk2/create_membership.rb +21 -20
- data/lib/zendesk2/create_organization.rb +24 -18
- data/lib/zendesk2/create_ticket.rb +60 -56
- data/lib/zendesk2/create_ticket_field.rb +24 -22
- data/lib/zendesk2/create_topic.rb +11 -10
- data/lib/zendesk2/create_topic_comment.rb +12 -11
- data/lib/zendesk2/create_user.rb +54 -41
- data/lib/zendesk2/create_user_field.rb +22 -21
- data/lib/zendesk2/create_user_identity.rb +18 -15
- data/lib/zendesk2/create_view.rb +62 -62
- data/lib/zendesk2/destroy_category.rb +2 -1
- data/lib/zendesk2/destroy_forum.rb +2 -1
- data/lib/zendesk2/destroy_group.rb +3 -2
- data/lib/zendesk2/destroy_membership.rb +7 -5
- data/lib/zendesk2/destroy_organization.rb +3 -2
- data/lib/zendesk2/destroy_ticket.rb +3 -2
- data/lib/zendesk2/destroy_ticket_field.rb +3 -2
- data/lib/zendesk2/destroy_topic.rb +3 -2
- data/lib/zendesk2/destroy_topic_comment.rb +4 -3
- data/lib/zendesk2/destroy_user.rb +11 -10
- data/lib/zendesk2/destroy_user_field.rb +3 -2
- data/lib/zendesk2/destroy_user_identity.rb +4 -3
- data/lib/zendesk2/destroy_view.rb +3 -2
- data/lib/zendesk2/error.rb +1 -1
- data/lib/zendesk2/forum.rb +36 -18
- data/lib/zendesk2/forums.rb +4 -3
- data/lib/zendesk2/get_assignable_groups.rb +3 -2
- data/lib/zendesk2/get_categories.rb +2 -1
- data/lib/zendesk2/get_category.rb +3 -2
- data/lib/zendesk2/get_ccd_tickets.rb +4 -3
- data/lib/zendesk2/get_current_user.rb +3 -2
- data/lib/zendesk2/get_forum.rb +3 -2
- data/lib/zendesk2/get_forums.rb +2 -1
- data/lib/zendesk2/get_group.rb +3 -2
- data/lib/zendesk2/get_groups.rb +2 -1
- data/lib/zendesk2/get_membership.rb +3 -2
- data/lib/zendesk2/get_memberships.rb +3 -2
- data/lib/zendesk2/get_organization.rb +3 -2
- data/lib/zendesk2/get_organization_by_external_id.rb +8 -5
- data/lib/zendesk2/get_organization_memberships.rb +5 -2
- data/lib/zendesk2/get_organization_tickets.rb +7 -5
- data/lib/zendesk2/get_organization_users.rb +6 -5
- data/lib/zendesk2/get_organizations.rb +2 -1
- data/lib/zendesk2/get_requested_tickets.rb +5 -4
- data/lib/zendesk2/get_ticket.rb +3 -2
- data/lib/zendesk2/get_ticket_audit.rb +5 -4
- data/lib/zendesk2/get_ticket_audits.rb +4 -3
- data/lib/zendesk2/get_ticket_comments.rb +6 -5
- data/lib/zendesk2/get_ticket_field.rb +3 -2
- data/lib/zendesk2/get_ticket_fields.rb +2 -1
- data/lib/zendesk2/get_ticket_metric.rb +4 -3
- data/lib/zendesk2/get_ticket_metrics.rb +3 -2
- data/lib/zendesk2/get_tickets.rb +2 -1
- data/lib/zendesk2/get_topic.rb +3 -2
- data/lib/zendesk2/get_topic_comment.rb +4 -3
- data/lib/zendesk2/get_topic_comments.rb +5 -4
- data/lib/zendesk2/get_topics.rb +2 -1
- data/lib/zendesk2/get_user.rb +7 -7
- data/lib/zendesk2/get_user_field.rb +3 -2
- data/lib/zendesk2/get_user_fields.rb +3 -2
- data/lib/zendesk2/get_user_identities.rb +4 -3
- data/lib/zendesk2/get_user_identity.rb +4 -3
- data/lib/zendesk2/get_user_memberships.rb +4 -3
- data/lib/zendesk2/get_user_organizations.rb +5 -4
- data/lib/zendesk2/get_users.rb +3 -2
- data/lib/zendesk2/get_view.rb +3 -2
- data/lib/zendesk2/get_view_tickets.rb +19 -16
- data/lib/zendesk2/get_views.rb +2 -1
- data/lib/zendesk2/group.rb +6 -5
- data/lib/zendesk2/groups.rb +7 -6
- data/lib/zendesk2/help_center.rb +15 -0
- data/lib/zendesk2/help_center/access_policy.rb +3 -2
- data/lib/zendesk2/help_center/article.rb +10 -7
- data/lib/zendesk2/help_center/articles.rb +7 -7
- data/lib/zendesk2/help_center/categories.rb +3 -2
- data/lib/zendesk2/help_center/category.rb +8 -7
- data/lib/zendesk2/help_center/create_help_center_article.rb +31 -29
- data/lib/zendesk2/help_center/create_help_center_category.rb +17 -16
- data/lib/zendesk2/help_center/create_help_center_post.rb +37 -0
- data/lib/zendesk2/help_center/create_help_center_section.rb +32 -31
- data/lib/zendesk2/help_center/create_help_center_topic.rb +36 -0
- data/lib/zendesk2/help_center/create_help_center_translation.rb +15 -14
- data/lib/zendesk2/help_center/destroy_help_center_article.rb +3 -2
- data/lib/zendesk2/help_center/destroy_help_center_category.rb +3 -2
- data/lib/zendesk2/help_center/destroy_help_center_post.rb +15 -0
- data/lib/zendesk2/help_center/destroy_help_center_section.rb +3 -2
- data/lib/zendesk2/help_center/destroy_help_center_topic.rb +15 -0
- data/lib/zendesk2/help_center/destroy_help_center_translation.rb +2 -1
- data/lib/zendesk2/help_center/get_help_center_access_policy.rb +6 -5
- data/lib/zendesk2/help_center/get_help_center_article.rb +7 -9
- data/lib/zendesk2/help_center/get_help_center_articles.rb +3 -2
- data/lib/zendesk2/help_center/get_help_center_categories.rb +6 -2
- data/lib/zendesk2/help_center/get_help_center_categories_articles.rb +8 -7
- data/lib/zendesk2/help_center/get_help_center_categories_sections.rb +6 -5
- data/lib/zendesk2/help_center/get_help_center_category.rb +7 -9
- data/lib/zendesk2/help_center/get_help_center_post.rb +19 -0
- data/lib/zendesk2/help_center/get_help_center_posts.rb +28 -0
- data/lib/zendesk2/help_center/get_help_center_section.rb +8 -10
- data/lib/zendesk2/help_center/get_help_center_sections.rb +3 -2
- data/lib/zendesk2/help_center/get_help_center_sections_articles.rb +9 -8
- data/lib/zendesk2/help_center/get_help_center_topic.rb +14 -0
- data/lib/zendesk2/help_center/get_help_center_topics.rb +10 -0
- data/lib/zendesk2/help_center/get_help_center_translation.rb +5 -4
- data/lib/zendesk2/help_center/get_help_center_translations.rb +7 -6
- data/lib/zendesk2/help_center/post.rb +72 -0
- data/lib/zendesk2/help_center/posts.rb +18 -0
- data/lib/zendesk2/help_center/search_help_center_articles.rb +8 -7
- data/lib/zendesk2/help_center/section.rb +11 -11
- data/lib/zendesk2/help_center/sections.rb +7 -6
- data/lib/zendesk2/help_center/topic.rb +52 -0
- data/lib/zendesk2/help_center/topics.rb +13 -0
- data/lib/zendesk2/help_center/translation.rb +8 -5
- data/lib/zendesk2/help_center/translation_source.rb +16 -13
- data/lib/zendesk2/help_center/translations.rb +3 -2
- data/lib/zendesk2/help_center/update_help_center_access_policy.rb +8 -7
- data/lib/zendesk2/help_center/update_help_center_article.rb +9 -11
- data/lib/zendesk2/help_center/update_help_center_category.rb +9 -11
- data/lib/zendesk2/help_center/update_help_center_post.rb +20 -0
- data/lib/zendesk2/help_center/update_help_center_section.rb +9 -11
- data/lib/zendesk2/help_center/update_help_center_topic.rb +20 -0
- data/lib/zendesk2/help_center/update_help_center_translation.rb +4 -3
- data/lib/zendesk2/logger.rb +3 -2
- data/lib/zendesk2/mark_membership_default.rb +7 -6
- data/lib/zendesk2/mark_user_identity_primary.rb +7 -6
- data/lib/zendesk2/membership.rb +10 -8
- data/lib/zendesk2/memberships.rb +18 -12
- data/lib/zendesk2/mock.rb +39 -34
- data/lib/zendesk2/model.rb +14 -3
- data/lib/zendesk2/organization.rb +7 -7
- data/lib/zendesk2/organizations.rb +14 -12
- data/lib/zendesk2/paged_collection.rb +40 -36
- data/lib/zendesk2/rate_limit.rb +4 -3
- data/lib/zendesk2/real.rb +25 -22
- data/lib/zendesk2/request.rb +78 -82
- data/lib/zendesk2/search.rb +8 -7
- data/lib/zendesk2/search_organization.rb +14 -14
- data/lib/zendesk2/search_user.rb +41 -37
- data/lib/zendesk2/searchable.rb +36 -26
- data/lib/zendesk2/ticket.rb +20 -18
- data/lib/zendesk2/ticket_audit.rb +5 -4
- data/lib/zendesk2/ticket_audits.rb +10 -11
- data/lib/zendesk2/ticket_change.rb +10 -11
- data/lib/zendesk2/ticket_comment.rb +2 -1
- data/lib/zendesk2/ticket_comment_privacy_change.rb +12 -14
- data/lib/zendesk2/ticket_comments.rb +7 -6
- data/lib/zendesk2/ticket_create.rb +8 -9
- data/lib/zendesk2/ticket_field.rb +5 -4
- data/lib/zendesk2/ticket_fields.rb +4 -3
- data/lib/zendesk2/ticket_metric.rb +2 -2
- data/lib/zendesk2/ticket_metrics.rb +3 -2
- data/lib/zendesk2/ticket_notification.rb +12 -13
- data/lib/zendesk2/ticket_voice_comment.rb +28 -29
- data/lib/zendesk2/tickets.rb +8 -7
- data/lib/zendesk2/topic.rb +49 -22
- data/lib/zendesk2/topic_comment.rb +12 -9
- data/lib/zendesk2/topic_comments.rb +4 -3
- data/lib/zendesk2/topics.rb +4 -3
- data/lib/zendesk2/update_category.rb +8 -6
- data/lib/zendesk2/update_forum.rb +5 -4
- data/lib/zendesk2/update_group.rb +5 -4
- data/lib/zendesk2/update_organization.rb +18 -9
- data/lib/zendesk2/update_request.rb +6 -5
- data/lib/zendesk2/update_ticket.rb +39 -38
- data/lib/zendesk2/update_ticket_field.rb +5 -4
- data/lib/zendesk2/update_topic.rb +5 -4
- data/lib/zendesk2/update_user.rb +39 -31
- data/lib/zendesk2/update_user_field.rb +4 -3
- data/lib/zendesk2/update_user_identity.rb +7 -6
- data/lib/zendesk2/update_view.rb +38 -34
- data/lib/zendesk2/user.rb +41 -37
- data/lib/zendesk2/user_field.rb +9 -6
- data/lib/zendesk2/user_fields.rb +4 -3
- data/lib/zendesk2/user_identities.rb +4 -3
- data/lib/zendesk2/user_identity.rb +12 -9
- data/lib/zendesk2/users.rb +5 -4
- data/lib/zendesk2/version.rb +2 -1
- data/lib/zendesk2/view.rb +24 -13
- data/lib/zendesk2/views.rb +3 -2
- data/spec/categories_spec.rb +63 -60
- data/spec/client_spec.rb +6 -5
- data/spec/forums_spec.rb +64 -61
- data/spec/groups_spec.rb +7 -8
- data/spec/help_center/articles_spec.rb +22 -26
- data/spec/help_center/categories_spec.rb +26 -27
- data/spec/help_center/posts_spec.rb +39 -0
- data/spec/help_center/sections_spec.rb +32 -33
- data/spec/help_center/topics_spec.rb +13 -0
- data/spec/lib/paged_collection_spec.rb +11 -11
- data/spec/lib/rate_limit_spec.rb +9 -8
- data/spec/memberships_spec.rb +38 -27
- data/spec/organizations_spec.rb +92 -87
- data/spec/shared/zendesk_resource.rb +40 -25
- data/spec/spec_helper.rb +8 -13
- data/spec/support/client_helper.rb +5 -4
- data/spec/support/data_helper.rb +1 -0
- data/spec/ticket_fields_spec.rb +6 -7
- data/spec/tickets_spec.rb +69 -58
- data/spec/topic_comments_spec.rb +7 -8
- data/spec/topics_spec.rb +5 -6
- data/spec/user_fields_spec.rb +7 -7
- data/spec/user_identities_spec.rb +29 -25
- data/spec/users_spec.rb +88 -78
- data/spec/views_spec.rb +45 -34
- data/spec/zendesk2_spec.rb +3 -2
- data/zendesk2.gemspec +15 -14
- metadata +21 -2
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Zendesk2::UpdateUserField
|
2
3
|
include Zendesk2::Request
|
3
4
|
|
@@ -5,14 +6,14 @@ class Zendesk2::UpdateUserField
|
|
5
6
|
request_path { |r| "/user_fields/#{r.user_field_id}.json" }
|
6
7
|
|
7
8
|
def user_field_id
|
8
|
-
params.fetch(
|
9
|
+
params.fetch('user_field').fetch('id')
|
9
10
|
end
|
10
11
|
|
11
12
|
def user_field_params
|
12
|
-
Cistern::Hash.slice(params.fetch(
|
13
|
+
Cistern::Hash.slice(params.fetch('user_field'), *Zendesk2::CreateUserField.accepted_attributes)
|
13
14
|
end
|
14
15
|
|
15
16
|
def mock
|
16
|
-
mock_response(
|
17
|
+
mock_response('user_field' => find!(:user_fields, user_field_id).merge!(user_field_params))
|
17
18
|
end
|
18
19
|
end
|
@@ -1,27 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Zendesk2::UpdateUserIdentity
|
2
3
|
include Zendesk2::Request
|
3
4
|
|
4
5
|
request_path { |r| "/users/#{r.user_id}/identities/#{r.user_identity_id}.json" }
|
5
6
|
request_method :put
|
6
|
-
request_body { |r| {
|
7
|
+
request_body { |r| { 'identity' => r.user_identity_params } }
|
7
8
|
|
8
9
|
def self.accepted_attributes
|
9
|
-
%w
|
10
|
+
%w(verified)
|
10
11
|
end
|
11
12
|
|
12
13
|
def user_id
|
13
|
-
params.fetch(
|
14
|
+
params.fetch('user_identity').fetch('user_id')
|
14
15
|
end
|
15
16
|
|
16
17
|
def user_identity_id
|
17
|
-
params.fetch(
|
18
|
+
params.fetch('user_identity').fetch('id')
|
18
19
|
end
|
19
20
|
|
20
21
|
def user_identity_params
|
21
|
-
Cistern::Hash.slice(params.fetch(
|
22
|
+
Cistern::Hash.slice(params.fetch('user_identity'), *self.class.accepted_attributes)
|
22
23
|
end
|
23
24
|
|
24
25
|
def mock
|
25
|
-
mock_response(
|
26
|
+
mock_response('identity' => find!(:identities, user_identity_id).merge!(user_identity_params))
|
26
27
|
end
|
27
28
|
end
|
data/lib/zendesk2/update_view.rb
CHANGED
@@ -1,64 +1,68 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Zendesk2::UpdateView
|
2
3
|
include Zendesk2::Request
|
3
4
|
|
4
5
|
request_method :put
|
5
|
-
request_path { |r| "/views/#{r.view_id}.json"
|
6
|
-
request_body { |r| {
|
6
|
+
request_path { |r| "/views/#{r.view_id}.json" }
|
7
|
+
request_body { |r| { 'view' => r.view_params } }
|
7
8
|
|
8
9
|
def self.accepted_attributes
|
9
|
-
Zendesk2::
|
10
|
+
Zendesk2::CreateView.accepted_attributes
|
10
11
|
end
|
11
12
|
|
12
13
|
def view_params
|
13
|
-
|
14
|
+
Cistern::Hash.slice(params.fetch('view'), *self.class.accepted_attributes)
|
14
15
|
end
|
15
16
|
|
16
17
|
def view_id
|
17
|
-
params.fetch(
|
18
|
+
params.fetch('view').fetch('id')
|
18
19
|
end
|
19
20
|
|
20
21
|
def mock
|
21
|
-
body =
|
22
|
+
body = find!(:views, view_id)
|
22
23
|
|
23
|
-
update_params = view_params
|
24
|
+
update_params = view_params
|
24
25
|
|
25
|
-
output =
|
26
|
-
columns = (output[
|
26
|
+
output = update_params.delete('output') || {}
|
27
|
+
columns = (output['columns'] || []).inject([]) do |a, e|
|
28
|
+
a + [{ 'id' => e, 'name' => Zendesk2::CreateView.view_columns.fetch(c) }]
|
29
|
+
end
|
27
30
|
|
28
|
-
body
|
31
|
+
body['updated_at'] = Time.now.iso8601
|
29
32
|
|
30
33
|
if columns.any?
|
31
|
-
body
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
}
|
37
|
-
)
|
34
|
+
body['execution'] = {
|
35
|
+
'columns' => columns,
|
36
|
+
'fields' => columns,
|
37
|
+
'custom_fields' => [],
|
38
|
+
}
|
38
39
|
end
|
39
40
|
|
40
|
-
body[
|
41
|
-
|
42
|
-
group_params = Cistern::Hash.slice(body, "group_by", "group_order").merge(Cistern::Hash.slice(update_params, "group_by", "group_order"))
|
41
|
+
body['execution']['conditions'] = Cistern::Hash.slice(body, 'any', 'all')
|
43
42
|
|
44
|
-
|
45
|
-
|
46
|
-
"id" => group_params["group_by"],
|
47
|
-
"order" => group_params["group_order"],
|
48
|
-
"title" => (group_params["group_by"] && group_params["group_by"].to_s.upcase),
|
49
|
-
},
|
43
|
+
group_params = Cistern::Hash.slice(body, 'group_by', 'group_order').merge(
|
44
|
+
Cistern::Hash.slice(update_params, 'group_by', 'group_order')
|
50
45
|
)
|
51
46
|
|
52
|
-
|
47
|
+
body.merge!(group_params)['group'] = {
|
48
|
+
'id' => group_params['group_by'],
|
49
|
+
'order' => group_params['group_order'],
|
50
|
+
'title' => (group_params['group_by'] && group_params['group_by'].to_s.upcase),
|
51
|
+
}
|
53
52
|
|
54
|
-
|
55
|
-
|
56
|
-
"id" => sort_params["sort_by"],
|
57
|
-
"order" => sort_params["sort_order"],
|
58
|
-
"title" => (sort_params["sort_by"] && sort_params["sort_by"].to_s.upcase),
|
59
|
-
},
|
53
|
+
sort_params = Cistern::Hash.slice(body, 'sort_by', 'sort_order').merge(
|
54
|
+
Cistern::Hash.slice(update_params, 'sort_by', 'sort_order')
|
60
55
|
)
|
61
56
|
|
62
|
-
|
57
|
+
body.merge!(sort_params)['sort'] = {
|
58
|
+
'id' => sort_params['sort_by'],
|
59
|
+
'order' => sort_params['sort_order'],
|
60
|
+
'title' => (sort_params['sort_by'] && sort_params['sort_by'].to_s.upcase),
|
61
|
+
}
|
62
|
+
|
63
|
+
body.merge!(Cistern::Hash.slice(update_params, 'title', 'active'))
|
64
|
+
cistern.data[:views][view_id] = body
|
65
|
+
|
66
|
+
mock_response('view' => body)
|
63
67
|
end
|
64
68
|
end
|
data/lib/zendesk2/user.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Zendesk2::User
|
2
3
|
include Zendesk2::Model
|
3
4
|
|
@@ -46,11 +47,13 @@ class Zendesk2::User
|
|
46
47
|
attribute :shared, type: :boolean
|
47
48
|
# @return [String] The signature of this user. Only agents and admins can have signatures
|
48
49
|
attribute :signature, type: :string
|
49
|
-
# @return [Boolean] Tickets from suspended users are also suspended, and these users cannot log in to the end-user
|
50
|
+
# @return [Boolean] Tickets from suspended users are also suspended, and these users cannot log in to the end-user
|
51
|
+
# portal
|
50
52
|
attribute :suspended, type: :boolean
|
51
53
|
# @return [Array] The tags of the user. Only present if your account has user tagging enabled
|
52
54
|
attribute :tags, type: :array
|
53
|
-
# @return [String] Specified which tickets this user has access to.
|
55
|
+
# @return [String] Specified which tickets this user has access to.
|
56
|
+
# Possible values are: "organization", "groups", "assigned", "requested", null
|
54
57
|
attribute :ticket_restriction, type: :string
|
55
58
|
# @return [String] The time-zone of this user
|
56
59
|
attribute :time_zone, type: :string
|
@@ -70,12 +73,12 @@ class Zendesk2::User
|
|
70
73
|
data = if new_record?
|
71
74
|
requires :name, :email
|
72
75
|
|
73
|
-
cistern.create_user(
|
76
|
+
cistern.create_user('user' => attributes)
|
74
77
|
else
|
75
78
|
requires :identity
|
76
79
|
|
77
|
-
cistern.update_user(
|
78
|
-
end.body[
|
80
|
+
cistern.update_user('user' => attributes)
|
81
|
+
end.body['user']
|
79
82
|
|
80
83
|
merge_attributes(data)
|
81
84
|
end
|
@@ -83,17 +86,15 @@ class Zendesk2::User
|
|
83
86
|
def destroy!
|
84
87
|
requires :identity
|
85
88
|
|
86
|
-
if
|
87
|
-
raise "don't nuke yourself"
|
88
|
-
end
|
89
|
+
raise "don't nuke yourself" if email == cistern.username
|
89
90
|
|
90
91
|
merge_attributes(
|
91
|
-
cistern.destroy_user(
|
92
|
+
cistern.destroy_user('user' => { 'id' => identity }).body['user']
|
92
93
|
)
|
93
94
|
end
|
94
95
|
|
95
96
|
def destroyed?
|
96
|
-
!reload || !
|
97
|
+
!reload || !active
|
97
98
|
end
|
98
99
|
|
99
100
|
# @param [Time] timestamp time sent with intial handshake
|
@@ -101,28 +102,26 @@ class Zendesk2::User
|
|
101
102
|
# @return [String] remote authentication login url
|
102
103
|
# Using this method requires you to implement the additional (user-defined) /handshake endpoint
|
103
104
|
# @see http://www.zendesk.com/support/api/remote-authentication
|
104
|
-
def login_url(timestamp, options={})
|
105
|
+
def login_url(timestamp, options = {})
|
105
106
|
requires :name, :email
|
106
107
|
|
107
108
|
return_to = options[:return_to]
|
108
|
-
token =
|
109
|
+
token = cistern.token || options[:token]
|
109
110
|
|
110
|
-
uri = URI.parse(
|
111
|
-
uri.path =
|
111
|
+
uri = URI.parse(cistern.url)
|
112
|
+
uri.path = '/access/remote'
|
112
113
|
|
113
|
-
raise
|
114
|
+
raise 'timestamp cannot be nil' unless timestamp
|
114
115
|
|
115
|
-
hash_str = "#{
|
116
|
+
hash_str = "#{name}#{email}#{token}#{timestamp}"
|
116
117
|
query_values = {
|
117
118
|
'name' => name,
|
118
119
|
'email' => email,
|
119
120
|
'timestamp' => timestamp,
|
120
|
-
'hash' => Digest::MD5.hexdigest(hash_str)
|
121
|
+
'hash' => Digest::MD5.hexdigest(hash_str),
|
121
122
|
}
|
122
123
|
|
123
|
-
unless Zendesk2.blank?(return_to)
|
124
|
-
query_values['return_to'] = return_to
|
125
|
-
end
|
124
|
+
query_values['return_to'] = return_to unless Zendesk2.blank?(return_to)
|
126
125
|
|
127
126
|
uri.query = Faraday::NestedParamsEncoder.encode(query_values)
|
128
127
|
|
@@ -137,26 +136,24 @@ class Zendesk2::User
|
|
137
136
|
requires :name, :email
|
138
137
|
|
139
138
|
return_to = options[:return_to]
|
140
|
-
jwt_token =
|
139
|
+
jwt_token = cistern.jwt_token || options[:jwt_token]
|
141
140
|
|
142
|
-
uri = URI.parse(
|
143
|
-
uri.path =
|
141
|
+
uri = URI.parse(cistern.url)
|
142
|
+
uri.path = '/access/jwt'
|
144
143
|
|
145
144
|
iat = Time.now.to_i
|
146
145
|
jti = "#{iat}/#{rand(36**64).to_s(36)}"
|
147
146
|
payload = JWT.encode({
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
147
|
+
iat: iat, # Seconds since epoch, determine when this token is stale
|
148
|
+
jti: jti, # Unique token id, helps prevent replay attacks
|
149
|
+
name: name,
|
150
|
+
email: email,
|
151
|
+
}, jwt_token)
|
153
152
|
|
154
153
|
query_values = {
|
155
|
-
'jwt' => payload
|
154
|
+
'jwt' => payload,
|
156
155
|
}
|
157
|
-
unless Zendesk2.blank?(return_to)
|
158
|
-
query_values['return_to'] = return_to
|
159
|
-
end
|
156
|
+
query_values['return_to'] = return_to unless Zendesk2.blank?(return_to)
|
160
157
|
|
161
158
|
uri.query = Faraday::NestedParamsEncoder.encode(query_values)
|
162
159
|
|
@@ -167,7 +164,7 @@ class Zendesk2::User
|
|
167
164
|
def tickets
|
168
165
|
requires :identity
|
169
166
|
|
170
|
-
cistern.tickets(requester_id:
|
167
|
+
cistern.tickets(requester_id: identity)
|
171
168
|
end
|
172
169
|
alias requested_tickets tickets
|
173
170
|
|
@@ -175,21 +172,28 @@ class Zendesk2::User
|
|
175
172
|
def ccd_tickets
|
176
173
|
requires :identity
|
177
174
|
|
178
|
-
cistern.tickets(collaborator_id:
|
175
|
+
cistern.tickets(collaborator_id: identity)
|
179
176
|
end
|
180
177
|
|
181
178
|
# @return [Zendesk2::UserIdentities] the identities of this user
|
182
179
|
def identities
|
183
|
-
|
180
|
+
cistern.user_identities('user_id' => identity)
|
184
181
|
end
|
185
182
|
|
186
183
|
# @return [Zendesk2::Memberships] the organization memberships of this user
|
187
184
|
def memberships
|
188
|
-
|
185
|
+
cistern.memberships(user: self)
|
189
186
|
end
|
190
187
|
|
191
188
|
# @return [Zendesk2::Organizations] the organizations of this user through memberships
|
192
189
|
def organizations
|
193
|
-
|
190
|
+
cistern.organizations(user: self)
|
191
|
+
end
|
192
|
+
|
193
|
+
# @return [Zendesk2::HelpCenter::Post] authored posts
|
194
|
+
def posts
|
195
|
+
requires :identity
|
196
|
+
|
197
|
+
cistern.help_center_posts(user_id: identity)
|
194
198
|
end
|
195
199
|
end
|
data/lib/zendesk2/user_field.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Zendesk2::UserField
|
2
3
|
include Zendesk2::Model
|
3
4
|
|
@@ -14,7 +15,8 @@ class Zendesk2::UserField
|
|
14
15
|
attribute :custom_field_options, type: :array
|
15
16
|
# @return [String] User-defined description of this field's purpose
|
16
17
|
attribute :description, type: :string
|
17
|
-
# @return [String] create
|
18
|
+
# @return [String] create a unique key that identifies this custom field.
|
19
|
+
# This is used for updating the field and referencing in placeholders.
|
18
20
|
attribute :key, type: :string
|
19
21
|
# @return [Integer] Ordering of the field relative to other fields
|
20
22
|
attribute :position, type: :integer
|
@@ -24,7 +26,8 @@ class Zendesk2::UserField
|
|
24
26
|
attribute :tag, type: :string
|
25
27
|
# @return [String] The title of the custom field
|
26
28
|
attribute :title, type: :string
|
27
|
-
# @return [String] Supported types: "text", "textarea", "checkbox", "date", "integer", "decimal", "regexp", "tagger"
|
29
|
+
# @return [String] Supported types: "text", "textarea", "checkbox", "date", "integer", "decimal", "regexp", "tagger"
|
30
|
+
# (custom dropdown)
|
28
31
|
attribute :type, type: :string
|
29
32
|
# @return [Time] The time of the last update of the ticket field
|
30
33
|
attribute :updated_at, type: :time
|
@@ -35,19 +38,19 @@ class Zendesk2::UserField
|
|
35
38
|
response = if new_record?
|
36
39
|
requires :type, :title, :key
|
37
40
|
|
38
|
-
cistern.create_user_field(
|
41
|
+
cistern.create_user_field('user_field' => attributes)
|
39
42
|
else
|
40
43
|
requires :identity
|
41
44
|
|
42
|
-
cistern.update_user_field(
|
45
|
+
cistern.update_user_field('user_field' => attributes)
|
43
46
|
end
|
44
47
|
|
45
|
-
merge_attributes(response.body[
|
48
|
+
merge_attributes(response.body['user_field'])
|
46
49
|
end
|
47
50
|
|
48
51
|
def destroy!
|
49
52
|
requires :identity
|
50
53
|
|
51
|
-
cistern.destroy_user_field(
|
54
|
+
cistern.destroy_user_field('user_field' => { 'id' => identity })
|
52
55
|
end
|
53
56
|
end
|
data/lib/zendesk2/user_fields.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Zendesk2::UserFields
|
2
3
|
include Zendesk2::Collection
|
3
4
|
|
@@ -8,8 +9,8 @@ class Zendesk2::UserFields
|
|
8
9
|
attribute :count
|
9
10
|
|
10
11
|
self.collection_method = :get_user_fields
|
11
|
-
self.collection_root =
|
12
|
+
self.collection_root = 'user_fields'
|
12
13
|
self.model_method = :get_user_field
|
13
|
-
self.model_root =
|
14
|
-
self.search_type =
|
14
|
+
self.model_root = 'user_field'
|
15
|
+
self.search_type = 'user_field'
|
15
16
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Zendesk2::UserIdentities
|
2
3
|
include Zendesk2::Collection
|
3
4
|
|
@@ -7,10 +8,10 @@ class Zendesk2::UserIdentities
|
|
7
8
|
attribute :count, type: :integer
|
8
9
|
|
9
10
|
self.collection_method = :get_user_identities
|
10
|
-
self.collection_root =
|
11
|
+
self.collection_root = 'identities'
|
11
12
|
self.model_method = :get_user_identity
|
12
|
-
self.model_root =
|
13
|
-
self.namespace =
|
13
|
+
self.model_root = 'identity'
|
14
|
+
self.namespace = 'user_identity'
|
14
15
|
|
15
16
|
scopes << :user_id
|
16
17
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Zendesk2::UserIdentity
|
2
3
|
include Zendesk2::Model
|
3
4
|
|
@@ -27,12 +28,12 @@ class Zendesk2::UserIdentity
|
|
27
28
|
data = if new_record?
|
28
29
|
requires :type, :value, :user_id
|
29
30
|
|
30
|
-
cistern.create_user_identity(
|
31
|
+
cistern.create_user_identity('user_identity' => attributes)
|
31
32
|
else
|
32
33
|
requires :identity
|
33
34
|
|
34
|
-
cistern.update_user_identity(
|
35
|
-
end.body[
|
35
|
+
cistern.update_user_identity('user_identity' => attributes)
|
36
|
+
end.body['identity']
|
36
37
|
|
37
38
|
merge_attributes(data)
|
38
39
|
end
|
@@ -40,20 +41,22 @@ class Zendesk2::UserIdentity
|
|
40
41
|
def destroy!
|
41
42
|
requires :identity
|
42
43
|
|
43
|
-
cistern.destroy_user_identity(
|
44
|
+
cistern.destroy_user_identity('user_identity' => { 'user_id' => user_id, 'id' => identity })
|
44
45
|
end
|
45
46
|
|
46
47
|
def reload
|
47
48
|
requires :identity
|
48
49
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
50
|
+
model = cistern.user_identities('user_id' => user_id).get(identity)
|
51
|
+
|
52
|
+
return false unless model
|
53
|
+
|
54
|
+
merge_attributes(model.attributes)
|
55
|
+
self
|
53
56
|
end
|
54
57
|
|
55
58
|
def primary!
|
56
|
-
|
59
|
+
cistern.mark_user_identity_primary('user_identity' => { 'user_id' => user_id, 'id' => identity })
|
57
60
|
self.primary = true
|
58
61
|
end
|
59
62
|
end
|