zendesk2 1.4.2 → 1.5.3

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 (153) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +7 -1
  3. data/lib/zendesk2/attributes.rb +1 -1
  4. data/lib/zendesk2/{collection.rb → client/collection.rb} +22 -17
  5. data/lib/zendesk2/client/collections/categories.rb +2 -1
  6. data/lib/zendesk2/client/collections/forums.rb +2 -1
  7. data/lib/zendesk2/client/collections/groups.rb +4 -3
  8. data/lib/zendesk2/client/collections/help_center/articles.rb +2 -1
  9. data/lib/zendesk2/client/collections/help_center/categories.rb +2 -1
  10. data/lib/zendesk2/client/collections/help_center/sections.rb +2 -1
  11. data/lib/zendesk2/client/collections/memberships.rb +9 -7
  12. data/lib/zendesk2/client/collections/organizations.rb +3 -2
  13. data/lib/zendesk2/client/collections/ticket_audits.rb +5 -4
  14. data/lib/zendesk2/client/collections/ticket_comments.rb +4 -3
  15. data/lib/zendesk2/client/collections/ticket_fields.rb +3 -1
  16. data/lib/zendesk2/client/collections/tickets.rb +2 -1
  17. data/lib/zendesk2/client/collections/topic_comments.rb +2 -1
  18. data/lib/zendesk2/client/collections/topics.rb +2 -1
  19. data/lib/zendesk2/client/collections/user_fields.rb +3 -1
  20. data/lib/zendesk2/client/collections/user_identities.rb +3 -1
  21. data/lib/zendesk2/client/collections/users.rb +3 -2
  22. data/lib/zendesk2/client/help_center.rb +3 -0
  23. data/lib/zendesk2/client/mock.rb +7 -130
  24. data/lib/zendesk2/{model.rb → client/model.rb} +7 -3
  25. data/lib/zendesk2/client/models/audit_event.rb +2 -2
  26. data/lib/zendesk2/client/models/category.rb +8 -8
  27. data/lib/zendesk2/client/models/forum.rb +11 -16
  28. data/lib/zendesk2/client/models/group.rb +8 -13
  29. data/lib/zendesk2/client/models/help_center/article.rb +12 -16
  30. data/lib/zendesk2/client/models/help_center/category.rb +12 -16
  31. data/lib/zendesk2/client/models/help_center/section.rb +12 -16
  32. data/lib/zendesk2/client/models/membership.rb +10 -12
  33. data/lib/zendesk2/client/models/organization.rb +13 -20
  34. data/lib/zendesk2/client/models/ticket.rb +21 -19
  35. data/lib/zendesk2/client/models/ticket_audit.rb +3 -3
  36. data/lib/zendesk2/client/models/ticket_comment.rb +1 -1
  37. data/lib/zendesk2/client/models/ticket_comment_privacy_change.rb +1 -1
  38. data/lib/zendesk2/client/models/ticket_field.rb +5 -13
  39. data/lib/zendesk2/client/models/ticket_metric.rb +1 -1
  40. data/lib/zendesk2/client/models/ticket_voice_comment.rb +1 -1
  41. data/lib/zendesk2/client/models/topic.rb +9 -14
  42. data/lib/zendesk2/client/models/topic_comment.rb +14 -19
  43. data/lib/zendesk2/client/models/user.rb +25 -32
  44. data/lib/zendesk2/client/models/user_field.rb +10 -18
  45. data/lib/zendesk2/client/models/user_identity.rb +9 -18
  46. data/lib/zendesk2/client/real.rb +7 -8
  47. data/lib/zendesk2/client/request.rb +271 -0
  48. data/lib/zendesk2/client/requests/create_category.rb +19 -27
  49. data/lib/zendesk2/client/requests/create_forum.rb +23 -28
  50. data/lib/zendesk2/client/requests/create_group.rb +25 -29
  51. data/lib/zendesk2/client/requests/create_help_center_article.rb +54 -60
  52. data/lib/zendesk2/client/requests/create_help_center_category.rb +35 -47
  53. data/lib/zendesk2/client/requests/create_help_center_section.rb +49 -55
  54. data/lib/zendesk2/client/requests/create_membership.rb +42 -42
  55. data/lib/zendesk2/client/requests/create_organization.rb +30 -40
  56. data/lib/zendesk2/client/requests/create_ticket.rb +76 -85
  57. data/lib/zendesk2/client/requests/create_ticket_field.rb +36 -40
  58. data/lib/zendesk2/client/requests/create_topic.rb +23 -28
  59. data/lib/zendesk2/client/requests/create_topic_comment.rb +27 -31
  60. data/lib/zendesk2/client/requests/create_user.rb +51 -56
  61. data/lib/zendesk2/client/requests/create_user_field.rb +36 -40
  62. data/lib/zendesk2/client/requests/create_user_identity.rb +39 -44
  63. data/lib/zendesk2/client/requests/destroy_category.rb +8 -21
  64. data/lib/zendesk2/client/requests/destroy_forum.rb +8 -23
  65. data/lib/zendesk2/client/requests/destroy_group.rb +8 -21
  66. data/lib/zendesk2/client/requests/destroy_help_center_article.rb +8 -18
  67. data/lib/zendesk2/client/requests/destroy_help_center_category.rb +8 -18
  68. data/lib/zendesk2/client/requests/destroy_help_center_section.rb +10 -18
  69. data/lib/zendesk2/client/requests/destroy_membership.rb +8 -22
  70. data/lib/zendesk2/client/requests/destroy_organization.rb +8 -21
  71. data/lib/zendesk2/client/requests/destroy_ticket.rb +8 -21
  72. data/lib/zendesk2/client/requests/destroy_ticket_field.rb +8 -21
  73. data/lib/zendesk2/client/requests/destroy_topic.rb +8 -23
  74. data/lib/zendesk2/client/requests/destroy_topic_comment.rb +11 -24
  75. data/lib/zendesk2/client/requests/destroy_user.rb +17 -43
  76. data/lib/zendesk2/client/requests/destroy_user_field.rb +7 -22
  77. data/lib/zendesk2/client/requests/destroy_user_identity.rb +10 -25
  78. data/lib/zendesk2/client/requests/get_assignable_groups.rb +8 -16
  79. data/lib/zendesk2/client/requests/get_categories.rb +7 -15
  80. data/lib/zendesk2/client/requests/get_category.rb +11 -22
  81. data/lib/zendesk2/client/requests/get_ccd_tickets.rb +11 -18
  82. data/lib/zendesk2/client/requests/get_current_user.rb +6 -16
  83. data/lib/zendesk2/client/requests/get_forum.rb +11 -23
  84. data/lib/zendesk2/client/requests/get_forums.rb +7 -15
  85. data/lib/zendesk2/client/requests/get_group.rb +9 -23
  86. data/lib/zendesk2/client/requests/get_groups.rb +7 -15
  87. data/lib/zendesk2/client/requests/get_help_center_article.rb +13 -37
  88. data/lib/zendesk2/client/requests/get_help_center_articles.rb +6 -15
  89. data/lib/zendesk2/client/requests/get_help_center_categories.rb +6 -15
  90. data/lib/zendesk2/client/requests/get_help_center_category.rb +13 -37
  91. data/lib/zendesk2/client/requests/get_help_center_section.rb +14 -37
  92. data/lib/zendesk2/client/requests/get_help_center_sections.rb +6 -15
  93. data/lib/zendesk2/client/requests/get_membership.rb +9 -24
  94. data/lib/zendesk2/client/requests/get_organization.rb +9 -22
  95. data/lib/zendesk2/client/requests/get_organization_by_external_id.rb +11 -20
  96. data/lib/zendesk2/client/requests/get_organization_memberships.rb +10 -16
  97. data/lib/zendesk2/client/requests/get_organization_tickets.rb +14 -21
  98. data/lib/zendesk2/client/requests/get_organization_users.rb +12 -20
  99. data/lib/zendesk2/client/requests/get_organizations.rb +7 -16
  100. data/lib/zendesk2/client/requests/get_requested_tickets.rb +12 -18
  101. data/lib/zendesk2/client/requests/get_ticket.rb +9 -23
  102. data/lib/zendesk2/client/requests/get_ticket_audits.rb +12 -18
  103. data/lib/zendesk2/client/requests/get_ticket_comments.rb +10 -19
  104. data/lib/zendesk2/client/requests/get_ticket_field.rb +9 -22
  105. data/lib/zendesk2/client/requests/get_ticket_fields.rb +7 -15
  106. data/lib/zendesk2/client/requests/get_tickets.rb +7 -15
  107. data/lib/zendesk2/client/requests/get_topic.rb +8 -23
  108. data/lib/zendesk2/client/requests/get_topic_comment.rb +12 -28
  109. data/lib/zendesk2/client/requests/get_topic_comments.rb +13 -18
  110. data/lib/zendesk2/client/requests/get_topics.rb +6 -15
  111. data/lib/zendesk2/client/requests/get_user.rb +15 -28
  112. data/lib/zendesk2/client/requests/get_user_field.rb +9 -22
  113. data/lib/zendesk2/client/requests/get_user_identities.rb +11 -18
  114. data/lib/zendesk2/client/requests/get_user_identity.rb +11 -21
  115. data/lib/zendesk2/client/requests/get_user_memberships.rb +12 -18
  116. data/lib/zendesk2/client/requests/get_users.rb +7 -15
  117. data/lib/zendesk2/client/requests/mark_membership_default.rb +17 -28
  118. data/lib/zendesk2/client/requests/mark_user_identity_primary.rb +17 -30
  119. data/lib/zendesk2/client/requests/search.rb +30 -19
  120. data/lib/zendesk2/client/requests/search_help_center_articles.rb +22 -18
  121. data/lib/zendesk2/client/requests/search_organization.rb +40 -28
  122. data/lib/zendesk2/client/requests/search_user.rb +56 -44
  123. data/lib/zendesk2/client/requests/update_category.rb +14 -24
  124. data/lib/zendesk2/client/requests/update_forum.rb +13 -25
  125. data/lib/zendesk2/client/requests/update_group.rb +12 -24
  126. data/lib/zendesk2/client/requests/update_help_center_article.rb +17 -42
  127. data/lib/zendesk2/client/requests/update_help_center_category.rb +17 -42
  128. data/lib/zendesk2/client/requests/update_help_center_section.rb +17 -42
  129. data/lib/zendesk2/client/requests/update_organization.rb +23 -35
  130. data/lib/zendesk2/client/requests/update_ticket.rb +63 -63
  131. data/lib/zendesk2/client/requests/update_ticket_field.rb +12 -24
  132. data/lib/zendesk2/client/requests/update_topic.rb +11 -25
  133. data/lib/zendesk2/client/requests/update_user.rb +47 -62
  134. data/lib/zendesk2/client/requests/update_user_field.rb +11 -23
  135. data/lib/zendesk2/client/requests/update_user_identity.rb +20 -28
  136. data/lib/zendesk2/client.rb +52 -28
  137. data/lib/zendesk2/paged_collection.rb +9 -9
  138. data/lib/zendesk2/searchable.rb +1 -1
  139. data/lib/zendesk2/version.rb +1 -1
  140. data/lib/zendesk2.rb +1 -13
  141. data/spec/categories_spec.rb +132 -0
  142. data/spec/forums_spec.rb +132 -0
  143. data/spec/lib/paged_collection_spec.rb +2 -2
  144. data/spec/memberships_spec.rb +5 -9
  145. data/spec/organizations_spec.rb +176 -25
  146. data/spec/spec_helper.rb +2 -0
  147. data/spec/tickets_spec.rb +2 -2
  148. data/spec/topic_comments_spec.rb +2 -2
  149. data/spec/user_identities_spec.rb +9 -6
  150. data/spec/users_spec.rb +22 -21
  151. data/zendesk2.gemspec +1 -2
  152. metadata +7 -21
  153. data/lib/zendesk2/client/requests/update_topic_comment.rb +0 -37
