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.
- checksums.yaml +4 -4
- data/README.md +7 -1
- data/lib/zendesk2/attributes.rb +1 -1
- data/lib/zendesk2/{collection.rb → client/collection.rb} +22 -17
- data/lib/zendesk2/client/collections/categories.rb +2 -1
- data/lib/zendesk2/client/collections/forums.rb +2 -1
- data/lib/zendesk2/client/collections/groups.rb +4 -3
- data/lib/zendesk2/client/collections/help_center/articles.rb +2 -1
- data/lib/zendesk2/client/collections/help_center/categories.rb +2 -1
- data/lib/zendesk2/client/collections/help_center/sections.rb +2 -1
- data/lib/zendesk2/client/collections/memberships.rb +9 -7
- data/lib/zendesk2/client/collections/organizations.rb +3 -2
- data/lib/zendesk2/client/collections/ticket_audits.rb +5 -4
- data/lib/zendesk2/client/collections/ticket_comments.rb +4 -3
- data/lib/zendesk2/client/collections/ticket_fields.rb +3 -1
- data/lib/zendesk2/client/collections/tickets.rb +2 -1
- data/lib/zendesk2/client/collections/topic_comments.rb +2 -1
- data/lib/zendesk2/client/collections/topics.rb +2 -1
- data/lib/zendesk2/client/collections/user_fields.rb +3 -1
- data/lib/zendesk2/client/collections/user_identities.rb +3 -1
- data/lib/zendesk2/client/collections/users.rb +3 -2
- data/lib/zendesk2/client/help_center.rb +3 -0
- data/lib/zendesk2/client/mock.rb +7 -130
- data/lib/zendesk2/{model.rb → client/model.rb} +7 -3
- data/lib/zendesk2/client/models/audit_event.rb +2 -2
- data/lib/zendesk2/client/models/category.rb +8 -8
- data/lib/zendesk2/client/models/forum.rb +11 -16
- data/lib/zendesk2/client/models/group.rb +8 -13
- data/lib/zendesk2/client/models/help_center/article.rb +12 -16
- data/lib/zendesk2/client/models/help_center/category.rb +12 -16
- data/lib/zendesk2/client/models/help_center/section.rb +12 -16
- data/lib/zendesk2/client/models/membership.rb +10 -12
- data/lib/zendesk2/client/models/organization.rb +13 -20
- data/lib/zendesk2/client/models/ticket.rb +21 -19
- data/lib/zendesk2/client/models/ticket_audit.rb +3 -3
- data/lib/zendesk2/client/models/ticket_comment.rb +1 -1
- data/lib/zendesk2/client/models/ticket_comment_privacy_change.rb +1 -1
- data/lib/zendesk2/client/models/ticket_field.rb +5 -13
- data/lib/zendesk2/client/models/ticket_metric.rb +1 -1
- data/lib/zendesk2/client/models/ticket_voice_comment.rb +1 -1
- data/lib/zendesk2/client/models/topic.rb +9 -14
- data/lib/zendesk2/client/models/topic_comment.rb +14 -19
- data/lib/zendesk2/client/models/user.rb +25 -32
- data/lib/zendesk2/client/models/user_field.rb +10 -18
- data/lib/zendesk2/client/models/user_identity.rb +9 -18
- data/lib/zendesk2/client/real.rb +7 -8
- data/lib/zendesk2/client/request.rb +271 -0
- data/lib/zendesk2/client/requests/create_category.rb +19 -27
- data/lib/zendesk2/client/requests/create_forum.rb +23 -28
- data/lib/zendesk2/client/requests/create_group.rb +25 -29
- data/lib/zendesk2/client/requests/create_help_center_article.rb +54 -60
- data/lib/zendesk2/client/requests/create_help_center_category.rb +35 -47
- data/lib/zendesk2/client/requests/create_help_center_section.rb +49 -55
- data/lib/zendesk2/client/requests/create_membership.rb +42 -42
- data/lib/zendesk2/client/requests/create_organization.rb +30 -40
- data/lib/zendesk2/client/requests/create_ticket.rb +76 -85
- data/lib/zendesk2/client/requests/create_ticket_field.rb +36 -40
- data/lib/zendesk2/client/requests/create_topic.rb +23 -28
- data/lib/zendesk2/client/requests/create_topic_comment.rb +27 -31
- data/lib/zendesk2/client/requests/create_user.rb +51 -56
- data/lib/zendesk2/client/requests/create_user_field.rb +36 -40
- data/lib/zendesk2/client/requests/create_user_identity.rb +39 -44
- data/lib/zendesk2/client/requests/destroy_category.rb +8 -21
- data/lib/zendesk2/client/requests/destroy_forum.rb +8 -23
- data/lib/zendesk2/client/requests/destroy_group.rb +8 -21
- data/lib/zendesk2/client/requests/destroy_help_center_article.rb +8 -18
- data/lib/zendesk2/client/requests/destroy_help_center_category.rb +8 -18
- data/lib/zendesk2/client/requests/destroy_help_center_section.rb +10 -18
- data/lib/zendesk2/client/requests/destroy_membership.rb +8 -22
- data/lib/zendesk2/client/requests/destroy_organization.rb +8 -21
- data/lib/zendesk2/client/requests/destroy_ticket.rb +8 -21
- data/lib/zendesk2/client/requests/destroy_ticket_field.rb +8 -21
- data/lib/zendesk2/client/requests/destroy_topic.rb +8 -23
- data/lib/zendesk2/client/requests/destroy_topic_comment.rb +11 -24
- data/lib/zendesk2/client/requests/destroy_user.rb +17 -43
- data/lib/zendesk2/client/requests/destroy_user_field.rb +7 -22
- data/lib/zendesk2/client/requests/destroy_user_identity.rb +10 -25
- data/lib/zendesk2/client/requests/get_assignable_groups.rb +8 -16
- data/lib/zendesk2/client/requests/get_categories.rb +7 -15
- data/lib/zendesk2/client/requests/get_category.rb +11 -22
- data/lib/zendesk2/client/requests/get_ccd_tickets.rb +11 -18
- data/lib/zendesk2/client/requests/get_current_user.rb +6 -16
- data/lib/zendesk2/client/requests/get_forum.rb +11 -23
- data/lib/zendesk2/client/requests/get_forums.rb +7 -15
- data/lib/zendesk2/client/requests/get_group.rb +9 -23
- data/lib/zendesk2/client/requests/get_groups.rb +7 -15
- data/lib/zendesk2/client/requests/get_help_center_article.rb +13 -37
- data/lib/zendesk2/client/requests/get_help_center_articles.rb +6 -15
- data/lib/zendesk2/client/requests/get_help_center_categories.rb +6 -15
- data/lib/zendesk2/client/requests/get_help_center_category.rb +13 -37
- data/lib/zendesk2/client/requests/get_help_center_section.rb +14 -37
- data/lib/zendesk2/client/requests/get_help_center_sections.rb +6 -15
- data/lib/zendesk2/client/requests/get_membership.rb +9 -24
- data/lib/zendesk2/client/requests/get_organization.rb +9 -22
- data/lib/zendesk2/client/requests/get_organization_by_external_id.rb +11 -20
- data/lib/zendesk2/client/requests/get_organization_memberships.rb +10 -16
- data/lib/zendesk2/client/requests/get_organization_tickets.rb +14 -21
- data/lib/zendesk2/client/requests/get_organization_users.rb +12 -20
- data/lib/zendesk2/client/requests/get_organizations.rb +7 -16
- data/lib/zendesk2/client/requests/get_requested_tickets.rb +12 -18
- data/lib/zendesk2/client/requests/get_ticket.rb +9 -23
- data/lib/zendesk2/client/requests/get_ticket_audits.rb +12 -18
- data/lib/zendesk2/client/requests/get_ticket_comments.rb +10 -19
- data/lib/zendesk2/client/requests/get_ticket_field.rb +9 -22
- data/lib/zendesk2/client/requests/get_ticket_fields.rb +7 -15
- data/lib/zendesk2/client/requests/get_tickets.rb +7 -15
- data/lib/zendesk2/client/requests/get_topic.rb +8 -23
- data/lib/zendesk2/client/requests/get_topic_comment.rb +12 -28
- data/lib/zendesk2/client/requests/get_topic_comments.rb +13 -18
- data/lib/zendesk2/client/requests/get_topics.rb +6 -15
- data/lib/zendesk2/client/requests/get_user.rb +15 -28
- data/lib/zendesk2/client/requests/get_user_field.rb +9 -22
- data/lib/zendesk2/client/requests/get_user_identities.rb +11 -18
- data/lib/zendesk2/client/requests/get_user_identity.rb +11 -21
- data/lib/zendesk2/client/requests/get_user_memberships.rb +12 -18
- data/lib/zendesk2/client/requests/get_users.rb +7 -15
- data/lib/zendesk2/client/requests/mark_membership_default.rb +17 -28
- data/lib/zendesk2/client/requests/mark_user_identity_primary.rb +17 -30
- data/lib/zendesk2/client/requests/search.rb +30 -19
- data/lib/zendesk2/client/requests/search_help_center_articles.rb +22 -18
- data/lib/zendesk2/client/requests/search_organization.rb +40 -28
- data/lib/zendesk2/client/requests/search_user.rb +56 -44
- data/lib/zendesk2/client/requests/update_category.rb +14 -24
- data/lib/zendesk2/client/requests/update_forum.rb +13 -25
- data/lib/zendesk2/client/requests/update_group.rb +12 -24
- data/lib/zendesk2/client/requests/update_help_center_article.rb +17 -42
- data/lib/zendesk2/client/requests/update_help_center_category.rb +17 -42
- data/lib/zendesk2/client/requests/update_help_center_section.rb +17 -42
- data/lib/zendesk2/client/requests/update_organization.rb +23 -35
- data/lib/zendesk2/client/requests/update_ticket.rb +63 -63
- data/lib/zendesk2/client/requests/update_ticket_field.rb +12 -24
- data/lib/zendesk2/client/requests/update_topic.rb +11 -25
- data/lib/zendesk2/client/requests/update_user.rb +47 -62
- data/lib/zendesk2/client/requests/update_user_field.rb +11 -23
- data/lib/zendesk2/client/requests/update_user_identity.rb +20 -28
- data/lib/zendesk2/client.rb +52 -28
- data/lib/zendesk2/paged_collection.rb +9 -9
- data/lib/zendesk2/searchable.rb +1 -1
- data/lib/zendesk2/version.rb +1 -1
- data/lib/zendesk2.rb +1 -13
- data/spec/categories_spec.rb +132 -0
- data/spec/forums_spec.rb +132 -0
- data/spec/lib/paged_collection_spec.rb +2 -2
- data/spec/memberships_spec.rb +5 -9
- data/spec/organizations_spec.rb +176 -25
- data/spec/spec_helper.rb +2 -0
- data/spec/tickets_spec.rb +2 -2
- data/spec/topic_comments_spec.rb +2 -2
- data/spec/user_identities_spec.rb +9 -6
- data/spec/users_spec.rb +22 -21
- data/zendesk2.gemspec +1 -2
- metadata +7 -21
- data/lib/zendesk2/client/requests/update_topic_comment.rb +0 -37
@@ -1,4 +1,4 @@
|
|
1
|
-
class Zendesk2::Client::TicketAudit <
|
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.
|
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,
|
26
|
+
(self.attributes[:events] || []).map{|ae| Zendesk2::Client::AuditEvent.for(ae.merge(ticket_audit: self, service: self.service))}
|
27
27
|
end
|
28
28
|
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
|
-
|
50
|
+
service.create_ticket_field("ticket_field" => self.attributes)
|
53
51
|
else
|
54
52
|
requires :identity
|
55
53
|
|
56
|
-
|
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
|
-
|
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
|
@@ -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
|
-
|
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
|
-
|
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
|
-
|
34
|
+
|
35
|
+
service.create_topic("topic" => self.attributes)
|
37
36
|
else
|
38
37
|
requires :identity
|
39
|
-
|
40
|
-
|
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
|
-
|
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
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
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.
|
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
|
-
|
69
|
+
service.create_user("user" => self.attributes)
|
72
70
|
else
|
73
71
|
requires :identity
|
74
72
|
|
75
|
-
|
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 ==
|
81
|
+
raise "don't nuke yourself" if self.email == service.username
|
84
82
|
|
85
|
-
|
86
|
-
|
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.
|
101
|
+
token = self.service.token || options[:token]
|
103
102
|
|
104
|
-
uri =
|
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
|
-
|
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.
|
133
|
+
jwt_token = self.service.jwt_token || options[:jwt_token]
|
133
134
|
|
134
|
-
uri =
|
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
|
-
|
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
|
-
|
162
|
-
|
163
|
-
|
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
|
-
|
172
|
-
|
173
|
-
|
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.
|
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.
|
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
|
-
|
36
|
-
|
33
|
+
response = if new_record?
|
34
|
+
requires :type, :title, :key
|
37
35
|
|
38
|
-
|
39
|
-
|
40
|
-
|
36
|
+
service.create_user_field("user_field" => self.attributes)
|
37
|
+
else
|
38
|
+
requires :identity
|
41
39
|
|
42
|
-
|
43
|
-
|
40
|
+
service.update_user_field("user_field" => self.attributes)
|
41
|
+
end
|
44
42
|
|
45
|
-
merge_attributes(
|
43
|
+
merge_attributes(response.body["user_field"])
|
46
44
|
end
|
47
45
|
|
48
46
|
def destroy!
|
49
47
|
requires :identity
|
50
48
|
|
51
|
-
|
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
|
-
|
28
|
+
service.create_user_identity("user_identity" => self.attributes)
|
31
29
|
else
|
32
30
|
requires :identity
|
33
31
|
|
34
|
-
|
35
|
-
|
36
|
-
|
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
|
-
|
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
|
50
|
-
|
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.
|
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
|
data/lib/zendesk2/client/real.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
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
|
-
@
|
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
|
-
@
|
51
|
-
req.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)
|