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
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
class Zendesk2::GetHelpCenterTopic
|
3
|
+
include Zendesk2::Request
|
4
|
+
|
5
|
+
request_path { |r| "/community/topics/#{r.topic_id}.json" }
|
6
|
+
|
7
|
+
def topic_id
|
8
|
+
params.fetch('topic').fetch('id')
|
9
|
+
end
|
10
|
+
|
11
|
+
def mock
|
12
|
+
mock_response('topic' => find!(:help_center_topics, topic_id))
|
13
|
+
end
|
14
|
+
end
|
@@ -1,13 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Zendesk2::GetHelpCenterTranslation
|
2
3
|
include Zendesk2::Request
|
3
4
|
include Zendesk2::HelpCenter::TranslationSource::Request
|
4
5
|
|
5
6
|
request_method :get
|
6
|
-
request_path
|
7
|
+
request_path do |r|
|
7
8
|
"/help_center/#{r.source_type_url}/#{r.source_id}/translations/#{r.locale}.json"
|
8
|
-
|
9
|
+
end
|
9
10
|
|
10
|
-
def mock(
|
11
|
-
mock_response(
|
11
|
+
def mock(_params = {})
|
12
|
+
mock_response('translation' => find!(:help_center_translations, mock_translation_key))
|
12
13
|
end
|
13
14
|
end
|
@@ -1,9 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Zendesk2::GetHelpCenterTranslations
|
2
3
|
include Zendesk2::Request
|
3
4
|
include Zendesk2::HelpCenter::TranslationSource::Request
|
4
5
|
|
5
6
|
request_path { |r| "/help_center/#{r.source_type_url}/#{r.source_id}/translations.json" }
|
6
|
-
request_params
|
7
|
+
request_params(&:translation_params)
|
7
8
|
|
8
9
|
page_params!
|
9
10
|
|
@@ -11,15 +12,15 @@ class Zendesk2::GetHelpCenterTranslations
|
|
11
12
|
new_params = Cistern::Hash.slice(params, :outdated, :draft)
|
12
13
|
|
13
14
|
# Extract locales and dedup "locale"
|
14
|
-
locales = params[
|
15
|
-
locales << params[
|
15
|
+
locales = params['locales'] || []
|
16
|
+
locales << params['locale'] unless !params['locale'] || params['locale'].empty?
|
16
17
|
locales.uniq!
|
17
|
-
new_params[
|
18
|
+
new_params['locales'] = locales.join(',') unless locales.empty?
|
18
19
|
|
19
|
-
|
20
|
+
new_params
|
20
21
|
end
|
21
22
|
|
22
23
|
def mock
|
23
|
-
page(:help_center_translations, root:
|
24
|
+
page(:help_center_translations, root: 'translations')
|
24
25
|
end
|
25
26
|
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
class Zendesk2::HelpCenter::Post
|
3
|
+
include Zendesk2::Model
|
4
|
+
|
5
|
+
extend Zendesk2::Attributes
|
6
|
+
|
7
|
+
# Automatically assigned when the post is created
|
8
|
+
identity :id, type: :integer
|
9
|
+
|
10
|
+
# API url of the post
|
11
|
+
attribute :url
|
12
|
+
# The community url of the post
|
13
|
+
attribute :html_url
|
14
|
+
# The title of the post
|
15
|
+
attribute :title
|
16
|
+
# The details of the post
|
17
|
+
attribute :details
|
18
|
+
# The id of the author of the post. *Writable on create by Help Center managers -- see Create Post
|
19
|
+
attribute :author_id, type: :integer
|
20
|
+
# When true, pins the post to the top of its topic
|
21
|
+
attribute :pinned, type: :boolean
|
22
|
+
# Whether the post is featured
|
23
|
+
attribute :featured, type: :boolean
|
24
|
+
# Whether further comments are allowed
|
25
|
+
attribute :closed, type: :boolean
|
26
|
+
# Possible values: "planned", "not_planned" , "answered", or "completed"
|
27
|
+
attribute :status
|
28
|
+
# The total sum of votes on the post
|
29
|
+
attribute :vote_sum, type: :integer
|
30
|
+
# The number of votes cast on the post
|
31
|
+
attribute :vote_count, type: :integer
|
32
|
+
# The number of comments on the post
|
33
|
+
attribute :comment_count, type: :integer
|
34
|
+
# The number of followers of the post
|
35
|
+
attribute :follower_count, type: :integer
|
36
|
+
# The id of the topic that the post belongs to
|
37
|
+
attribute :topic_id, type: :integer
|
38
|
+
# Post
|
39
|
+
attribute :created_at, type: :time
|
40
|
+
# When the post was last updated
|
41
|
+
attribute :updated_at, type: :time
|
42
|
+
|
43
|
+
def destroy!
|
44
|
+
requires :identity
|
45
|
+
|
46
|
+
cistern.destroy_help_center_post('post' => { 'id' => identity })
|
47
|
+
end
|
48
|
+
|
49
|
+
def save!
|
50
|
+
response = if new_record?
|
51
|
+
requires :title, :details, :topic_id
|
52
|
+
|
53
|
+
cistern.create_help_center_post('post' => attributes)
|
54
|
+
else
|
55
|
+
requires :identity
|
56
|
+
|
57
|
+
cistern.update_help_center_post('post' => attributes)
|
58
|
+
end
|
59
|
+
|
60
|
+
merge_attributes(response.body['post'])
|
61
|
+
end
|
62
|
+
|
63
|
+
def author
|
64
|
+
author_id && cistern.users.get!(author_id)
|
65
|
+
end
|
66
|
+
|
67
|
+
def topic
|
68
|
+
requires :topic_id
|
69
|
+
|
70
|
+
cistern.help_center_topics.get!(topic_id)
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
class Zendesk2::HelpCenter::Posts
|
3
|
+
include Zendesk2::Collection
|
4
|
+
include Zendesk2::PagedCollection
|
5
|
+
|
6
|
+
model Zendesk2::HelpCenter::Post
|
7
|
+
|
8
|
+
self.collection_method = :get_help_center_posts
|
9
|
+
self.collection_root = 'posts'
|
10
|
+
self.model_method = :get_help_center_post
|
11
|
+
self.model_root = 'post'
|
12
|
+
|
13
|
+
attribute :user_id, type: :integer
|
14
|
+
attribute :topic_id, type: :integer
|
15
|
+
|
16
|
+
scopes << :user_id
|
17
|
+
scopes << :topic_id
|
18
|
+
end
|
@@ -1,29 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Zendesk2::SearchHelpCenterArticles
|
2
3
|
include Zendesk2::Request
|
3
4
|
|
4
|
-
request_path { |_|
|
5
|
+
request_path { |_| '/help_center/articles/search.json' }
|
5
6
|
|
6
7
|
attr_reader :query
|
7
8
|
|
8
|
-
def _mock(query, params={})
|
9
|
+
def _mock(query, params = {})
|
9
10
|
@query = query
|
10
11
|
setup(params)
|
11
12
|
mock
|
12
13
|
end
|
13
14
|
|
14
|
-
def _real(query, params={})
|
15
|
+
def _real(query, params = {})
|
15
16
|
@query = query
|
16
17
|
setup(params)
|
17
18
|
real
|
18
19
|
end
|
19
20
|
|
20
21
|
def mock
|
21
|
-
terms = Hash[query.split(
|
22
|
+
terms = Hash[query.split(' ').map { |t| t.split(':') }]
|
22
23
|
|
23
|
-
collection =
|
24
|
+
collection = data[:help_center_articles].values
|
24
25
|
|
25
|
-
results = collection.select { |v| terms.all?{ |term, condition| v[term.to_s].to_s == condition.to_s } }
|
26
|
+
results = collection.select { |v| terms.all? { |term, condition| v[term.to_s].to_s == condition.to_s } }
|
26
27
|
|
27
|
-
page(results, params: {
|
28
|
+
page(results, params: { 'query' => query }, root: 'results')
|
28
29
|
end
|
29
30
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Zendesk2::HelpCenter::Section
|
2
3
|
include Zendesk2::Model
|
3
4
|
|
@@ -20,7 +21,8 @@ class Zendesk2::HelpCenter::Section
|
|
20
21
|
attribute :name, type: :string # ro:no required:yes
|
21
22
|
# @return [Boolean] Whether the section is out of date
|
22
23
|
attribute :outdated, type: :boolean # ro:yes required:no
|
23
|
-
# @return [Integer] The position of this section in the section list. By default the section is added to the end of
|
24
|
+
# @return [Integer] The position of this section in the section list. By default the section is added to the end of
|
25
|
+
# the list
|
24
26
|
attribute :position, type: :integer # ro:no required:no
|
25
27
|
# @return [String] The sorting of articles within this section. By default it's set to manual. See sorting below.
|
26
28
|
attribute :sorting, type: :string # ro:no required:no
|
@@ -39,36 +41,34 @@ class Zendesk2::HelpCenter::Section
|
|
39
41
|
def destroy!
|
40
42
|
requires :identity
|
41
43
|
|
42
|
-
cistern.destroy_help_center_section(
|
44
|
+
cistern.destroy_help_center_section('section' => { 'id' => identity })
|
43
45
|
end
|
44
46
|
|
45
47
|
def save!
|
46
48
|
response = if new_record?
|
47
49
|
requires :name, :locale, :category_id
|
48
50
|
|
49
|
-
cistern.create_help_center_section(
|
51
|
+
cistern.create_help_center_section('section' => attributes)
|
50
52
|
else
|
51
53
|
requires :identity
|
52
54
|
|
53
|
-
cistern.update_help_center_section(
|
55
|
+
cistern.update_help_center_section('section' => attributes)
|
54
56
|
end
|
55
57
|
|
56
|
-
merge_attributes(response.body[
|
58
|
+
merge_attributes(response.body['section'])
|
57
59
|
end
|
58
60
|
|
59
61
|
def articles
|
60
62
|
requires :identity
|
61
63
|
|
62
|
-
cistern.help_center_articles(section_id:
|
64
|
+
cistern.help_center_articles(section_id: identity)
|
63
65
|
end
|
64
66
|
|
65
67
|
def access_policy
|
66
68
|
requires :identity
|
67
69
|
|
68
|
-
response = cistern.get_help_center_access_policy(section_id:
|
69
|
-
response
|
70
|
-
"section_id" => self.identity
|
71
|
-
})
|
70
|
+
response = cistern.get_help_center_access_policy(section_id: identity).body['access_policy']
|
71
|
+
response['section_id'] = identity
|
72
72
|
|
73
73
|
cistern.help_center_access_policy(response)
|
74
74
|
end
|
@@ -76,6 +76,6 @@ class Zendesk2::HelpCenter::Section
|
|
76
76
|
def translations
|
77
77
|
requires :identity
|
78
78
|
|
79
|
-
cistern.help_center_translations(source_id:
|
79
|
+
cistern.help_center_translations(source_id: identity, source_type: 'Section')
|
80
80
|
end
|
81
81
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Zendesk2::HelpCenter::Sections
|
2
3
|
include Zendesk2::Collection
|
3
4
|
|
@@ -7,25 +8,25 @@ class Zendesk2::HelpCenter::Sections
|
|
7
8
|
model Zendesk2::HelpCenter::Section
|
8
9
|
|
9
10
|
self.collection_method = :get_help_center_sections
|
10
|
-
self.collection_root =
|
11
|
+
self.collection_root = 'sections'
|
11
12
|
self.model_method = :get_help_center_section
|
12
|
-
self.model_root =
|
13
|
+
self.model_root = 'section'
|
13
14
|
|
14
15
|
attribute :category_id, type: :integer
|
15
16
|
|
16
17
|
scopes << :category_id
|
17
18
|
|
18
|
-
def collection_page(params={})
|
19
|
+
def collection_page(params = {})
|
19
20
|
collection_method = if category_id
|
20
21
|
:get_help_center_categories_sections
|
21
22
|
else
|
22
23
|
:get_help_center_sections
|
23
24
|
end
|
24
25
|
|
25
|
-
body = cistern.send(collection_method, Cistern::Hash.stringify_keys(
|
26
|
+
body = cistern.send(collection_method, Cistern::Hash.stringify_keys(attributes.merge(params))).body
|
26
27
|
|
27
|
-
|
28
|
-
|
28
|
+
load(body[collection_root]) # 'results' is the key for paged searches
|
29
|
+
merge_attributes(Cistern::Hash.slice(body, 'count', 'next_page', 'previous_page'))
|
29
30
|
self
|
30
31
|
end
|
31
32
|
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
class Zendesk2::HelpCenter::Topic
|
3
|
+
include Zendesk2::Model
|
4
|
+
|
5
|
+
extend Zendesk2::Attributes
|
6
|
+
|
7
|
+
# Automatically assigned when the topic is created
|
8
|
+
identity :id, type: :integer
|
9
|
+
|
10
|
+
# API url of the topic
|
11
|
+
attribute :url
|
12
|
+
# The community url of the topic
|
13
|
+
attribute :html_url
|
14
|
+
# The name of the topic
|
15
|
+
attribute :name
|
16
|
+
# By default an empty string
|
17
|
+
attribute :description
|
18
|
+
# The position of the topic relative to other topics in the community
|
19
|
+
attribute :position, type: :integer
|
20
|
+
# The number of users following the topic
|
21
|
+
attribute :follower_count, type: :integer
|
22
|
+
# When the topic was created
|
23
|
+
attribute :created_at, type: :time
|
24
|
+
# When the topic was last updated
|
25
|
+
attribute :updated_at, type: :time
|
26
|
+
|
27
|
+
def destroy!
|
28
|
+
requires :identity
|
29
|
+
|
30
|
+
cistern.destroy_help_center_topic('topic' => { 'id' => identity })
|
31
|
+
end
|
32
|
+
|
33
|
+
def save!
|
34
|
+
response = if new_record?
|
35
|
+
requires :name
|
36
|
+
|
37
|
+
cistern.create_help_center_topic('topic' => attributes)
|
38
|
+
else
|
39
|
+
requires :identity
|
40
|
+
|
41
|
+
cistern.update_help_center_topic('topic' => attributes)
|
42
|
+
end
|
43
|
+
|
44
|
+
merge_attributes(response.body['topic'])
|
45
|
+
end
|
46
|
+
|
47
|
+
def posts
|
48
|
+
requires :identity
|
49
|
+
|
50
|
+
cistern.help_center_posts(topic_id: identity)
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
class Zendesk2::HelpCenter::Topics
|
3
|
+
include Zendesk2::Collection
|
4
|
+
|
5
|
+
model Zendesk2::HelpCenter::Topic
|
6
|
+
|
7
|
+
attribute :count
|
8
|
+
|
9
|
+
self.collection_method = :get_help_center_topics
|
10
|
+
self.collection_root = 'topics'
|
11
|
+
self.model_method = :get_help_center_topic
|
12
|
+
self.model_root = 'topic'
|
13
|
+
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Zendesk2::HelpCenter::Translation
|
2
3
|
include Zendesk2::Model
|
3
4
|
include Zendesk2::HelpCenter::TranslationSource::Model
|
@@ -11,7 +12,7 @@ class Zendesk2::HelpCenter::Translation
|
|
11
12
|
attribute :url, type: :string # ro:yes required:no
|
12
13
|
# @return [String] The url of the translation in Help Center
|
13
14
|
attribute :html_url, type: :string # ro:yes required:no
|
14
|
-
# @return [Integer]
|
15
|
+
# @return [Integer] The id of the item that has this translation
|
15
16
|
attribute :source_id, type: :integer # ro:yes required:no
|
16
17
|
# @return [String] The type of the item that has this translation. Can be Article, Section, or Category
|
17
18
|
attribute :source_type, type: :string # ro:yes required:no
|
@@ -29,20 +30,22 @@ class Zendesk2::HelpCenter::Translation
|
|
29
30
|
def destroy!
|
30
31
|
requires :locale, :source_id, :source_type
|
31
32
|
|
32
|
-
cistern.destroy_help_center_translation(
|
33
|
+
cistern.destroy_help_center_translation(
|
34
|
+
'translation' => Cistern::Hash.slice(attributes, :source_id, :source_type, :locale)
|
35
|
+
)
|
33
36
|
end
|
34
37
|
|
35
38
|
def save!
|
36
39
|
response = if new_record?
|
37
40
|
requires :locale, :source_id, :source_type
|
38
41
|
|
39
|
-
cistern.create_help_center_translation(
|
42
|
+
cistern.create_help_center_translation('translation' => attributes)
|
40
43
|
else
|
41
44
|
requires :identity
|
42
45
|
|
43
|
-
cistern.update_help_center_translation(
|
46
|
+
cistern.update_help_center_translation('translation' => attributes)
|
44
47
|
end
|
45
48
|
|
46
|
-
merge_attributes(response.body[
|
49
|
+
merge_attributes(response.body['translation'])
|
47
50
|
end
|
48
51
|
end
|
@@ -1,45 +1,48 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module Zendesk2::HelpCenter::TranslationSource
|
3
|
+
# allow models to define their source type
|
2
4
|
module Model
|
3
5
|
def source=(source)
|
4
6
|
if source.is_a?(Zendesk2::HelpCenter::Article)
|
5
|
-
self.source_type =
|
7
|
+
self.source_type = 'Article'
|
6
8
|
elsif source.is_a?(Zendesk2::HelpCenter::Section)
|
7
|
-
self.source_type =
|
9
|
+
self.source_type = 'Section'
|
8
10
|
elsif source.is_a?(Zendesk2::HelpCenter::Category)
|
9
|
-
self.source_type =
|
11
|
+
self.source_type = 'Category'
|
10
12
|
end
|
11
13
|
self.source_id = source.id
|
12
14
|
end
|
13
15
|
end
|
14
16
|
|
17
|
+
# allow requests to read common pieces of information about the translation source
|
15
18
|
module Request
|
16
19
|
def source_id
|
17
|
-
Integer((params[
|
20
|
+
Integer((params['translation'] || params).fetch('source_id'))
|
18
21
|
end
|
19
22
|
|
20
23
|
def source_type
|
21
|
-
(params[
|
24
|
+
(params['translation'] || params).fetch('source_type')
|
22
25
|
end
|
23
26
|
|
24
27
|
def source_type_url
|
25
28
|
case source_type
|
26
|
-
when
|
27
|
-
|
28
|
-
when
|
29
|
-
|
30
|
-
when
|
31
|
-
|
29
|
+
when 'Article'
|
30
|
+
'articles'
|
31
|
+
when 'Section'
|
32
|
+
'sections'
|
33
|
+
when 'Category'
|
34
|
+
'categories'
|
32
35
|
end
|
33
36
|
end
|
34
37
|
|
35
38
|
def locale
|
36
|
-
(params[
|
39
|
+
(params['translation'] || params).fetch('locale') || 'en-us'
|
37
40
|
end
|
38
41
|
|
39
42
|
# Since Zendesk2::Request#find! calls .to_i on hash keys, we need an integer
|
40
43
|
# key for this.
|
41
44
|
def mock_translation_key
|
42
|
-
[source_type, source_id, locale].join(
|
45
|
+
[source_type, source_id, locale].join('-').each_byte.reduce(0) { |a, e| a + e }
|
43
46
|
end
|
44
47
|
end
|
45
48
|
end
|