zendesk2 1.4.2 → 1.5.3
Sign up to get free protection for your applications and to get access to all the features.
- 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)
|