@@ -1,5 +1,4 @@
1
- # @abstract subclass and implement {#save!} and {#destroy!}
2
- class Zendesk2::Model < Cistern::Model
1
+ class Zendesk2::Client::Model
3
2
  attr_accessor :errors
4
3
 
5
4
  # @abstract override in subclass
@@ -29,6 +28,11 @@ class Zendesk2::Model < Cistern::Model
29
28
 
30
29
  # re-define Cistern::Attributes#missing_attributes to require non-blank
31
30
  def missing_attributes(args)
32
- ([:connection] | args).select{|arg| val = send("#{arg}"); val.nil? || val == "" }
31
+ ([:service] | args).select{|arg| val = send("#{arg}"); val.nil? || val == "" }
32
+ end
33
+
34
+ def update!(attributes)
35
+ merge_attributes(attributes)
36
+ save!
33
37
  end
34
38
  end
@@ -1,5 +1,5 @@
1
1
  # @abstract subclass and implement audit event specific attributes
2
- class Zendesk2::Client::AuditEvent < Cistern::Model
2
+ class Zendesk2::Client::AuditEvent < Zendesk2::Client::Model
3
3
  extend Zendesk2::Attributes
4
4
  extend Forwardable
5
5
 
@@ -16,7 +16,7 @@ class Zendesk2::Client::AuditEvent < Cistern::Model
16
16
  if klass = all.find{|k| k.name == event_class}
