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.
Files changed (222) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +30 -0
  3. data/.travis.yml +3 -1
  4. data/Gemfile +4 -5
  5. data/Guardfile +4 -3
  6. data/Rakefile +4 -3
  7. data/lib/zendesk2.rb +9 -6
  8. data/lib/zendesk2/attributes.rb +11 -8
  9. data/lib/zendesk2/audit_event.rb +5 -3
  10. data/lib/zendesk2/categories.rb +4 -3
  11. data/lib/zendesk2/category.rb +10 -5
  12. data/lib/zendesk2/client.rb +3 -3
  13. data/lib/zendesk2/collection.rb +35 -21
  14. data/lib/zendesk2/create_category.rb +10 -9
  15. data/lib/zendesk2/create_forum.rb +11 -10
  16. data/lib/zendesk2/create_group.rb +13 -12
  17. data/lib/zendesk2/create_membership.rb +21 -20
  18. data/lib/zendesk2/create_organization.rb +24 -18
  19. data/lib/zendesk2/create_ticket.rb +60 -56
  20. data/lib/zendesk2/create_ticket_field.rb +24 -22
  21. data/lib/zendesk2/create_topic.rb +11 -10
  22. data/lib/zendesk2/create_topic_comment.rb +12 -11
  23. data/lib/zendesk2/create_user.rb +54 -41
  24. data/lib/zendesk2/create_user_field.rb +22 -21
  25. data/lib/zendesk2/create_user_identity.rb +18 -15
  26. data/lib/zendesk2/create_view.rb +62 -62
  27. data/lib/zendesk2/destroy_category.rb +2 -1
  28. data/lib/zendesk2/destroy_forum.rb +2 -1
  29. data/lib/zendesk2/destroy_group.rb +3 -2
  30. data/lib/zendesk2/destroy_membership.rb +7 -5
  31. data/lib/zendesk2/destroy_organization.rb +3 -2
  32. data/lib/zendesk2/destroy_ticket.rb +3 -2
  33. data/lib/zendesk2/destroy_ticket_field.rb +3 -2
  34. data/lib/zendesk2/destroy_topic.rb +3 -2
  35. data/lib/zendesk2/destroy_topic_comment.rb +4 -3
  36. data/lib/zendesk2/destroy_user.rb +11 -10
  37. data/lib/zendesk2/destroy_user_field.rb +3 -2
  38. data/lib/zendesk2/destroy_user_identity.rb +4 -3
  39. data/lib/zendesk2/destroy_view.rb +3 -2
  40. data/lib/zendesk2/error.rb +1 -1
  41. data/lib/zendesk2/forum.rb +36 -18
  42. data/lib/zendesk2/forums.rb +4 -3
  43. data/lib/zendesk2/get_assignable_groups.rb +3 -2
  44. data/lib/zendesk2/get_categories.rb +2 -1
  45. data/lib/zendesk2/get_category.rb +3 -2
  46. data/lib/zendesk2/get_ccd_tickets.rb +4 -3
  47. data/lib/zendesk2/get_current_user.rb +3 -2
  48. data/lib/zendesk2/get_forum.rb +3 -2
  49. data/lib/zendesk2/get_forums.rb +2 -1
  50. data/lib/zendesk2/get_group.rb +3 -2
  51. data/lib/zendesk2/get_groups.rb +2 -1
  52. data/lib/zendesk2/get_membership.rb +3 -2
  53. data/lib/zendesk2/get_memberships.rb +3 -2
  54. data/lib/zendesk2/get_organization.rb +3 -2
  55. data/lib/zendesk2/get_organization_by_external_id.rb +8 -5
  56. data/lib/zendesk2/get_organization_memberships.rb +5 -2
  57. data/lib/zendesk2/get_organization_tickets.rb +7 -5
  58. data/lib/zendesk2/get_organization_users.rb +6 -5
  59. data/lib/zendesk2/get_organizations.rb +2 -1
  60. data/lib/zendesk2/get_requested_tickets.rb +5 -4
  61. data/lib/zendesk2/get_ticket.rb +3 -2
  62. data/lib/zendesk2/get_ticket_audit.rb +5 -4
  63. data/lib/zendesk2/get_ticket_audits.rb +4 -3
  64. data/lib/zendesk2/get_ticket_comments.rb +6 -5
  65. data/lib/zendesk2/get_ticket_field.rb +3 -2
  66. data/lib/zendesk2/get_ticket_fields.rb +2 -1
  67. data/lib/zendesk2/get_ticket_metric.rb +4 -3
  68. data/lib/zendesk2/get_ticket_metrics.rb +3 -2
  69. data/lib/zendesk2/get_tickets.rb +2 -1
  70. data/lib/zendesk2/get_topic.rb +3 -2
  71. data/lib/zendesk2/get_topic_comment.rb +4 -3
  72. data/lib/zendesk2/get_topic_comments.rb +5 -4
  73. data/lib/zendesk2/get_topics.rb +2 -1
  74. data/lib/zendesk2/get_user.rb +7 -7
  75. data/lib/zendesk2/get_user_field.rb +3 -2
  76. data/lib/zendesk2/get_user_fields.rb +3 -2
  77. data/lib/zendesk2/get_user_identities.rb +4 -3
  78. data/lib/zendesk2/get_user_identity.rb +4 -3
  79. data/lib/zendesk2/get_user_memberships.rb +4 -3
  80. data/lib/zendesk2/get_user_organizations.rb +5 -4
  81. data/lib/zendesk2/get_users.rb +3 -2
  82. data/lib/zendesk2/get_view.rb +3 -2
  83. data/lib/zendesk2/get_view_tickets.rb +19 -16
  84. data/lib/zendesk2/get_views.rb +2 -1
  85. data/lib/zendesk2/group.rb +6 -5
  86. data/lib/zendesk2/groups.rb +7 -6
  87. data/lib/zendesk2/help_center.rb +15 -0
  88. data/lib/zendesk2/help_center/access_policy.rb +3 -2
  89. data/lib/zendesk2/help_center/article.rb +10 -7
  90. data/lib/zendesk2/help_center/articles.rb +7 -7
  91. data/lib/zendesk2/help_center/categories.rb +3 -2
  92. data/lib/zendesk2/help_center/category.rb +8 -7
  93. data/lib/zendesk2/help_center/create_help_center_article.rb +31 -29
  94. data/lib/zendesk2/help_center/create_help_center_category.rb +17 -16
  95. data/lib/zendesk2/help_center/create_help_center_post.rb +37 -0
  96. data/lib/zendesk2/help_center/create_help_center_section.rb +32 -31
  97. data/lib/zendesk2/help_center/create_help_center_topic.rb +36 -0
  98. data/lib/zendesk2/help_center/create_help_center_translation.rb +15 -14
  99. data/lib/zendesk2/help_center/destroy_help_center_article.rb +3 -2
  100. data/lib/zendesk2/help_center/destroy_help_center_category.rb +3 -2
  101. data/lib/zendesk2/help_center/destroy_help_center_post.rb +15 -0
  102. data/lib/zendesk2/help_center/destroy_help_center_section.rb +3 -2
  103. data/lib/zendesk2/help_center/destroy_help_center_topic.rb +15 -0
  104. data/lib/zendesk2/help_center/destroy_help_center_translation.rb +2 -1
  105. data/lib/zendesk2/help_center/get_help_center_access_policy.rb +6 -5
  106. data/lib/zendesk2/help_center/get_help_center_article.rb +7 -9
  107. data/lib/zendesk2/help_center/get_help_center_articles.rb +3 -2
  108. data/lib/zendesk2/help_center/get_help_center_categories.rb +6 -2
  109. data/lib/zendesk2/help_center/get_help_center_categories_articles.rb +8 -7
  110. data/lib/zendesk2/help_center/get_help_center_categories_sections.rb +6 -5
  111. data/lib/zendesk2/help_center/get_help_center_category.rb +7 -9
  112. data/lib/zendesk2/help_center/get_help_center_post.rb +19 -0
  113. data/lib/zendesk2/help_center/get_help_center_posts.rb +28 -0
  114. data/lib/zendesk2/help_center/get_help_center_section.rb +8 -10
  115. data/lib/zendesk2/help_center/get_help_center_sections.rb +3 -2
  116. data/lib/zendesk2/help_center/get_help_center_sections_articles.rb +9 -8
  117. data/lib/zendesk2/help_center/get_help_center_topic.rb +14 -0
  118. data/lib/zendesk2/help_center/get_help_center_topics.rb +10 -0
  119. data/lib/zendesk2/help_center/get_help_center_translation.rb +5 -4
  120. data/lib/zendesk2/help_center/get_help_center_translations.rb +7 -6
  121. data/lib/zendesk2/help_center/post.rb +72 -0
  122. data/lib/zendesk2/help_center/posts.rb +18 -0
  123. data/lib/zendesk2/help_center/search_help_center_articles.rb +8 -7
  124. data/lib/zendesk2/help_center/section.rb +11 -11
  125. data/lib/zendesk2/help_center/sections.rb +7 -6
  126. data/lib/zendesk2/help_center/topic.rb +52 -0
  127. data/lib/zendesk2/help_center/topics.rb +13 -0
  128. data/lib/zendesk2/help_center/translation.rb +8 -5
  129. data/lib/zendesk2/help_center/translation_source.rb +16 -13
  130. data/lib/zendesk2/help_center/translations.rb +3 -2
  131. data/lib/zendesk2/help_center/update_help_center_access_policy.rb +8 -7
  132. data/lib/zendesk2/help_center/update_help_center_article.rb +9 -11
  133. data/lib/zendesk2/help_center/update_help_center_category.rb +9 -11
  134. data/lib/zendesk2/help_center/update_help_center_post.rb +20 -0
  135. data/lib/zendesk2/help_center/update_help_center_section.rb +9 -11
  136. data/lib/zendesk2/help_center/update_help_center_topic.rb +20 -0
  137. data/lib/zendesk2/help_center/update_help_center_translation.rb +4 -3
  138. data/lib/zendesk2/logger.rb +3 -2
  139. data/lib/zendesk2/mark_membership_default.rb +7 -6
  140. data/lib/zendesk2/mark_user_identity_primary.rb +7 -6
  141. data/lib/zendesk2/membership.rb +10 -8
  142. data/lib/zendesk2/memberships.rb +18 -12
  143. data/lib/zendesk2/mock.rb +39 -34
  144. data/lib/zendesk2/model.rb +14 -3
  145. data/lib/zendesk2/organization.rb +7 -7
  146. data/lib/zendesk2/organizations.rb +14 -12
  147. data/lib/zendesk2/paged_collection.rb +40 -36
  148. data/lib/zendesk2/rate_limit.rb +4 -3
  149. data/lib/zendesk2/real.rb +25 -22
  150. data/lib/zendesk2/request.rb +78 -82
  151. data/lib/zendesk2/search.rb +8 -7
  152. data/lib/zendesk2/search_organization.rb +14 -14
  153. data/lib/zendesk2/search_user.rb +41 -37
  154. data/lib/zendesk2/searchable.rb +36 -26
  155. data/lib/zendesk2/ticket.rb +20 -18
  156. data/lib/zendesk2/ticket_audit.rb +5 -4
  157. data/lib/zendesk2/ticket_audits.rb +10 -11
  158. data/lib/zendesk2/ticket_change.rb +10 -11
  159. data/lib/zendesk2/ticket_comment.rb +2 -1
  160. data/lib/zendesk2/ticket_comment_privacy_change.rb +12 -14
  161. data/lib/zendesk2/ticket_comments.rb +7 -6
  162. data/lib/zendesk2/ticket_create.rb +8 -9
  163. data/lib/zendesk2/ticket_field.rb +5 -4
  164. data/lib/zendesk2/ticket_fields.rb +4 -3
  165. data/lib/zendesk2/ticket_metric.rb +2 -2
  166. data/lib/zendesk2/ticket_metrics.rb +3 -2
  167. data/lib/zendesk2/ticket_notification.rb +12 -13
  168. data/lib/zendesk2/ticket_voice_comment.rb +28 -29
  169. data/lib/zendesk2/tickets.rb +8 -7
  170. data/lib/zendesk2/topic.rb +49 -22
  171. data/lib/zendesk2/topic_comment.rb +12 -9
  172. data/lib/zendesk2/topic_comments.rb +4 -3
  173. data/lib/zendesk2/topics.rb +4 -3
  174. data/lib/zendesk2/update_category.rb +8 -6
  175. data/lib/zendesk2/update_forum.rb +5 -4
  176. data/lib/zendesk2/update_group.rb +5 -4
  177. data/lib/zendesk2/update_organization.rb +18 -9
  178. data/lib/zendesk2/update_request.rb +6 -5
  179. data/lib/zendesk2/update_ticket.rb +39 -38
  180. data/lib/zendesk2/update_ticket_field.rb +5 -4
  181. data/lib/zendesk2/update_topic.rb +5 -4
  182. data/lib/zendesk2/update_user.rb +39 -31
  183. data/lib/zendesk2/update_user_field.rb +4 -3
  184. data/lib/zendesk2/update_user_identity.rb +7 -6
  185. data/lib/zendesk2/update_view.rb +38 -34
  186. data/lib/zendesk2/user.rb +41 -37
  187. data/lib/zendesk2/user_field.rb +9 -6
  188. data/lib/zendesk2/user_fields.rb +4 -3
  189. data/lib/zendesk2/user_identities.rb +4 -3
  190. data/lib/zendesk2/user_identity.rb +12 -9
  191. data/lib/zendesk2/users.rb +5 -4
  192. data/lib/zendesk2/version.rb +2 -1
  193. data/lib/zendesk2/view.rb +24 -13
  194. data/lib/zendesk2/views.rb +3 -2
  195. data/spec/categories_spec.rb +63 -60
  196. data/spec/client_spec.rb +6 -5
  197. data/spec/forums_spec.rb +64 -61
  198. data/spec/groups_spec.rb +7 -8
  199. data/spec/help_center/articles_spec.rb +22 -26
  200. data/spec/help_center/categories_spec.rb +26 -27
  201. data/spec/help_center/posts_spec.rb +39 -0
  202. data/spec/help_center/sections_spec.rb +32 -33
  203. data/spec/help_center/topics_spec.rb +13 -0
  204. data/spec/lib/paged_collection_spec.rb +11 -11
  205. data/spec/lib/rate_limit_spec.rb +9 -8
  206. data/spec/memberships_spec.rb +38 -27
  207. data/spec/organizations_spec.rb +92 -87
  208. data/spec/shared/zendesk_resource.rb +40 -25
  209. data/spec/spec_helper.rb +8 -13
  210. data/spec/support/client_helper.rb +5 -4
  211. data/spec/support/data_helper.rb +1 -0
  212. data/spec/ticket_fields_spec.rb +6 -7
  213. data/spec/tickets_spec.rb +69 -58
  214. data/spec/topic_comments_spec.rb +7 -8
  215. data/spec/topics_spec.rb +5 -6
  216. data/spec/user_fields_spec.rb +7 -7
  217. data/spec/user_identities_spec.rb +29 -25
  218. data/spec/users_spec.rb +88 -78
  219. data/spec/views_spec.rb +45 -34
  220. data/spec/zendesk2_spec.rb +3 -2
  221. data/zendesk2.gemspec +15 -14
  222. 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("user_field").fetch("id")
