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,4 +1,4 @@
1
- class Zendesk2::Client::TicketAudit < Cistern::Model
1
+ class Zendesk2::Client::TicketAudit < Zendesk2::Client::Model
2
2
  extend Zendesk2::Attributes
3
3
 
4
4
  # @return [Integer] Automatically assigned when creating audits
@@ -19,10 +19,10 @@ class Zendesk2::Client::TicketAudit < Cistern::Model
19
19
  def ticket
20
20
  requires :ticket_id
21
21
 
22
- self.connection.tickets.get(self.ticket_id)
22
+ self.service.tickets.get(self.ticket_id)
23
23
  end
24
24
 
25
25
  def events
26
- (self.attributes[:events] || []).map{|ae| Zendesk2::Client::AuditEvent.for(ae.merge(ticket_audit: self, connection: self.connection))}
26
+ (self.attributes[:events] || []).map{|ae| Zendesk2::Client::AuditEvent.for(ae.merge(ticket_audit: self, service: self.service))}
27
27
  end
28
28
  end
@@ -20,7 +20,7 @@ class Zendesk2::Client
20
20
  def author
21
21
  requires :author_id
22
22
 
23
- self.connection.users.get(self.author_id)
23
+ self.service.users.get(self.author_id)
24
24
  end
25
25
  end
26
26
  end
@@ -13,7 +13,7 @@ class Zendesk2::Client
13
13
  def comment
14
14
  requires :comment_id
15
15
 
16
- self.connection.ticket_comments.get(self.comment_id)
16
+ self.service.ticket_comments.get(self.comment_id)
17
17
  end
18
18
  end
19
19
  end
@@ -1,8 +1,6 @@
1
- class Zendesk2::Client::TicketField < Zendesk2::Model
1
+ class Zendesk2::Client::TicketField < Zendesk2::Client::Model
2
2
  extend Zendesk2::Attributes
3
3
 
4
- PARAMS = %w[type title description position active required collapsed_for_agents regexp_for_validation title_in_portal visible_in_portal editable_in_portal required_in_portal tag custom_field_options]
5
-
6
4
  # @return [integer] Automatically assigned upon creation
7
5
  identity :id, type: :integer
8
6
 
@@ -49,12 +47,12 @@ class Zendesk2::Client::TicketField < Zendesk2::Model
49
47
  data = if new_record?
50
48
  requires :type, :title
51
49
 
52
- connection.create_ticket_field(params).body["ticket_field"]
50
+ service.create_ticket_field("ticket_field" => self.attributes)
53
51
  else
54
52
  requires :identity
55
53
 
56
- connection.update_ticket_field(params.merge("id" => self.identity)).body["ticket_field"]
57
- end
54
+ service.update_ticket_field("ticket_field" => self.attributes)
55
+ end.body["ticket_field"]
58
56
 
59
57
  merge_attributes(data)
60
58
  end
@@ -62,12 +60,6 @@ class Zendesk2::Client::TicketField < Zendesk2::Model
62
60
  def destroy!
63
61
  requires :identity
64
62
 
65
- connection.destroy_ticket_field("id" => self.identity)
66
- end
67
-
68
- private
69
-
70
- def params
71
- Cistern::Hash.slice(Zendesk2.stringify_keys(attributes), *PARAMS)
63
+ service.destroy_ticket_field("ticket_field" => { "id" => self.identity })
72
64
  end
73
65
  end
@@ -48,7 +48,7 @@ class Zendesk2::Client::TicketMetric < Cistern::Model
48
48
  def ticket
49
49
  requires :ticket_id
50
50
 
51
- self.connection.tickets.get(self.ticket_id)
51
+ self.service.tickets.get(self.ticket_id)
52
52
  end
53
53
 
54
54
  end
@@ -28,7 +28,7 @@ class Zendesk2::Client
28
28
  def author
29
29
  requires :author_id
30
30
 
31
- self.connection.users.get(self.author_id)
31
+ self.service.users.get(self.author_id)
32
32
  end
33
33
  end
34
34
  end