17
17
  klass.new(attributes)
18
18
  else # handle unrecognized audit events
19
- attributes.reject{|k,v| k == :connection}
19
+ attributes.reject{|k,v| k == :service}
20
20
  end
21
21
  end
22
22
 
@@ -1,5 +1,4 @@
1
- class Zendesk2::Client::Category < Zendesk2::Model
2
- PARAMS = %w[id name description position]
1
+ class Zendesk2::Client::Category < Zendesk2::Client::Model
3
2
 
4
3
  # @return [Integer] Automatically assigned during creation
5
4
  identity :id, type: :integer
@@ -18,27 +17,28 @@ class Zendesk2::Client::Category < Zendesk2::Model
18
17
  attribute :url, type: :string
19
18
 
20
19
  def destroy!
21
- requires :id
20
+ requires :identity
22
21
 
23
- connection.destroy_category("id" => self.id)
22
+ service.destroy_category("category" => {"id" => self.identity})
24
23
  end
25
24
 
26
25
  def save!
27
26
  data = if new_record?
28
27
  requires :name
29
28
 
30
- connection.create_category(params).body["category"]
29
+ service.create_category(params).body["category"]
31
30
  else
32
31
  requires :identity
33
32
 
34
- connection.update_category(params).body["category"]
33
+ service.update_category(params).body["category"]
35
34
  end