9
+ params.fetch('user_field').fetch('id')
9
10
  end
10
11
 
11
12
  def user_field_params
12
- Cistern::Hash.slice(params.fetch("user_field"), *Zendesk2::CreateUserField.accepted_attributes)
13
+ Cistern::Hash.slice(params.fetch('user_field'), *Zendesk2::CreateUserField.accepted_attributes)
13
14
  end
14
15
 
15
16
  def mock
16
- mock_response("user_field" => find!(:user_fields, user_field_id).merge!(user_field_params))
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| { "identity" => r.user_identity_params } }
7
+ request_body { |r| { 'identity' => r.user_identity_params } }
7
8
 
8
9
  def self.accepted_attributes
9
- %w[verified]
10
+ %w(verified)
10
11
  end
11
12
 
12
13
  def user_id
13
- params.fetch("user_identity").fetch("user_id")
14
+ params.fetch('user_identity').fetch('user_id')
14
15
  end
15
16
 
16
17
  def user_identity_id
17
- params.fetch("user_identity").fetch("id")
18
+ params.fetch('user_identity').fetch('id')
18
19
  end
19
20
 
20
21
  def user_identity_params
21
- Cistern::Hash.slice(params.fetch("user_identity"), *self.class.accepted_attributes)
22
+ Cistern::Hash.slice(params.fetch('user_identity'), *self.class.accepted_attributes)
22
23
  end
