zendesk2 1.4.2 → 1.5.3

Sign up to get free protection for your applications and to get access to all the features.
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