@@ -1,9 +1,8 @@
1
- class Zendesk2::Client::Topic < Zendesk2::Model
1
+ class Zendesk2::Client::Topic < Zendesk2::Client::Model
2
2
  extend Zendesk2::Attributes
3
3
 
4
- PARAMS = %w[id title body submitter_id updater_id forum_id locked pinned highlighted position tags]
4
+ identity :id, type: :integer # ro[yes] mandatory[no] Automatically assigned upon creation
5
5
 
6
- identity :id, type: :integer # ro[yes] mandatory[no] Automatically assigned upon creation
7
6
  attribute :url, type: :string # ro[yes] mandatory[no] The API url of this topic
8
7
  attribute :title, type: :string # ro[no] mandatory[yes] The title of the topic
9
8
  attribute :body, type: :string # ro[no] mandatory[yes] The unescaped body of the topic
@@ -23,31 +22,27 @@ class Zendesk2::Client::Topic < Zendesk2::Model
23
22
  assoc_accessor :updater, collection: :users
24
23
  assoc_accessor :forum
25
24
 
26
-
27
25
  def destroy!
28
26
  requires :identity
29
27
 
30
- connection.destroy_topic("id" => self.identity)
28
+ service.destroy_topic("topic" => {"id" => self.identity})
31
29
  end
32
30
 
33
31
  def save!
34
32
  data = if new_record?
35
33
  requires :title, :body
36
- connection.create_topic(params).body["topic"]
34
+
35
+ service.create_topic("topic" => self.attributes)
37
36
  else
38
37
  requires :identity
39
- connection.update_topic(params).body["topic"]
40
- end
38
+
39
+ service.update_topic("topic" => self.attributes)
40
+ end.body["topic"]
41
+
41
42
  merge_attributes(data)
42
43
  end
43
44
 
44
45
  def comments
45
46
  self.topic_comments(topic_id: topic_id)
46
47
  end
47
-
48
- private
49
-
50
- def params
51
- Cistern::Hash.slice(Zendesk2.stringify_keys(attributes), *PARAMS)
52
- end
53
48
  end
@@ -1,8 +1,6 @@
1
- class Zendesk2::Client::TopicComment < Zendesk2::Model
1
+ class Zendesk2::Client::TopicComment < Zendesk2::Client::Model
2
2
  extend Zendesk2::Attributes
3
3
 
4
- PARAMS = %w[id topic_id user_id body informative]
5
-
6
4
  # @return [Integer] Automatically assigned upon creation
7
5
  identity :id, type: :integer
8
6
 
@@ -29,33 +27,30 @@ class Zendesk2::Client::TopicComment < Zendesk2::Model
29
27
  def destroy!
30
28
  requires :identity
31
29
 
32
- connection.destroy_topic_comment("id" => self.identity, "topic_id" => self.topic_id)
30
+ service.destroy_topic_comment("topic_comment" => { "id" => self.identity, "topic_id" => self.topic_id })
33
31
  end
34
32
 
35
33
  def save!
36
- data = if new_record?
37
- requires :topic_id, :user_id, :body
38
- connection.create_topic_comment(params).body["topic_comment"]
39
- else
40
- requires :identity
41
- connection.update_topic_comment(params).body["topic_comment"]
42
- end
43
- merge_attributes(data)
34
+ response = if new_record?
35
+ requires :topic_id, :user_id, :body
36
+
37
+ service.create_topic_comment("topic_comment" => self.attributes)
38
+ else
39
+ requires :identity
40
+
41
+ service.update_topic_comment("topic_comment" => self.attributes)
42
+ end
43
+
44
+ merge_attributes(response.body["topic_comment"])
44
45
  end
45
46
 
46
47
  def reload
47
48
  requires :identity
48
49
 
49
- if data = self.connection.topic_comments("topic_id" => topic_id).get(identity)
50
+ if data = self.service.topic_comments("topic_id" => topic_id).get(identity)
50
51
  new_attributes = data.attributes
51
52
  merge_attributes(new_attributes)
52
53
  self
53
54
  end
54
55
  end