23
24
 
24
25
  def mock
25
- mock_response("identity" => self.find!(:identities, user_identity_id).merge!(user_identity_params))
26
+ mock_response('identity' => find!(:identities, user_identity_id).merge!(user_identity_params))
26
27
  end
27
28
  end
@@ -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| { "view" => r.view_params } }
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::Createview.accepted_attributes
10
+ Zendesk2::CreateView.accepted_attributes
10
11
  end
11
12
 
12
13
  def view_params
13
- @_view_params ||= Cistern::Hash.slice(params.fetch("view"), *self.class.accepted_attributes)
14
+ Cistern::Hash.slice(params.fetch('view'), *self.class.accepted_attributes)
14
15
  end
15
16
 
16
17
  def view_id
17
- params.fetch("view").fetch("id")
18
+ params.fetch('view').fetch('id')
18
19
  end
19
20
 
20
21
  def mock
21
- body = self.find!(:views, view_id)
22
+ body = find!(:views, view_id)
22
23
 
23
- update_params = view_params.dup
24
+ update_params = view_params
24
25
 
25
- output = params.delete("output") || {}
26
- columns = (output["columns"] || []).inject([]) { |r,c| r << {"id" => c, "name" => Zendesk2::CreateView.view_columns.fetch(c)} }
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.merge!("updated_at" => Time.now.iso8601)
31
+ body['updated_at'] = Time.now.iso8601
29
32
 