35
+
36
36
  merge_attributes(data)
37
37
  end
38
38
 
39
- private
39
+ protected
40
40
 
41
41
  def params
42
- Cistern::Hash.slice(Zendesk2.stringify_keys(attributes), *PARAMS)
42
+ {"category" => Cistern::Hash.slice(Zendesk2.stringify_keys(attributes), *Zendesk2::Client::CreateCategory.accepted_attributes)}
43
43
  end
44
44
  end
@@ -1,8 +1,6 @@
1
- class Zendesk2::Client::Forum < Zendesk2::Model
1
+ class Zendesk2::Client::Forum < Zendesk2::Client::Model
2
2
  extend Zendesk2::Attributes
3
3
 
4
- PARAMS = %w[id name description category_id organization_id locale_id locked position forum_type access]
5
-
6
4
  identity :id, type: :integer # ro yes mandatory no Automatically assigned upon creation
7
5
  attribute :url, type: :string # ro yes mandatory no The API url of this forum
8
6
  attribute :name, type: :string # ro no mandatory yes The name of the forum
@@ -24,23 +22,20 @@ class Zendesk2::Client::Forum < Zendesk2::Model
24
22
  def destroy!
25
23
  requires :identity
26
24
 
27
- connection.destroy_forum("id" => self.identity)
25
+ service.destroy_forum("forum" => {"id" => self.identity})
28
26
  end
29
27
 
30
28
  def save!
