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
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