30
33
  if columns.any?
31
- body.merge!(
32
- "execution" => {
33
- "columns" => columns,
34
- "fields" => columns,
35
- "custom_fields" => [],
36
- }
37
- )
34
+ body['execution'] = {
35
+ 'columns' => columns,
36
+ 'fields' => columns,
37
+ 'custom_fields' => [],
38
+ }
38
39
  end
39
40
 
40
- body["execution"]["conditions"].merge!(Cistern::Hash.slice(body, "any", "all"))
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
- body.merge!(group_params).merge!(
45
- "group" => {
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
- sort_params = Cistern::Hash.slice(body, "sort_by", "sort_order").merge(Cistern::Hash.slice(update_params, "sort_by", "sort_order"))
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
- body.merge!(sort_params).merge!(
55
- "sort" => {
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
- mock_response("view" => body)
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 portal
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. Possible values are: "organization", "groups", "assigned", "requested", null
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("user" => self.attributes)
76
+ cistern.create_user('user' => attributes)
74
77
  else
75
78
  requires :identity
76
79
 
77
- cistern.update_user("user" => self.attributes)
78
- end.body["user"]
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 self.email == cistern.username
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("user" => {"id" => self.identity}).body["user"]
92
+ cistern.destroy_user('user' => { 'id' => identity }).body['user']
92
93
  )
93
94
  end
94
95
 
95
96
  def destroyed?
96
- !reload || !self.active
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 = self.cistern.token || options[:token]
109
+ token = cistern.token || options[:token]
109
110
 
110
- uri = URI.parse(self.cistern.url)
111
- uri.path = "/access/remote"
111
+ uri = URI.parse(cistern.url)
112
+ uri.path = '/access/remote'
112
113
 
113
- raise "timestamp cannot be nil" unless timestamp
114
+ raise 'timestamp cannot be nil' unless timestamp
114
115
 
115
- hash_str = "#{self.name}#{self.email}#{token}#{timestamp}"
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 = self.cistern.jwt_token || options[:jwt_token]
139
+ jwt_token = cistern.jwt_token || options[:jwt_token]
141
140
 
142
- uri = URI.parse(self.cistern.url)
143
- uri.path = "/access/jwt"
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
- :iat => iat, # Seconds since epoch, determine when this token is stale
149
- :jti => jti, # Unique token id, helps prevent replay attacks
150
- :name => self.name,
151
- :email => self.email,
152
- }, jwt_token)
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: self.identity)
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: self.identity)
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
- self.cistern.user_identities("user_id" => self.identity)
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
- self.cistern.memberships(user: self)
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
- self.cistern.organizations(user: self)
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
@@ -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 A unique key that identifies this custom field. This is used for updating the field and referencing in placeholders.
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" (custom dropdown)
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("user_field" => self.attributes)
41
+ cistern.create_user_field('user_field' => attributes)
39
42
  else