31
- data = if new_record?
32
- requires :name
33
- connection.create_forum(params).body["forum"]
34
- else
35
- requires :identity
36
- connection.update_forum(params).body["forum"]
37
- end
38
- merge_attributes(data)
39
- end
29
+ response = if new_record?
30
+ requires :name
31
+
32
+ service.create_forum("forum" => self.attributes)
33
+ else
34
+ requires :identity
40
35
 
41
- private
36
+ service.update_forum("forum" => self.attributes)
37
+ end
42
38
 
43
- def params
44
- Cistern::Hash.slice(Zendesk2.stringify_keys(attributes), *PARAMS)
39
+ merge_attributes(response.body["forum"])
45
40
  end
46
41
  end
@@ -1,8 +1,6 @@
1
- class Zendesk2::Client::Group < Zendesk2::Model
1
+ class Zendesk2::Client::Group < Zendesk2::Client::Model
2
2
  extend Zendesk2::Attributes
3
3
 
4
- PARAMS = %w[name]
5
-
6
4
  # @return [Integer] Automatically assigned when creating groups
7
5
  identity :id, type: :integer
8
6
 
@@ -20,11 +18,13 @@ class Zendesk2::Client::Group < Zendesk2::Model
20
18
  def save!
21
19
  data = if new_record?
22
20
  requires :name
23
- connection.create_group(params).body["group"]
21
+
22
+ service.create_group("group" => self.attributes)
24
23
  else
25
24
  requires :identity
26
- connection.update_group(params.merge("id" => self.identity)).body["group"]
27
- end
25
+
26
+ service.update_group("group" => self.attributes)
27
+ end.body["group"]
28
28
 
29
29
  merge_attributes(data)
30
30
  end
@@ -32,17 +32,12 @@ class Zendesk2::Client::Group < Zendesk2::Model
32
32
  def destroy!
33
33
  requires :identity
34
34
 
35
- connection.destroy_group("id" => self.identity)
35
+ service.destroy_group("group" => {"id" => self.identity})
36
+
36
37
  self.deleted = true
37
38
  end
38
39
 
39
40
  def destroyed?
40
41
  self.deleted
41
42
  end
42
-
43
- private
44
-
45
- def params
46
- Cistern::Hash.slice(Zendesk2.stringify_keys(attributes), *PARAMS)
47
- end
48
43
  end
@@ -1,4 +1,4 @@
1
- class Zendesk2::Client::HelpCenter::Article < Zendesk2::Model
1
+ class Zendesk2::Client::HelpCenter::Article < Zendesk2::Client::Model
2
2
  extend Zendesk2::Attributes
3
3
 
4
4
  # @return [Integer] Automatically assigned when the article is created
@@ -44,26 +44,22 @@ class Zendesk2::Client::HelpCenter::Article < Zendesk2::Model
44
44
  assoc_accessor :section, collection: :help_center_sections
45
45
 
46
46
  def save!
47
- requires :title, :locale, :section_id
47
+ response = if new_record?
48
+ requires :title, :locale, :section_id
48
49
 
49
- data = if new_record?
50
- connection.create_help_center_article(params).body["article"]
51
- else
52
- connection.update_help_center_article(dirty_attributes.merge("id" => self.identity)).body["article"]
53
- end
50
+ service.create_help_center_article("article" => self.attributes)
51
+ else
52
+ requires :identity
54
53
 
55
- merge_attributes(data)
56
- end
57
-
58
- def destroy!
59
- requires :id
54
+ service.update_help_center_article("article" => self.attributes)
55
+ end
60
56
 
61
- connection.destroy_help_center_article(id)
57
+ merge_attributes(response.body["article"])
62
58
  end
63
59
 
64
- private
60
+ def destroy!
61
+ requires :identity
65
62
 
66
- def params
67
- Cistern::Hash.slice(self.attributes, :author_id, :body, :comments_disabled, :draft, :label_names, :locale, :position, :promoted, :section_id, :title)
63
+ service.destroy_help_center_article("article" => { "id" => self.identity })
68
64
  end
69
65
  end
