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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a75f9d7681dd7fc05b70ffaac7cd40f4d7b0e0d2
4
- data.tar.gz: da867a0ca54e8645a7ba70f301810474509dc640
3
+ metadata.gz: c144b75c399e6341efe72d69133be4abe3dff438
4
+ data.tar.gz: 71f62dd8b8c08825f44486be2f1bdcd035571fd0
5
5
  SHA512:
6
- metadata.gz: 66a38be00688b1ee608f8898ac88cb96137f056a5eb116039f30ab143994dede0dbba3442c6bcae7503dc94d2d2f45b89a366624787fd2437c6129cc5cb3d354
7
- data.tar.gz: 222bf38cead5cbbae73790862d893fbf7bccb1758d075980e03a7da722b7ce2b724d5c05fc8d364ab479a02a30efd9be892d30953349f8ed44be99c6fab1608c
6
+ metadata.gz: 27f2a692f0471b39fe9b33c7edee0f4d84639d325412f64cb3587f2687943ff93833c9c87e1e9559817a88b2181bf4934aa027af6472cdb79499f911ae44b793
7
+ data.tar.gz: 29214d0384eedab7f1399ec05b872ac82d528b684fe2313551dc77e2b696a0fd54d80fcd8cb99393ab0270424d1ec9b43d8b0d9546124685ccb1dde6d1381481
data/README.md CHANGED
@@ -56,7 +56,7 @@ Zendesk2::Client.new(url: "http://support.cloud.engineyard.com", username: "mate
56
56
 
57
57
  #### Collections
58
58
 
59
- Currently support resources
59
+ Currently support resources:
60
60
 
61
61
  * Audit Events
62
62
  * Categories
@@ -73,6 +73,12 @@ Currently support resources
73
73
  * User Fields
74
74
  * Users
75
75
 
76
+ Help Center resources:
77
+
78
+ * Sections
79
+ * Articles
80
+ * Categories
81
+
76
82
  All collection are accessed like so:
77
83
 
78
84
  ```ruby
@@ -4,7 +4,7 @@ module Zendesk2::Attributes
4
4
  collection = options[:collection] || "#{name}s"
5
5
  define_method(name) do
6
6
  if assoc_id = self.send(assoc_key)
7
- self.connection.send(collection).get(assoc_id)
7
+ self.service.send(collection).get(assoc_id)
8
8
  else self.instance_variable_get("@#{name}")
9
9
  end
10
10
  end
@@ -1,15 +1,24 @@
1
- # @abstract Subclass and set #{collection_method}, #{collection_root}, #{model_method}, #{model_root} and #{model}
2
- # adds {#create!} method to {Cistern::Collection}.
3
- class Zendesk2::Collection < Cistern::Collection
4
- def self.inherited(klass)
5
- klass.send(:attribute, :count)
6
- klass.send(:extend, ClassMethods)
1
+ class Zendesk2::Client::Collection
2
+
3
+ class << self
4
+ attr_accessor :collection_method, :collection_root, :model_method, :model_root
5
+
6
+ attr_writer :namespace
7
+
8
+ def namespace
9
+ @namespace || self.model_root
10
+ end
11
+
12
+ def scopes
13
+ @scopes ||= []
14
+ end
7
15
  end
8
16
 
9
17
  def collection_method; self.class.collection_method; end
10
18
  def collection_root; self.class.collection_root; end
11
19
  def model_method; self.class.model_method; end
12
20
  def model_root; self.class.model_root; end
21
+ def namespace; self.class.namespace; end
13
22
 
14
23
  # Attempt creation of resource and explode if unsuccessful
15
24
  # @raise [Zendesk2::Error] if creation was unsuccessful
@@ -30,7 +39,7 @@ class Zendesk2::Collection < Cistern::Collection
30
39
  # Fetch a collection of resources
31
40
  def all(params={})
32
41
  scoped_attributes = self.class.scopes.inject({}){|r,k| r.merge(k.to_s => send(k))}.merge(params)
33
- body = connection.send(collection_method, scoped_attributes).body
42
+ body = service.send(collection_method, scoped_attributes).body
34
43
 
35
44
  self.load(body[collection_root])
36
45
  self.merge_attributes(Cistern::Hash.slice(body, "count"))
@@ -53,12 +62,16 @@ class Zendesk2::Collection < Cistern::Collection
53
62
  # @return [Zendesk2::Model] fetched resource corresponding to value of {Zendesk2::Collection#model}
54
63
  def get!(identity_or_hash)
55
64
  scoped_attributes = self.class.scopes.inject({}){|r,k| r.merge(k.to_s => send(k))}
65
+
56
66
  if identity_or_hash.is_a?(Hash)
57
67
  scoped_attributes.merge!(identity_or_hash)
58
- else scoped_attributes.merge!("id" => identity_or_hash)
68
+ else
69
+ scoped_attributes.merge!("id" => identity_or_hash)
59
70
  end
60
71
 
61
- if data = self.connection.send(model_method, scoped_attributes).body[self.model_root]
72
+ scoped_attributes = { namespace => scoped_attributes }
73
+
74
+ if data = self.service.send(model_method, scoped_attributes).body[self.model_root]
62
75
  new(data)
63
76
  end
64
77
  end
@@ -72,12 +85,4 @@ class Zendesk2::Collection < Cistern::Collection
72
85
  rescue Zendesk2::Error
73
86
  nil
74
87
  end
75
-
76
- module ClassMethods
77
- attr_accessor :collection_method, :collection_root, :model_method, :model_root
78
-
79
- def scopes
80
- @scopes ||= []
81
- end
82
- end
83
88
  end
@@ -1,4 +1,5 @@
1
- class Zendesk2::Client::Categories < Zendesk2::PagedCollection
1
+ class Zendesk2::Client::Categories < Zendesk2::Client::Collection
2
+ include Zendesk2::PagedCollection
2
3
  include Zendesk2::Searchable
3
4
 
4
5
  model Zendesk2::Client::Category
@@ -1,4 +1,5 @@
1
- class Zendesk2::Client::Forums < Zendesk2::PagedCollection
1
+ class Zendesk2::Client::Forums < Zendesk2::Client::Collection
2
+ include Zendesk2::PagedCollection
2
3
  include Zendesk2::Searchable
3
4
 
4
5
  model Zendesk2::Client::Forum
@@ -1,4 +1,5 @@
1
- class Zendesk2::Client::Groups < Zendesk2::PagedCollection
1
+ class Zendesk2::Client::Groups < Zendesk2::Client::Collection
2
+ include Zendesk2::PagedCollection
2
3
  include Zendesk2::Searchable
3
4
 
4
5
  model Zendesk2::Client::Group
@@ -10,8 +11,8 @@ class Zendesk2::Client::Groups < Zendesk2::PagedCollection
10
11
  self.search_type = "group"
11
12
 
12
13
  def assignable
13
- data = self.connection.get_assignable_groups.body
14
- collection = self.connection.groups.load(data["groups"])
14
+ data = self.service.get_assignable_groups.body
15
+ collection = self.service.groups.load(data["groups"])
15
16
  collection.merge_attributes(Cistern::Hash.slice(data, "next_page", "previous_page", "count"))
16
17
  end
17
18
  end
@@ -1,4 +1,5 @@
1
- class Zendesk2::Client::HelpCenter::Articles < Zendesk2::PagedCollection
1
+ class Zendesk2::Client::HelpCenter::Articles < Zendesk2::Client::Collection
2
+ include Zendesk2::PagedCollection
2
3
  include Zendesk2::Searchable
3
4
 
4
5
  model Zendesk2::Client::HelpCenter::Article
@@ -1,4 +1,5 @@
1
- class Zendesk2::Client::HelpCenter::Categories < Zendesk2::PagedCollection
1
+ class Zendesk2::Client::HelpCenter::Categories < Zendesk2::Client::Collection
2
+ include Zendesk2::PagedCollection
2
3
  include Zendesk2::Searchable
3
4
 
4
5
  model Zendesk2::Client::HelpCenter::Category
@@ -1,4 +1,5 @@
1
- class Zendesk2::Client::HelpCenter::Sections < Zendesk2::PagedCollection
1
+ class Zendesk2::Client::HelpCenter::Sections < Zendesk2::Client::Collection
2
+ include Zendesk2::PagedCollection
2
3
  include Zendesk2::Searchable
3
4
 
4
5
  model Zendesk2::Client::HelpCenter::Section
@@ -1,28 +1,30 @@
1
- class Zendesk2::Client::Memberships < Zendesk2::Collection
1
+ class Zendesk2::Client::Memberships < Zendesk2::Client::Collection
2
2
  extend Zendesk2::Attributes
3
3
 
4
4
  model Zendesk2::Client::Membership
5
5
 
6
6
  attribute :user_id, type: :integer
7
7
  attribute :organization_id, type: :integer
8
+ attribute :count, type: :integer
8
9
 
9
10
  assoc_accessor :organization
10
11
  assoc_accessor :user
11
12
 
12
- self.collection_root = "organization_memberships"
13
- self.model_method = :get_membership
14
- self.model_root = "organization_membership"
13
+ self.collection_root = "organization_memberships"
14
+ self.model_method = :get_membership
15
+ self.model_root = "organization_membership"
15
16
 
16
17
  def all(params={})
17
18
  requires_one :user_id, :organization_id
18
19
 
19
20
  body = if self.user_id && self.organization_id
20
- { "organization_memberships" => [ connection.get_membership("user_id" => self.user_id, "organization_id" => self.organization_id).body["organization_membership"] ]
21
+ {
22
+ "organization_memberships" => [ service.get_membership("user_id" => self.user_id, "organization_id" => self.organization_id).body["organization_membership"] ]
21
23
  }
22
24
  elsif self.user_id
23
- connection.get_user_memberships("user_id" => self.user_id).body
25
+ service.get_user_memberships("membership" => { "user_id" => self.user_id }).body
24
26
  else
25
- connection.get_organization_memberships("organization_id" => self.organization_id).body
27
+ service.get_organization_memberships("membership" => { "organization_id" => self.organization_id }).body
26
28
  end
27
29
 
28
30
  self.load(body[collection_root])
@@ -1,10 +1,11 @@
1
- class Zendesk2::Client::Organizations < Zendesk2::PagedCollection
1
+ class Zendesk2::Client::Organizations < Zendesk2::Client::Collection
2
+ include Zendesk2::PagedCollection
2
3
  include Zendesk2::Searchable
3
4
 
4
5
  model Zendesk2::Client::Organization
5
6
 
6
7
  def find_by_external_id(external_id)
7
- body = connection.get_organization_by_external_id(external_id).body
8
+ body = service.get_organization_by_external_id("external_id" => external_id).body
8
9
  if data = body.delete("organizations")
9
10
  collection = self.clone.load(data)
10
11
  collection.merge_attributes(Cistern::Hash.slice(body, "count", "next_page", "previous_page"))
@@ -1,4 +1,5 @@
1
- class Zendesk2::Client::TicketAudits < Zendesk2::PagedCollection
1
+ class Zendesk2::Client::TicketAudits < Zendesk2::Client::Collection
2
+ include Zendesk2::PagedCollection
2
3
 
3
4
  model Zendesk2::Client::TicketAudit
4
5
 
@@ -10,13 +11,13 @@ class Zendesk2::Client::TicketAudits < Zendesk2::PagedCollection
10
11
  self.model_root = "audit"
11
12
 
12
13
  def ticket
13
- self.connection.tickets.get(self.ticket_id)
14
+ self.service.tickets.get(self.ticket_id)
14
15
  end
15
16
 
16
17
  def all(params={})
17
18
  requires :ticket_id
18
19
 
19
- body = connection.send(collection_method, {"ticket_id" => self.ticket_id}.merge(params)).body
20
+ body = service.send(collection_method, {"ticket_id" => self.ticket_id}.merge(params)).body
20
21
 
21
22
  collection = self.clone.load(body[collection_root])
22
23
  collection.merge_attributes(Cistern::Hash.slice(body, "count", "next_page", "previous_page"))
@@ -26,7 +27,7 @@ class Zendesk2::Client::TicketAudits < Zendesk2::PagedCollection
26
27
  def get(id)
27
28
  requires :ticket_id
28
29
 
29
- if data = self.connection.send(model_method, {"ticket_id" => self.ticket_id, "id" => id}).body[self.model_root]
30
+ if data = self.service.send(model_method, {"ticket_id" => self.ticket_id, "id" => id}).body[self.model_root]
30
31
  new(data)
31
32
  end
32
33
  rescue Zendesk2::Error
@@ -1,4 +1,5 @@
1
- class Zendesk2::Client::TicketComments < Zendesk2::PagedCollection
1
+ class Zendesk2::Client::TicketComments < Zendesk2::Client::Collection
2
+ include Zendesk2::PagedCollection
2
3
 
3
4
  model Zendesk2::Client::TicketComment
4
5
 
@@ -8,13 +9,13 @@ class Zendesk2::Client::TicketComments < Zendesk2::PagedCollection
8
9
  self.collection_root = "comments"
9
10
 
10
11
  def ticket
11
- self.connection.tickets.get(self.ticket_id)
12
+ self.service.tickets.get(self.ticket_id)
12
13
  end
13
14
 
14
15
  def all(params={})
15
16
  requires :ticket_id
16
17
 
17
- body = connection.send(collection_method, {"ticket_id" => self.ticket_id}.merge(params)).body
18
+ body = service.send(collection_method, {"ticket_id" => self.ticket_id}.merge(params)).body
18
19
 
19
20
  collection = self.clone.load(body[collection_root])
20
21
  collection.merge_attributes(Cistern::Hash.slice(body, "count", "next_page", "previous_page"))
@@ -1,8 +1,10 @@
1
- class Zendesk2::Client::TicketFields < Zendesk2::Collection
1
+ class Zendesk2::Client::TicketFields < Zendesk2::Client::Collection
2
2
  include Zendesk2::Searchable
3
3
 
4
4
  model Zendesk2::Client::TicketField
5
5
 
6
+ attribute :count, type: :integer
7
+
6
8
  self.collection_method = :get_ticket_fields
7
9
  self.collection_root = "ticket_fields"
8
10
  self.model_method = :get_ticket_field
@@ -1,4 +1,5 @@
1
- class Zendesk2::Client::Tickets < Zendesk2::PagedCollection
1
+ class Zendesk2::Client::Tickets < Zendesk2::Client::Collection
2
+ include Zendesk2::PagedCollection
2
3
  include Zendesk2::Searchable
3
4
 
4
5
  model Zendesk2::Client::Ticket
@@ -1,4 +1,5 @@
1
- class Zendesk2::Client::TopicComments < Zendesk2::PagedCollection
1
+ class Zendesk2::Client::TopicComments < Zendesk2::Client::Collection
2
+ include Zendesk2::PagedCollection
2
3
  include Zendesk2::Searchable
3
4
 
4
5
  model Zendesk2::Client::TopicComment
@@ -1,4 +1,5 @@
1
- class Zendesk2::Client::Topics < Zendesk2::PagedCollection
1
+ class Zendesk2::Client::Topics < Zendesk2::Client::Collection
2
+ include Zendesk2::PagedCollection
2
3
  include Zendesk2::Searchable
3
4
 
4
5
  model Zendesk2::Client::Topic
@@ -1,8 +1,10 @@
1
- class Zendesk2::Client::UserFields < Zendesk2::Collection
1
+ class Zendesk2::Client::UserFields < Zendesk2::Client::Collection
2
2
  include Zendesk2::Searchable
3
3
 
4
4
  model Zendesk2::Client::UserField
5
5
 
6
+ attribute :count
7
+
6
8
  self.collection_method = :get_user_fields
7
9
  self.collection_root = "user_fields"
8
10
  self.model_method = :get_user_field
@@ -1,12 +1,14 @@
1
- class Zendesk2::Client::UserIdentities < Zendesk2::Collection
1
+ class Zendesk2::Client::UserIdentities < Zendesk2::Client::Collection
2
2
  model Zendesk2::Client::UserIdentity
3
3
 
4
4
  attribute :user_id, type: :integer
5
+ attribute :count, type: :integer
5
6
 
6
7
  self.collection_method = :get_user_identities
7
8
  self.collection_root = "identities"
8
9
  self.model_method = :get_user_identity
9
10
  self.model_root = "identity"
11
+ self.namespace = "user_identity"
10
12
 
11
13
  scopes << :user_id
12
14
  end
@@ -1,4 +1,5 @@
1
- class Zendesk2::Client::Users < Zendesk2::PagedCollection
1
+ class Zendesk2::Client::Users < Zendesk2::Client::Collection
2
+ include Zendesk2::PagedCollection
2
3
  include Zendesk2::Searchable
3
4
 
4
5
  model Zendesk2::Client::User
@@ -11,6 +12,6 @@ class Zendesk2::Client::Users < Zendesk2::PagedCollection
11
12
  self.search_request = :search_user
12
13
 
13
14
  def current
14
- new(connection.get_current_user.body["user"])
15
+ new(service.get_current_user.body["user"])
15
16
  end
16
17
  end
@@ -1 +1,4 @@
1
1
  module Zendesk2::Client::HelpCenter; end
2
+
3
+ Dir[File.expand_path("../requests/*_help_center_*.rb", __FILE__)].each { |f| require(f) }
4
+ Dir[File.expand_path("../{models,collections}/help_center/*.rb", __FILE__)].each { |f| require(f) }
@@ -1,8 +1,8 @@
1
1
  class Zendesk2::Client < Cistern::Service
2
2
  class Mock
3
- include Shared
4
3
 
5
4
  attr_reader :username, :url, :token, :jwt_token
5
+ attr_accessor :last_request
6
6
 
7
7
  def self.data
8
8
  @data ||= {
@@ -27,28 +27,24 @@ class Zendesk2::Client < Cistern::Service
27
27
  }
28
28
  end
29
29
 
30
- def self.new_id
30
+ def self.serial_id
31
31
  @current_id ||= 0
32
32
  @current_id += 1
33
- @current_id.to_s
33
+ @current_id
34
34
  end
35
35
 
36
- def data
37
- self.class.data
38
- end
39
-
40
- def self.reset!
41
- @data = nil
36
+ def serial_id
37
+ self.class.serial_id
42
38
  end
43
39
 
44
40
  def initialize(options={})
45
41
  @url = options[:url]
46
- @path = Addressable::URI.parse(url).path
42
+ @path = URI.parse(url).path
47
43
  @username, @password = options[:username], options[:password]
48
44
  @token = options[:token]
49
45
  @jwt_token = options[:jwt_token]
50
46
 
51
- @current_user ||= self.create_user("email" => @username, "name" => "Mock Agent").body["user"]
47
+ @current_user ||= self.create_user("user" => {"email" => @username, "name" => "Mock Agent"}).body["user"]
52
48
  @current_user_identity ||= self.data[:identities].values.first
53
49
  end
54
50
 
@@ -60,124 +56,5 @@ class Zendesk2::Client < Cistern::Service
60
56
 
61
57
  @current_user
62
58
  end
63
-
64
- def html_url_for(path)
65
- File.join(@url, path.to_s)
66
- end
67
-
68
- def url_for(path, options={})
69
- Addressable::URI.parse(
70
- File.join(@url, "/api/v2", path.to_s)
71
- ).tap do |uri|
72
- uri.query_values = options.fetch(:query, {})
73
- end.to_s
74
- end
75
-
76
- def resources(collection, path, collection_root, options={})
77
- filter = options[:filter]
78
- resources = self.data[collection].values
79
- resources = filter.call(resources) if filter
80
- count = resources.size
81
-
82
- response(
83
- :body => {
84
- collection_root => resources,
85
- "count" => count,
86
- },
87
- :path => path
88
- )
89
- end
90
-
91
- def page(params, collection, path, collection_root, options={})
92
- page_params = Zendesk2.paging_parameters(params)
93
- page_size = (page_params["per_page"] || 100).to_i
94
- page_index = (page_params["page"] || 1).to_i
95
- offset = (page_index - 1) * page_size
96
- filter = options[:filter]
97
- resources = options[:resources] || self.data[collection].values
98
- resources = filter.call(resources) if filter
99
- count = resources.size
100
- total_pages = (count / page_size) + 1
101
-
102
- query = options.fetch(:query, {})
103
-
104
- next_page = if page_index < total_pages
105
- url_for(path, query: {page: page_index + 1, per_page: page_size}.merge(query))
106
- end
107
- previous_page = if page_index > 1
108
- url_for(path, query: {page: page_index - 1, per_page: page_size}.merge(query))
109
- end
110
-
111
- resource_page = resources.slice(offset, page_size)
112
-
113
- body = {
114
- collection_root => resource_page,
115
- "count" => count,
116
- "next_page" => next_page,
117
- "previous_page" => previous_page,
118
- }
119
-
120
- response(
121
- :body => body,
122
- :path => path
123
- )
124
- end
125
-
126
- def pluralize(word)
127
- pluralized = word.dup
128
- [[/y$/, 'ies'], [/$/, 's']].find{|regex, replace| pluralized.gsub!(regex, replace) if pluralized.match(regex)}
129
- pluralized
130
- end
131
-
132
- def self.error_map
133
- @@error_map ||= {
134
- :invalid => [422, {
135
- "error" => "RecordInvalid",
136
- "description" => "Record validation errors",
137
- }],
138
- :not_found => [404, {
139
- "error" => "RecordNotFound",
140
- "description" => "Not found",
141
- }],
142
- }
143
- end
144
-
145
- def find!(collection, identity, options={})
146
- if resource = self.data[collection][identity.to_s]
147
- resource
148
- else
149
- error!(options[:error] || :not_found)
150
- end
151
- end
152
-
153
- def delete!(collection, identity, options={})
154
- self.data[collection].delete(identity.to_s) ||
155
- error!(options[:error] || :not_found)
156
- end
157
-
158
- def error!(type, options={})
159
- status, body = self.class.error_map[type]
160
- body.merge!("details" => options[:details]) if options[:details]
161
-
162
- response(
163
- :status => status,
164
- :body => body,
165
- )
166
- end
167
-
168
- def response(options={})
169
- method = options[:method] || :get
170
- status = options[:status] || 200
171
- path = options[:path]
172
- body = options[:body]
173
-
174
- url = options[:url] || url_for(path)
175
-
176
- env = Faraday::Env.new(method, body, url, nil, {}, nil, nil, {}, nil, {"Content-Type" => "application/json; charset=utf-8"}, status)
177
-
178
- Faraday::Response::RaiseError.new.on_complete(env) || Faraday::Response.new(env)
179
- rescue Faraday::Error::ClientError => e
180
- raise Zendesk2::Error.new(e)
181
- end
182
59
  end
183
60
  end