40
43
  requires :identity
41
44
 
42
- cistern.update_user_field("user_field" => self.attributes)
45
+ cistern.update_user_field('user_field' => attributes)
43
46
  end
44
47
 
45
- merge_attributes(response.body["user_field"])
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("user_field" => { "id" => self.identity })
54
+ cistern.destroy_user_field('user_field' => { 'id' => identity })
52
55
  end
53
56
  end
@@ -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 = "user_fields"
12
+ self.collection_root = 'user_fields'
12
13
  self.model_method = :get_user_field
13
- self.model_root = "user_field"
14
- self.search_type = "user_field"
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 = "identities"
11
+ self.collection_root = 'identities'
11
12
  self.model_method = :get_user_identity
12
- self.model_root = "identity"
13
- self.namespace = "user_identity"
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("user_identity" => self.attributes)
31
+ cistern.create_user_identity('user_identity' => attributes)
31
32
  else
32
33
  requires :identity
33
34
 
34
- cistern.update_user_identity("user_identity" => self.attributes)
35
- end.body["identity"]
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("user_identity" => { "user_id" => self.user_id, "id" => self.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
- if model = self.cistern.user_identities("user_id" => user_id).get(identity)
50
- merge_attributes(model.attributes)
51
- self
52
- end
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
- self.cistern.mark_user_identity_primary("user_identity" => { "user_id" => self.user_id, "id" => self.identity })
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