55
-
56
- private
57
-
58
- def params
59
- Cistern::Hash.slice(Zendesk2.stringify_keys(attributes), *PARAMS)
60
- end
61
56
  end
@@ -1,8 +1,6 @@
1
- class Zendesk2::Client::User < Zendesk2::Model
1
+ class Zendesk2::Client::User < Zendesk2::Client::Model
2
2
  extend Zendesk2::Attributes
3
3
 
4
- PARAMS = %w[name email organization_id external_id alias verified locate_id time_zone phone signature details notes role custom_role_id moderator ticket_restriction only_private_comments]
5
-
6
4
  # @return [Integer] Automatically assigned when creating users
7
5
  identity :id, type: :integer
8
6
 
@@ -68,22 +66,23 @@ class Zendesk2::Client::User < Zendesk2::Model
68
66
  data = if new_record?
69
67
  requires :name, :email
70
68
 
71
- connection.create_user(params).body["user"]
69
+ service.create_user("user" => self.attributes)
72
70
  else
73
71
  requires :identity
74
72
 
75
- connection.update_user(params.merge("id" => self.identity)).body["user"]
76
- end
73
+ service.update_user("user" => self.attributes)
74
+ end.body["user"]
77
75
 
78
76
  merge_attributes(data)
79
77
  end
80
78
 
81
79
  def destroy!
82
80
  requires :identity
83
- raise "don't nuke yourself" if self.email == connection.username
81
+ raise "don't nuke yourself" if self.email == service.username
84
82
 
85
- data = connection.destroy_user("id" => self.identity).body["user"]
86
- merge_attributes(data)
83
+ merge_attributes(
84
+ service.destroy_user("user" => {"id" => self.identity}).body["user"]
85
+ )
87
86
  end
88
87
 
89
88
  def destroyed?
@@ -99,9 +98,9 @@ class Zendesk2::Client::User < Zendesk2::Model
99
98
  requires :name, :email
100
99
 
101
100
  return_to = options[:return_to]
102
- token = self.connection.token || options[:token]
101
+ token = self.service.token || options[:token]
103
102
 
104
- uri = Addressable::URI.parse(self.connection.url)
103
+ uri = URI.parse(self.service.url)
105
104
  uri.path = "/access/remote"
106
105
 
107
106
  raise "timestamp cannot be nil" unless timestamp
@@ -113,10 +112,12 @@ class Zendesk2::Client::User < Zendesk2::Model
113
112
  'timestamp' => timestamp,
114
113
  'hash' => Digest::MD5.hexdigest(hash_str)
115
114
  }
115
+
116
116
  unless Zendesk2.blank?(return_to)
117
117
  query_values['return_to'] = return_to
118
118
  end
119
- uri.query_values = query_values
119
+
120
+ uri.query = Faraday::NestedParamsEncoder.encode(query_values)
120
121
 
121
122
  uri.to_s
122
123
  end
@@ -129,9 +130,9 @@ class Zendesk2::Client::User < Zendesk2::Model
129
130
  requires :name, :email
130
131
 
131
132
  return_to = options[:return_to]
132
- jwt_token = self.connection.jwt_token || options[:jwt_token]
133
+ jwt_token = self.service.jwt_token || options[:jwt_token]
133
134
 
134
- uri = Addressable::URI.parse(self.connection.url)
135
+ uri = URI.parse(self.service.url)
135
136
  uri.path = "/access/jwt"
136
137
 
137
138
  iat = Time.now.to_i
@@ -149,7 +150,8 @@ class Zendesk2::Client::User < Zendesk2::Model
149
150
  unless Zendesk2.blank?(return_to)
150
151
  query_values['return_to'] = return_to
151
152
  end
152
- uri.query_values = query_values
153
+
154
+ uri.query = Faraday::NestedParamsEncoder.encode(query_values)
153
155
 
154
156
  uri.to_s
155
157
  end
@@ -158,9 +160,9 @@ class Zendesk2::Client::User < Zendesk2::Model
158
160
  def tickets
159
161
  requires :identity
160
162
 