@@ -1,4 +1,4 @@
1
- class Zendesk2::Client::HelpCenter::Category < Zendesk2::Model
1
+ class Zendesk2::Client::HelpCenter::Category < Zendesk2::Client::Model
2
2
  extend Zendesk2::Attributes
3
3
 
4
4
  # @return [Integer] Automatically assigned when creating categories
@@ -28,26 +28,22 @@ class Zendesk2::Client::HelpCenter::Category < Zendesk2::Model
28
28
  attribute :url, type: :string # ro:yes required:no
29
29
 
30
30
  def save!
31
- requires :name, :locale
31
+ response = if new_record?
32
+ requires :name, :locale
32
33
 
33
- data = if new_record?
34
- connection.create_help_center_category(params).body["category"]
35
- else
36
- connection.update_help_center_category(dirty_attributes.merge("id" => self.identity)).body["category"]
37
- end
34
+ service.create_help_center_category("category" => self.attributes)
35
+ else
36
+ requires :identity
38
37
 
39
- merge_attributes(data)
40
- end
41
-
42
- def destroy!
43
- requires :id
38
+ service.update_help_center_category("category" => self.attributes)
39
+ end
44
40
 
45
- connection.destroy_help_center_category(id)
41
+ merge_attributes(response.body["category"])
46
42
  end
47
43
 
48
- private
44
+ def destroy!
45
+ requires :identity
49
46
 
50
- def params
51
- Cistern::Hash.slice(self.attributes, :category_id, :description, :locale, :name, :position, :sorting)
47
+ service.destroy_help_center_category("category" => { "id" => self.identity })
52
48
  end
53
49
  end
@@ -1,4 +1,4 @@
1
- class Zendesk2::Client::HelpCenter::Section < Zendesk2::Model
1
+ class Zendesk2::Client::HelpCenter::Section < Zendesk2::Client::Model
2
2
  extend Zendesk2::Attributes
3
3
 
4
4
  # @return [Integer] Automatically assigned when creating subscriptions
@@ -35,26 +35,22 @@ class Zendesk2::Client::HelpCenter::Section < Zendesk2::Model
35
35
  assoc_accessor :category, collection: :help_center_categories
36
36
 
37
37
  def save!
38
- requires :name, :locale, :category_id
38
+ response = if new_record?
39
+ requires :name, :locale, :category_id
39
40
 
40
- data = if new_record?
41
- connection.create_help_center_section(params).body["section"]
42
- else
43
- connection.update_help_center_section(dirty_attributes.merge("id" => self.identity)).body["section"]
44
- end
41
+ service.create_help_center_section("section" => self.attributes)
42
+ else
43
+ requires :identity
45
44
 
46
- merge_attributes(data)
47
- end
48
-
49
- def destroy!
50
- requires :id
45
+ service.update_help_center_section("section" => self.attributes)
46
+ end
51
47
 
52
- connection.destroy_help_center_section(id)
48
+ merge_attributes(response.body["section"])
53
49
  end
54
50
 
55
- private
51
+ def destroy!
52
+ requires :identity
56
53
 
57
- def params
58
- Cistern::Hash.slice(self.attributes, :category_id, :description, :locale, :name, :position, :sorting)
54
+ service.destroy_help_center_section("section" => { "id" => self.identity })
59
55
  end
60
56
  end
@@ -1,8 +1,6 @@
1
- class Zendesk2::Client::Membership < Zendesk2::Model
1
+ class Zendesk2::Client::Membership < Zendesk2::Client::Model
2
2
  extend Zendesk2::Attributes
3
3
 
4
- PARAMS = %w[user_id organization_id default]
5
-
6
4
  # @return [Integer] Automatically assigned upon creation
7
5
  identity :id, type: :integer
8
6
 
@@ -26,31 +24,31 @@ class Zendesk2::Client::Membership < Zendesk2::Model
26
24
  data = if new_record?
27
25
  requires :organization_id, :user_id
28
26
 
29
- connection.create_membership(params).body["organization_membership"]
27
+ service.create_membership("membership" => self.attributes).body["organization_membership"]
30
28
  else
