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,29 +1,17 @@
|
|
1
|
-
class Zendesk2::Client
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
class Zendesk2::Client::UpdateTicketField < Zendesk2::Client::Request
|
2
|
+
request_method :put
|
3
|
+
request_path { |r| "/ticket_fields/#{r.ticket_field_id}.json" }
|
4
|
+
request_body { |r| { "ticket_field" => r.ticket_field_params } }
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
:path => "/ticket_fields/#{id}.json",
|
9
|
-
:body => {
|
10
|
-
"ticket_field" => params
|
11
|
-
},
|
12
|
-
)
|
13
|
-
end
|
6
|
+
def ticket_field_id
|
7
|
+
params.fetch("ticket_field").fetch("id")
|
14
8
|
end
|
15
|
-
class Mock
|
16
|
-
def update_ticket_field(params={})
|
17
|
-
id = params.delete("id")
|
18
|
-
body = self.find!(:ticket_fields, id).merge!(params)
|
19
9
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
)
|
27
|
-
end
|
10
|
+
def ticket_field_params
|
11
|
+
Cistern::Hash.slice(params.fetch("ticket_field"), *Zendesk2::Client::CreateTicketField.accepted_attributes)
|
12
|
+
end
|
13
|
+
|
14
|
+
def mock
|
15
|
+
mock_response("ticket_field" => self.find!(:ticket_fields, ticket_field_id).merge!(ticket_field_params))
|
28
16
|
end
|
29
17
|
end
|
@@ -1,31 +1,17 @@
|
|
1
|
-
class Zendesk2::Client
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
class Zendesk2::Client::UpdateTopic < Zendesk2::Client::Request
|
2
|
+
request_method :put
|
3
|
+
request_path { |r| "/topics/#{r.topic_id}.json" }
|
4
|
+
request_body { |r| { "topic" => r.topic_params } }
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
:path => "/topics/#{id}.json",
|
9
|
-
:body => {
|
10
|
-
"topic" => params
|
11
|
-
},
|
12
|
-
)
|
13
|
-
end
|
6
|
+
def topic_id
|
7
|
+
params.fetch("topic").fetch("id").to_i
|
14
8
|
end
|
15
|
-
class Mock
|
16
|
-
def update_topic(params={})
|
17
|
-
id = params.delete("id")
|
18
|
-
path = "/topics/#{id}.json"
|
19
9
|
|
20
|
-
|
10
|
+
def topic_params
|
11
|
+
Cistern::Hash.slice(params.fetch("topic"), *Zendesk2::Client::CreateTopic.accepted_attributes)
|
12
|
+
end
|
21
13
|
|
22
|
-
|
23
|
-
|
24
|
-
:path => path,
|
25
|
-
:body => {
|
26
|
-
"topic" => body
|
27
|
-
},
|
28
|
-
)
|
29
|
-
end
|
14
|
+
def mock
|
15
|
+
mock_response("topic" => self.find!(:topics, topic_id).merge!(topic_params))
|
30
16
|
end
|
31
17
|
end
|
@@ -1,73 +1,58 @@
|
|
1
|
-
class Zendesk2::Client
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
id = params.delete("id")
|
1
|
+
class Zendesk2::Client::UpdateUser < Zendesk2::Client::Request
|
2
|
+
request_method :put
|
3
|
+
request_path { |r| "/users/#{r.user_id}.json" }
|
4
|
+
request_body { |r| {"user" => r.user_params } }
|
6
5
|
|
7
|
-
|
8
|
-
|
9
|
-
:path => "/users/#{id}.json",
|
10
|
-
:body => {
|
11
|
-
"user" => params
|
12
|
-
},
|
13
|
-
)
|
14
|
-
end
|
6
|
+
def user_params
|
7
|
+
@_user_params ||= Cistern::Hash.slice(params.fetch("user"), *Zendesk2::Client::CreateUser.accepted_attributes)
|
15
8
|
end
|
16
|
-
class Mock
|
17
|
-
def update_user(_params={})
|
18
|
-
params = Cistern::Hash.stringify_keys(_params)
|
19
|
-
user_id = params.delete("id").to_s
|
20
|
-
path = "/users/#{user_id}.json"
|
21
|
-
|
22
|
-
email = params["email"]
|
23
|
-
|
24
|
-
other_users = self.data[:users].dup
|
25
|
-
other_users.delete(user_id)
|
26
|
-
|
27
|
-
if params["external_id"] && other_users.values.find { |o| o["external_id"] == params["external_id"] }
|
28
|
-
error!(:invalid, details: {"name" => [ { "description" => "External has already been taken" } ]})
|
29
|
-
end
|
30
9
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
# nvm
|
35
|
-
elsif existing_identity && existing_identity["user_id"] != user_id
|
36
|
-
# email not allowed to conflict across users
|
37
|
-
error!(:invalid, details: { "email" => [ {
|
38
|
-
"description" => "Email #{params["email"]} is already being used by another user",
|
39
|
-
} ] })
|
40
|
-
elsif existing_identity && existing_identity["user_id"] == user_id
|
41
|
-
# no-op email already used
|
42
|
-
else
|
43
|
-
# add a new identity
|
44
|
-
user_identity_id = self.class.new_id
|
10
|
+
def user_id
|
11
|
+
@_user_id ||= params.fetch("user").fetch("id").to_i
|
12
|
+
end
|
45
13
|
|
46
|
-
|
47
|
-
|
48
|
-
"url" => url_for("/users/#{user_id}/identities/#{user_identity_id}.json"),
|
49
|
-
"created_at" => Time.now.iso8601,
|
50
|
-
"updated_at" => Time.now.iso8601,
|
51
|
-
"type" => "email",
|
52
|
-
"value" => email,
|
53
|
-
"verified" => false,
|
54
|
-
"primary" => false,
|
55
|
-
"user_id" => user_id,
|
56
|
-
}
|
14
|
+
def mock
|
15
|
+
email = user_params["email"]
|
57
16
|
|
58
|
-
|
59
|
-
|
17
|
+
other_users = service.data[:users].dup
|
18
|
+
other_users.delete(user_id)
|
60
19
|
|
61
|
-
|
20
|
+
external_id = user_params["external_id"]
|
62
21
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
:body => {
|
67
|
-
"user" => body
|
68
|
-
},
|
69
|
-
)
|
22
|
+
if external_id && other_users.values.find { |o| o["external_id"].to_s == external_id.to_s }
|
23
|
+
error!(:invalid, details: {"name" => [ { "description" => "External has already been taken" } ]})
|
24
|
+
end
|
70
25
|
|
26
|
+
existing_identity = service.data[:identities].values.find { |i| i["type"] == "email" && i["value"] == email }
|
27
|
+
|
28
|
+
if !email
|
29
|
+
# nvm
|
30
|
+
elsif existing_identity && existing_identity["user_id"] != user_id
|
31
|
+
# email not allowed to conflict across users
|
32
|
+
error!(:invalid, details: { "email" => [ {
|
33
|
+
"description" => "Email #{params["email"]} is already being used by another user",
|
34
|
+
} ] })
|
35
|
+
elsif existing_identity && existing_identity["user_id"] == user_id
|
36
|
+
# no-op email already used
|
37
|
+
else
|
38
|
+
# add a new identity
|
39
|
+
user_identity_id = service.serial_id
|
40
|
+
|
41
|
+
user_identity = {
|
42
|
+
"id" => user_identity_id,
|
43
|
+
"url" => url_for("/users/#{user_id}/identities/#{user_identity_id}.json"),
|
44
|
+
"created_at" => Time.now.iso8601,
|
45
|
+
"updated_at" => Time.now.iso8601,
|
46
|
+
"type" => "email",
|
47
|
+
"value" => email,
|
48
|
+
"verified" => false,
|
49
|
+
"primary" => false,
|
50
|
+
"user_id" => user_id,
|
51
|
+
}
|
52
|
+
|
53
|
+
service.data[:identities][user_identity_id] = user_identity
|
71
54
|
end
|
55
|
+
|
56
|
+
mock_response("user" => self.find!(:users, user_id).merge!(user_params))
|
72
57
|
end
|
73
58
|
end
|
@@ -1,28 +1,16 @@
|
|
1
|
-
class Zendesk2::Client
|
2
|
-
|
3
|
-
|
4
|
-
id = params.delete("id")
|
1
|
+
class Zendesk2::Client::UpdateUserField < Zendesk2::Client::Request
|
2
|
+
request_method :put
|
3
|
+
request_path { |r| "/user_fields/#{r.user_field_id}.json" }
|
5
4
|
|
6
|
-
|
7
|
-
|
8
|
-
:path => "/user_fields/#{id}.json",
|
9
|
-
:body => {
|
10
|
-
"user_field" => params
|
11
|
-
},
|
12
|
-
)
|
13
|
-
end
|
5
|
+
def user_field_id
|
6
|
+
params.fetch("user_field").fetch("id")
|
14
7
|
end
|
15
|
-
class Mock
|
16
|
-
def update_user_field(params={})
|
17
|
-
user_field_id = params.delete("id")
|
18
8
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
)
|
26
|
-
end
|
9
|
+
def user_field_params
|
10
|
+
Cistern::Hash.slice(params.fetch("user_field"), *Zendesk2::Client::CreateUserField.accepted_attributes)
|
11
|
+
end
|
12
|
+
|
13
|
+
def mock
|
14
|
+
mock_response("user_field" => find!(:user_fields, user_field_id).merge!(user_field_params))
|
27
15
|
end
|
28
16
|
end
|
@@ -1,33 +1,25 @@
|
|
1
|
-
class Zendesk2::Client
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
user_id = params.delete("user_id")
|
6
|
-
path = "/users/#{user_id}/identities/#{id}.json"
|
1
|
+
class Zendesk2::Client::UpdateUserIdentity < Zendesk2::Client::Request
|
2
|
+
request_path { |r| "/users/#{r.user_id}/identities/#{r.user_identity_id}.json" }
|
3
|
+
request_method :put
|
4
|
+
request_body { |r| { "identity" => r.user_identity_params } }
|
7
5
|
|
8
|
-
|
9
|
-
|
10
|
-
:path => path,
|
11
|
-
:body => {
|
12
|
-
"identity" => params
|
13
|
-
},
|
14
|
-
)
|
15
|
-
end
|
6
|
+
def self.accepted_attributes
|
7
|
+
%w[verified]
|
16
8
|
end
|
17
|
-
class Mock
|
18
|
-
def update_user_identity(params={})
|
19
|
-
id = params.delete("id").to_s
|
20
|
-
user_id = params.delete("user_id").to_s
|
21
|
-
path = "/users/#{user_id}/identities/#{id}.json"
|
22
9
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
10
|
+
def user_id
|
11
|
+
params.fetch("user_identity").fetch("user_id")
|
12
|
+
end
|
13
|
+
|
14
|
+
def user_identity_id
|
15
|
+
params.fetch("user_identity").fetch("id")
|
16
|
+
end
|
17
|
+
|
18
|
+
def user_identity_params
|
19
|
+
Cistern::Hash.slice(params.fetch("user_identity"), *self.class.accepted_attributes)
|
20
|
+
end
|
21
|
+
|
22
|
+
def mock
|
23
|
+
mock_response("identity" => self.find!(:identities, user_identity_id).merge!(user_identity_params))
|
32
24
|
end
|
33
25
|
end
|
data/lib/zendesk2/client.rb
CHANGED
@@ -1,38 +1,62 @@
|
|
1
1
|
class Zendesk2::Client < Cistern::Service
|
2
2
|
USER_AGENT = "Ruby/#{RUBY_VERSION} (#{RUBY_PLATFORM}; #{RUBY_ENGINE}) Zendesk2/#{Zendesk2::VERSION} Faraday/#{Faraday::VERSION}".freeze
|
3
3
|
|
4
|
-
collection_path "zendesk2/client/collections"
|
5
|
-
model_path "zendesk2/client/models"
|
6
|
-
request_path "zendesk2/client/requests"
|
7
|
-
|
8
|
-
# @fixme might be nice if cistern took care of this
|
9
|
-
[
|
10
|
-
[:collection, collection_path],
|
11
|
-
[:model, model_path],
|
12
|
-
[:request, request_path],
|
13
|
-
].each do |type, path|
|
14
|
-
Dir[File.expand_path(File.join("../..", path, "**/*.rb"), __FILE__)].sort.each do |file|
|
15
|
-
send(type, file.gsub(/.*#{path}\/(.*)\.rb/, "\\1"), require: file)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
4
|
recognizes :url, :logger, :adapter, :username, :password, :token, :jwt_token
|
5
|
+
end
|
6
|
+
|
7
|
+
def require_resource(resource, options={})
|
8
|
+
plural = options[:plural] || "#{resource}s"
|
9
|
+
except = Array(options[:except])
|
10
|
+
other = Array(options[:and])
|
11
|
+
|
12
|
+
require "zendesk2/client/models/#{resource}"
|
13
|
+
require "zendesk2/client/collections/#{plural}"
|
14
|
+
|
15
|
+
require "zendesk2/client/requests/create_#{resource}" unless except.include?(:create)
|
16
|
+
require "zendesk2/client/requests/destroy_#{resource}" unless except.include?(:destroy)
|
17
|
+
require "zendesk2/client/requests/get_#{plural}" unless except.include?(:index)
|
18
|
+
require "zendesk2/client/requests/get_#{resource}" unless except.include?(:show)
|
19
|
+
require "zendesk2/client/requests/update_#{resource}" unless except.include?(:update)
|
20
20
|
|
21
|
-
|
22
|
-
def require_parameters(_params, *requirements)
|
23
|
-
params = Cistern::Hash.stringify_keys(_params)
|
24
|
-
params.reject! { |_,v| Zendesk2.blank?(v) }
|
25
|
-
|
26
|
-
if (missing = requirements - params.keys).any?
|
27
|
-
raise ArgumentError, "missing parameters: #{missing.join(", ")}"
|
28
|
-
else
|
29
|
-
values = params.values_at(*requirements)
|
30
|
-
requirements.size == 1 ? values.first : values
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
21
|
+
other.each { |file| require "zendesk2/client/requests/#{file}" }
|
34
22
|
end
|
35
23
|
|
36
24
|
require 'zendesk2/client/real'
|
37
25
|
require 'zendesk2/client/mock'
|
26
|
+
require 'zendesk2/client/request'
|
27
|
+
require 'zendesk2/client/model'
|
28
|
+
require 'zendesk2/client/collection'
|
38
29
|
require 'zendesk2/client/help_center'
|
30
|
+
|
31
|
+
require 'zendesk2/client/requests/search'
|
32
|
+
require 'zendesk2/client/models/audit_event'
|
33
|
+
|
34
|
+
require_resource("category", plural: "categories")
|
35
|
+
require_resource("forum")
|
36
|
+
require_resource("group", and: ["get_assignable_groups"])
|
37
|
+
require_resource("user", and: ["search_user", "get_current_user", "mark_user_identity_primary"])
|
38
|
+
|
39
|
+
require_resource("ticket", and: ["get_requested_tickets", "get_ccd_tickets"])
|
40
|
+
require_resource("ticket_audit", except: [:create, :destroy, :update])
|
41
|
+
require_resource("ticket_field")
|
42
|
+
require_resource("topic")
|
43
|
+
require_resource("topic_comment", except: [:update])
|
44
|
+
require_resource("ticket_comment", except: [:create, :destroy, :update, :show])
|
45
|
+
require_resource("organization", and: [
|
46
|
+
"get_organization_users",
|
47
|
+
"get_organization_tickets",
|
48
|
+
"get_organization_by_external_id",
|
49
|
+
"get_organization_memberships",
|
50
|
+
"search_organization",
|
51
|
+
"get_user_memberships",
|
52
|
+
])
|
53
|
+
require_resource("user_field")
|
54
|
+
require_resource("user_identity", plural: "user_identities")
|
55
|
+
|
56
|
+
require "zendesk2/client/models/membership"
|
57
|
+
require "zendesk2/client/collections/memberships"
|
58
|
+
|
59
|
+
require "zendesk2/client/requests/create_membership"
|
60
|
+
require "zendesk2/client/requests/destroy_membership"
|
61
|
+
require "zendesk2/client/requests/get_membership"
|
62
|
+
require "zendesk2/client/requests/mark_membership_default"
|
@@ -1,7 +1,6 @@
|
|
1
|
-
# @abstract Subclass and set #{collection_method}, #{collection_root}, #{model_method}, #{model_root} and #{model}
|
2
1
|
# adds {#create!} method to {Cistern::Collection}.
|
3
|
-
|
4
|
-
def self.
|
2
|
+
module Zendesk2::PagedCollection
|
3
|
+
def self.included(klass)
|
5
4
|
klass.send(:attribute, :count)
|
6
5
|
klass.send(:attribute, :next_page_link, {:aliases => "next_page"})
|
7
6
|
klass.send(:attribute, :previous_page_link, {:aliases => "previous_page"})
|
@@ -14,7 +13,7 @@ class Zendesk2::PagedCollection < Zendesk2::Collection
|
|
14
13
|
def model_root; self.class.model_root; end
|
15
14
|
|
16
15
|
def new_page
|
17
|
-
page = self.class.new(
|
16
|
+
page = self.class.new(service: self.service)
|
18
17
|
page.merge_attributes(self.class.scopes.inject({}){|r,k| r.merge(k.to_s => send(k))})
|
19
18
|
page
|
20
19
|
end
|
@@ -32,7 +31,7 @@ class Zendesk2::PagedCollection < Zendesk2::Collection
|
|
32
31
|
return to_enum(:each_entry) unless block_given?
|
33
32
|
page = self
|
34
33
|
while page
|
35
|
-
page.
|
34
|
+
page.to_a.each { |r| yield r }
|
36
35
|
page = page.next_page
|
37
36
|
end
|
38
37
|
end
|
@@ -64,12 +63,11 @@ class Zendesk2::PagedCollection < Zendesk2::Collection
|
|
64
63
|
# Fetch a collection of resources
|
65
64
|
def all(params={})
|
66
65
|
if params["filtered"] && (url = params["url"])
|
67
|
-
|
68
|
-
query = uri.query_values
|
66
|
+
query = Faraday::NestedParamsEncoder.decode(URI.parse(url).query)
|
69
67
|
search(query.delete("query"), query)
|
70
68
|
else
|
71
69
|
scoped_attributes = self.class.scopes.inject({}){|r,k| r.merge(k.to_s => send(k))}.merge(params)
|
72
|
-
body =
|
70
|
+
body = service.send(collection_method, scoped_attributes).body
|
73
71
|
|
74
72
|
self.load(body[collection_root]) # 'results' is the key for paged seraches
|
75
73
|
self.merge_attributes(Cistern::Hash.slice(body, "count", "next_page", "previous_page"))
|
@@ -98,7 +96,9 @@ class Zendesk2::PagedCollection < Zendesk2::Collection
|
|
98
96
|
else scoped_attributes.merge!("id" => identity_or_hash)
|
99
97
|
end
|
100
98
|
|
101
|
-
|
99
|
+
scoped_attributes = {model_root => scoped_attributes}
|
100
|
+
|
101
|
+
if data = self.service.send(model_method, scoped_attributes).body[self.model_root]
|
102
102
|
new(data)
|
103
103
|
end
|
104
104
|
end
|
data/lib/zendesk2/searchable.rb
CHANGED