161
- data = connection.get_requested_tickets("id" => self.identity).body["tickets"]
162
-
163
- connection.tickets.load(data)
163
+ service.tickets.load(
164
+ service.get_requested_tickets("user_id" => self.identity).body["tickets"]
165
+ )
164
166
  end
165
167
  alias requested_tickets tickets
166
168
 
@@ -168,27 +170,18 @@ class Zendesk2::Client::User < Zendesk2::Model
168
170
  def ccd_tickets
169
171
  requires :identity
170
172
 
171
- data = connection.get_ccd_tickets("id" => self.identity).body["tickets"]
172
-
173
- connection.tickets.load(data)
173
+ service.tickets.load(
174
+ service.get_ccd_tickets("user_id" => self.identity).body["tickets"]
175
+ )
174
176
  end
175
177
 
176
178
  # @return [Zendesk2::Client::UserIdentities] the identities of this user
177
179
  def identities
178
- self.connection.user_identities("user_id" => self.identity)
180
+ self.service.user_identities("user_id" => self.identity)
179
181
  end
180
182
 
181
183
  # @return [Zendesk2::Client::Memberships] the organization memberships of this user
182
184
  def memberships
183
- self.connection.memberships(user: self)
184
- end
185
-
186
- private
187
-
188
- def params
189
- writable_attributes = Cistern::Hash.slice(Zendesk2.stringify_keys(attributes), *PARAMS)
190
- writable_attributes.delete("organization_id") if writable_attributes["organization_id"] == 0
191
- writable_attributes.delete("custom_role_id") if writable_attributes["custom_role_id"] == 0
192
- writable_attributes
185
+ self.service.memberships(user: self)
193
186
  end
194
187
  end
@@ -1,8 +1,6 @@
1
- class Zendesk2::Client::UserField < Zendesk2::Model
1
+ class Zendesk2::Client::UserField < Zendesk2::Client::Model
2
2
  extend Zendesk2::Attributes
3
3
 
4
- PARAMS = %w[key type title description position active, regexp_for_validation tag custom_field_options]
5
-
6
4
  # @return [Integer] Automatically assigned upon creation
7
5
  identity :id, type: :integer
8
6
 
@@ -32,28 +30,22 @@ class Zendesk2::Client::UserField < Zendesk2::Model
32
30
  attribute :url, type: :string
33
31
 
34
32
  def save!
35
- data = if new_record?
36
- requires :type, :title, :key
33
+ response = if new_record?
34
+ requires :type, :title, :key
37
35
 
38
- connection.create_user_field(params).body["user_field"]
39
- else
40
- requires :identity
36
+ service.create_user_field("user_field" => self.attributes)
37
+ else
38
+ requires :identity
41
39
 
42
- connection.update_user_field(params.merge("id" => self.identity)).body["user_field"]
43
- end
40
+ service.update_user_field("user_field" => self.attributes)
41
+ end
44
42
 
45
- merge_attributes(data)
43
+ merge_attributes(response.body["user_field"])
46
44
  end
47
45
 
48
46
  def destroy!
49
47
  requires :identity
50
48
 
51
- connection.destroy_user_field("id" => self.identity)
52
- end
53
-
54
- private
55
-
56
- def params
57
- Cistern::Hash.slice(Zendesk2.stringify_keys(attributes), *PARAMS)
49
+ service.destroy_user_field("user_field" => { "id" => self.identity })
58
50
  end
59
51
  end
@@ -1,8 +1,6 @@
1
- class Zendesk2::Client::UserIdentity < Zendesk2::Model
1
+ class Zendesk2::Client::UserIdentity < Zendesk2::Client::Model
2
2
  extend Zendesk2::Attributes
3
3
 
4
- PARAMS = %w[primary verified type value user_id]
5
-
6
4
  # @return [Integer] Automatically assigned upon creation
7
5
  identity :id, type: :integer
8
6
 
@@ -27,40 +25,33 @@ class Zendesk2::Client::UserIdentity < Zendesk2::Model
27
25
  data = if new_record?
28
26
  requires :type, :value, :user_id
29
27
 