31
29
  requires :identity
32
30
 
33
31
  raise ArgumentError, "update not implemented"
34
32
  end
33
+
35
34
  merge_attributes(data)
36
35
  end
37
36
 
38
37
  def destroy!
39
38
  requires :identity
40
39
 
41
- connection.destroy_membership("id" => self.identity)
40
+ service.destroy_membership("membership" => { "id" => self.identity })
42
41
  end
43
42
 
44
43
  def default!
45
44
  requires :identity, :user_id
46
45
 
47
- self.connection.mark_membership_default("user_id" => self.user_id, "id" => self.identity)
48
- self.default = true
49
- end
50
-
51
- private
46
+ self.service.mark_membership_default(
47
+ "membership" => {
48
+ "user_id" => self.user_id,
49
+ "id" => self.identity
50
+ })
52
51
 
53
- def params
54
- Cistern::Hash.slice(Zendesk2.stringify_keys(attributes), *PARAMS)
52
+ self.default = true
55
53
  end
56
54
  end
@@ -1,5 +1,4 @@
1
- class Zendesk2::Client::Organization < Zendesk2::Model
2
- PARAMS = %w[id details domain_names external_id group_id organization_fields shared_comments shared_tickets tags name notes]
1
+ class Zendesk2::Client::Organization < Zendesk2::Client::Model
3
2
 
4
3
  # @return [integer] Automatically assigned when creating organization
5
4
  identity :id, type: :integer # ro[yes] required[no]
@@ -34,51 +33,45 @@ class Zendesk2::Client::Organization < Zendesk2::Model
34
33
  def destroy!
35
34
  requires :identity
36
35
 
37
- connection.destroy_organization("id" => self.identity)
36
+ service.destroy_organization("organization" => {"id" => self.identity})
38
37
  end
39
38
 
40
39
  def save!
41
40
  data = if new_record?
42
41
  requires :name
43
42
 
44
- connection.create_organization(params).body["organization"]
43
+ service.create_organization("organization" => self.attributes)
45
44
  else
46
45
  requires :identity
47
46
 
48
- connection.update_organization(params).body["organization"]
49
- end
47
+ service.update_organization("organization" => self.attributes)
48
+ end.body["organization"]
49
+
50
50
  merge_attributes(data)
51
51
  end
52
52
 
53
53
  # @return [Zendesk2::Client::Users] users associated with this organization
54
54
  def users
55
55
  requires :identity
56
- data = connection.get_organization_users("id" => self.identity).body["users"]
57
56
 
58
- connection.users.load(data)
57
+ service.users.load(
58
+ service.get_organization_users("organization" => {"id" => self.identity}).body["users"]
59
+ )
59
60
  end
60
61
 
61
62
  # @return [Zendesk2::Client::Memberships] memberships associated with this organization
62
63
  def memberships
63
64
  requires :identity
64
65
 
65
- connection.memberships(organization: self)
66
+ service.memberships(organization: self)
66
67
  end
67
68
 
68
69
  # @return [Zendesk2::Client::Tickets] tickets associated with this organization
69
70
  def tickets
70
71
  requires :identity
71
- data = connection.get_organization_tickets("id" => self.identity).body["tickets"]
72
-
73
- connection.tickets.load(data)
74
- end
75
-
76
- private
77
72
 
78
- def params
79
- writable_attributes = Cistern::Hash.slice(Zendesk2.stringify_keys(attributes), *PARAMS)
80
- writable_attributes.delete("external_id") if writable_attributes["external_id"].to_s == "0"
81
- writable_attributes.delete("group_id") if writable_attributes["group_id"].to_s == "0"
82
- writable_attributes
73
+ service.tickets.load(
74
+ service.get_organization_tickets("organization_id" => self.identity).body["tickets"]
75
+ )
83
76
  end
84
77
  end
@@ -1,8 +1,6 @@
1
- class Zendesk2::Client::Ticket < Zendesk2::Model
1
+ class Zendesk2::Client::Ticket < Zendesk2::Client::Model
2
2
  extend Zendesk2::Attributes
3
3
 
