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