30
- connection.create_user_identity(params).body["identity"]
28
+ service.create_user_identity("user_identity" => self.attributes)
31
29
  else
32
30
  requires :identity
33
31
 
34
- update_params = Cistern::Hash.slice(Zendesk2.stringify_keys(attributes), "verified", "id", "user_id")
35
- connection.update_user_identity(update_params).body["identity"]
36
- end
32
+ service.update_user_identity("user_identity" => self.attributes)
33
+ end.body["identity"]
34
+
37
35
  merge_attributes(data)
38
36
  end
39
37
 
40
38
  def destroy!
41
39
  requires :identity
42
40
 
43
- connection.destroy_user_identity("user_id" => self.user_id, "id" => self.identity)
41
+ service.destroy_user_identity("user_identity" => { "user_id" => self.user_id, "id" => self.identity })
44
42
  end
45
43
 
46
44
  def reload
47
45
  requires :identity
48
46
 
49
- if data = self.connection.user_identities("user_id" => user_id).get(identity)
50
- new_attributes = data.attributes
51
- merge_attributes(new_attributes)
47
+ if model = self.service.user_identities("user_id" => user_id).get(identity)
48
+ merge_attributes(model.attributes)
52
49
  self
53
50
  end
54
51
  end
55
52
 
56
53
  def primary!
57
- self.connection.mark_user_identity_primary("user_id" => self.user_id, "id" => self.identity)
54
+ self.service.mark_user_identity_primary("user_identity" => { "user_id" => self.user_id, "id" => self.identity })
58
55
  self.primary = true
59
56
  end
60
-
61
- private
62
-
63
- def params
64
- Cistern::Hash.slice(Zendesk2.stringify_keys(attributes), *PARAMS)
65
- end
66
57
  end
@@ -1,12 +1,11 @@
1
1
  class Zendesk2::Client < Cistern::Service
2
2
  class Real
3
- include Zendesk2::Client::Shared
4
3
 
5
- attr_accessor :username, :url, :token, :logger, :jwt_token
4
+ attr_accessor :username, :url, :token, :logger, :jwt_token, :last_request
6
5
 
7
6
  def initialize(options={})
8
7
  @url = if url = options[:url] || Zendesk2.defaults[:url]
9
- Addressable::URI.parse(url).to_s
8
+ URI.parse(url).to_s
10
9
  end
11
10
 
12
11
  @logger = options[:logger] || Logger.new(nil)
@@ -15,7 +14,7 @@ class Zendesk2::Client < Cistern::Service
15
14
  @token = options[:token] || Zendesk2.defaults[:token]
16
15
  password = options[:password] || Zendesk2.defaults[:password]
17
16
 
18
- connection_options = options[:connection_options] || {}
17
+ service_options = options[:service_options] || {}
19
18
 
20
19
  @auth_token = password || @token
21
20
  @username += "/token" if @auth_token == @token
@@ -25,7 +24,7 @@ class Zendesk2::Client < Cistern::Service
25
24
  raise "Missing required options: :username" unless @username
26
25
  raise "Missing required options: :password or :token" unless password || @token
27
26
 
28
- @connection = Faraday.new({url: @url}.merge(connection_options)) do |builder|
27
+ @service = Faraday.new({url: @url}.merge(service_options)) do |builder|
29
28
  # response
30
29
  builder.use Faraday::Request::BasicAuthentication, @username, @auth_token
31
30
  builder.use Faraday::Response::RaiseError
@@ -47,11 +46,11 @@ class Zendesk2::Client < Cistern::Service
47
46
  body = options[:body]
48
47
  headers = {"User-Agent" => USER_AGENT}.merge(options[:headers] || {})
49
48
 
50
- @connection.send(method) do |req|
51
- req.url url
49
+ @service.send(method) do |req|
50
+ req.url(url)
52
51
  req.headers.merge!(headers)
53
52
  req.params.merge!(params)
54
- req.body = body
53
+ req.body = @last_request = body
55
54
  end
56
55
  rescue Faraday::Error::ClientError => e
57
56
  raise Zendesk2::Error.new(e)