4
- PARAMS = %w[external_id via priority requester_id submitter_id assignee_id organization_id subject description custom_fields recipient status collaborator_ids tags]
5
-
6
4
  # @return [Integer] Automatically assigned when creating tickets
7
5
  identity :id, type: :integer
8
6
  # @return [Integer] What agent is currently assigned to the ticket
@@ -67,13 +65,17 @@ class Zendesk2::Client::Ticket < Zendesk2::Model
67
65
  data = if new_record?
68
66
  requires :subject, :description
69
67
 
70
- with_requester = (@requester || nil) && Zendesk2.stringify_keys(@requester)
68
+ create_attributes = self.attributes.dup
69
+
70
+ if with_requester = (@requester || nil) && Zendesk2.stringify_keys(@requester)
71
+ create_attributes.merge!("requester" => with_requester)
72
+ end
71
73
 
72
- connection.create_ticket(params.merge("requester" => with_requester)).body["ticket"]
74
+ service.create_ticket("ticket" => create_attributes).body["ticket"]
73
75
  else
74
76
  requires :identity
75
77
 
76
- connection.update_ticket(params.merge("id" => self.identity)).body["ticket"]
78
+ service.update_ticket("ticket" => self.attributes).body["ticket"]
77
79
  end
78
80
 
79
81
  merge_attributes(data)
@@ -82,7 +84,7 @@ class Zendesk2::Client::Ticket < Zendesk2::Model
82
84
  def destroy!
83
85
  requires :identity
84
86
 
85
- connection.destroy_ticket("id" => self.identity)
87
+ service.destroy_ticket("ticket" => {"id" => self.identity})
86
88
  end
87
89
 
88
90
  # Adds a ticket comment
@@ -96,16 +98,22 @@ class Zendesk2::Client::Ticket < Zendesk2::Model
96
98
  requires :identity
97
99
 
98
100
  options[:public] = true if options[:public].nil?
101
+
99
102
  comment = Zendesk2.stringify_keys(options).merge("body" => text)
100
103
 
101
- connection.ticket_comments.new(
102
- connection.update_ticket("id" => self.identity, "comment" => comment).body["audit"]["events"].first
104
+ service.ticket_comments.new(
105
+ service.update_ticket(
106
+ "ticket" => {
107
+ "id" => self.identity,
108
+ "comment" => comment,
109
+ }
110
+ ).body["audit"]["events"].first
103
111
  )
104
112
  end
105
113
 
106
114
  # @return [Array<Zendesk2::Client::User>] All users CCD on this ticket
107
115
  def collaborators
108
- self.collaborator_ids.map{|cid| self.connection.users.get(cid)}
116
+ self.collaborator_ids.map { |cid| self.service.users.get(cid) }
109
117
  end
110
118
 
111
119
  # Update list of users to be CCD on this ticket
@@ -116,22 +124,16 @@ class Zendesk2::Client::Ticket < Zendesk2::Model
116
124
 
117
125
  # @return [Zendesk2::Client::TicketAudits] all audits for this ticket
118
126
  def audits
119
- self.connection.ticket_audits(ticket_id: self.identity).all
127
+ self.service.ticket_audits(ticket_id: self.identity).all
120
128
  end
121
129
 
122
130
  # @return [Zendesk2::Client::TicketMetric] metrics for this ticket
123
131
  def metrics
124
- Zendesk2::Client::TicketMetric.new(self.connection.get_ticket_metric("ticket_id" => self.identity).body["ticket_metric"])
132
+ Zendesk2::Client::TicketMetric.new(self.service.get_ticket_metric("ticket_id" => self.identity).body["ticket_metric"])
125
133
  end
126
134
 
127
135
  # @return [Array<Zendesk2::Client::TicketComment>] all comments for this ticket
128
136
  def comments
129
- self.connection.ticket_comments(ticket_id: self.identity).all
130
- end
131
-
132
- private
133
-
134
- def params
135
- Cistern::Hash.slice(Zendesk2.stringify_keys(attributes), *PARAMS)
137
+ self.service.ticket_comments(ticket_id: self.identity).all
136
138
  end
137
139
  end