zendesk2 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/zendesk2/client.rb +9 -1
- data/lib/zendesk2/models/ticket.rb +55 -0
- data/lib/zendesk2/models/tickets.rb +18 -0
- data/lib/zendesk2/requests/create_ticket.rb +32 -0
- data/lib/zendesk2/requests/destroy_ticket.rb +27 -0
- data/lib/zendesk2/requests/get_organization.rb +1 -1
- data/lib/zendesk2/requests/get_ticket.rb +33 -0
- data/lib/zendesk2/requests/get_tickets.rb +18 -0
- data/lib/zendesk2/requests/update_ticket.rb +29 -0
- data/lib/zendesk2/version.rb +1 -1
- data/spec/tickets_spec.rb +9 -0
- metadata +10 -1
data/lib/zendesk2/client.rb
CHANGED
@@ -5,19 +5,26 @@ class Zendesk2::Client < Cistern::Service
|
|
5
5
|
|
6
6
|
model :organization
|
7
7
|
collection :organizations
|
8
|
+
model :ticket
|
9
|
+
collection :tickets
|
8
10
|
model :user
|
9
11
|
collection :users
|
10
12
|
|
11
13
|
request :create_organization
|
14
|
+
request :create_ticket
|
12
15
|
request :create_user
|
13
16
|
request :destroy_organization
|
17
|
+
request :destroy_ticket
|
14
18
|
request :destroy_user
|
15
19
|
request :get_current_user
|
16
20
|
request :get_organization
|
21
|
+
request :get_ticket
|
17
22
|
request :get_user
|
18
23
|
request :get_organizations
|
24
|
+
request :get_tickets
|
19
25
|
request :get_users
|
20
26
|
request :update_organization
|
27
|
+
request :update_ticket
|
21
28
|
request :update_user
|
22
29
|
|
23
30
|
recognizes :url, :subdomain, :host, :port, :path, :scheme, :logger, :adapter
|
@@ -91,8 +98,9 @@ class Zendesk2::Client < Cistern::Service
|
|
91
98
|
|
92
99
|
def self.data
|
93
100
|
@data ||= {
|
94
|
-
:users
|
101
|
+
:users => {},
|
95
102
|
:organizations => {},
|
103
|
+
:tickets => {},
|
96
104
|
}
|
97
105
|
end
|
98
106
|
|
@@ -0,0 +1,55 @@
|
|
1
|
+
class Zendesk2::Client::Ticket < Cistern::Model
|
2
|
+
include Zendesk2::Errors
|
3
|
+
identity :id
|
4
|
+
attribute :external_id
|
5
|
+
attribute :via
|
6
|
+
attribute :created_at, type: :time
|
7
|
+
attribute :updated_at, type: :time
|
8
|
+
attribute :type
|
9
|
+
attribute :subject
|
10
|
+
attribute :description
|
11
|
+
attribute :priority
|
12
|
+
attribute :status
|
13
|
+
attribute :recipient
|
14
|
+
attribute :requester_id
|
15
|
+
attribute :submitter_id
|
16
|
+
attribute :assignee_id
|
17
|
+
attribute :organization_id
|
18
|
+
attribute :group_id
|
19
|
+
attribute :collaborator_ids, type: :array
|
20
|
+
attribute :forum_topic_id
|
21
|
+
attribute :problem_id
|
22
|
+
attribute :has_incidents
|
23
|
+
attribute :due_at
|
24
|
+
attribute :tags
|
25
|
+
attribute :fields
|
26
|
+
|
27
|
+
def save
|
28
|
+
if new_record?
|
29
|
+
requires :subject, :description
|
30
|
+
data = connection.create_ticket(attributes).body["ticket"]
|
31
|
+
merge_attributes(data)
|
32
|
+
else
|
33
|
+
requires :identity
|
34
|
+
params = {
|
35
|
+
"id" => self.identity,
|
36
|
+
"subject" => self.subject,
|
37
|
+
"description" => self.description,
|
38
|
+
}
|
39
|
+
data = connection.update_ticket(params).body["ticket"]
|
40
|
+
merge_attributes(data)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def destroy
|
45
|
+
requires :identity
|
46
|
+
|
47
|
+
connection.destroy_ticket("id" => self.identity)
|
48
|
+
end
|
49
|
+
|
50
|
+
def destroyed?
|
51
|
+
self.reload
|
52
|
+
rescue not_found
|
53
|
+
true
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class Zendesk2::Client::Tickets < Cistern::Collection
|
2
|
+
include Zendesk2::PagedCollection
|
3
|
+
|
4
|
+
model Zendesk2::Client::Ticket
|
5
|
+
|
6
|
+
self.collection_method= :get_tickets
|
7
|
+
self.collection_root= "tickets"
|
8
|
+
self.model_method= :get_ticket
|
9
|
+
self.model_root= "ticket"
|
10
|
+
|
11
|
+
def search(term)
|
12
|
+
body = connection.search_ticket("query" => term).body
|
13
|
+
if data = body.delete("results")
|
14
|
+
load(data)
|
15
|
+
end
|
16
|
+
merge_attributes(body)
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
class Zendesk2::Client
|
2
|
+
class Real
|
3
|
+
def create_ticket(params={})
|
4
|
+
request(
|
5
|
+
:body => {"ticket" => params},
|
6
|
+
:method => :post,
|
7
|
+
:path => "/tickets.json",
|
8
|
+
)
|
9
|
+
end
|
10
|
+
end # Real
|
11
|
+
|
12
|
+
class Mock
|
13
|
+
def create_ticket(params={})
|
14
|
+
identity = self.class.new_id
|
15
|
+
|
16
|
+
record = {
|
17
|
+
"id" => identity,
|
18
|
+
"url" => url_for("/tickets/#{identity}.json"),
|
19
|
+
"created_at" => Time.now.iso8601,
|
20
|
+
"updated_at" => Time.now.iso8601,
|
21
|
+
}.merge(params)
|
22
|
+
|
23
|
+
self.data[:tickets][identity]= record
|
24
|
+
|
25
|
+
response(
|
26
|
+
:method => :post,
|
27
|
+
:body => {"ticket" => record},
|
28
|
+
:path => "/tickets.json"
|
29
|
+
)
|
30
|
+
end
|
31
|
+
end # Mock
|
32
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
class Zendesk2::Client
|
2
|
+
class Real
|
3
|
+
def destroy_ticket(params={})
|
4
|
+
id = params["id"]
|
5
|
+
|
6
|
+
request(
|
7
|
+
:method => :delete,
|
8
|
+
:path => "/tickets/#{id}.json"
|
9
|
+
)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
class Mock
|
14
|
+
def destroy_ticket(params={})
|
15
|
+
id = params["id"]
|
16
|
+
body = self.data[:tickets].delete(id)
|
17
|
+
|
18
|
+
response(
|
19
|
+
:method => :delete,
|
20
|
+
:path => "/tickets/#{id}.json",
|
21
|
+
:body => {
|
22
|
+
"ticket" => body,
|
23
|
+
},
|
24
|
+
)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
class Zendesk2::Client
|
2
|
+
class Real
|
3
|
+
def get_ticket(params={})
|
4
|
+
id = params["id"]
|
5
|
+
|
6
|
+
request(
|
7
|
+
:method => :get,
|
8
|
+
:path => "/tickets/#{id}.json"
|
9
|
+
)
|
10
|
+
end
|
11
|
+
end # Real
|
12
|
+
|
13
|
+
class Mock
|
14
|
+
def get_ticket(params={})
|
15
|
+
id = params["id"]
|
16
|
+
if body = self.data[:tickets][id]
|
17
|
+
|
18
|
+
response(
|
19
|
+
:path => "/tickets/#{id}.json",
|
20
|
+
:body => {
|
21
|
+
"ticket" => body
|
22
|
+
},
|
23
|
+
)
|
24
|
+
else
|
25
|
+
r = response(
|
26
|
+
:path => "/tickets/#{id}.json",
|
27
|
+
:status => 404
|
28
|
+
)
|
29
|
+
raise not_found!(nil, r)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end # Mock
|
33
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class Zendesk2::Client
|
2
|
+
class Real
|
3
|
+
def get_tickets(params={})
|
4
|
+
page_params = Zendesk2.paging_parameters(params)
|
5
|
+
|
6
|
+
request(
|
7
|
+
:params => page_params,
|
8
|
+
:method => :get,
|
9
|
+
:path => "/tickets.json",
|
10
|
+
)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
class Mock
|
14
|
+
def get_tickets(params={})
|
15
|
+
page(params, :tickets, "/tickets.json", "tickets")
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
class Zendesk2::Client
|
2
|
+
class Real
|
3
|
+
def update_ticket(params={})
|
4
|
+
id = params.delete("id")
|
5
|
+
|
6
|
+
request(
|
7
|
+
:method => :put,
|
8
|
+
:path => "/tickets/#{id}.json",
|
9
|
+
:body => {
|
10
|
+
"ticket" => params
|
11
|
+
},
|
12
|
+
)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
class Mock
|
16
|
+
def update_ticket(params={})
|
17
|
+
id = params.delete("id")
|
18
|
+
body = self.data[:tickets][id].merge!(params)
|
19
|
+
|
20
|
+
response(
|
21
|
+
:method => :put,
|
22
|
+
:path => "/tickets/#{id}.json",
|
23
|
+
:body => {
|
24
|
+
"ticket" => body
|
25
|
+
},
|
26
|
+
)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/zendesk2/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zendesk2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -110,25 +110,33 @@ files:
|
|
110
110
|
- lib/zendesk2/errors.rb
|
111
111
|
- lib/zendesk2/models/organization.rb
|
112
112
|
- lib/zendesk2/models/organizations.rb
|
113
|
+
- lib/zendesk2/models/ticket.rb
|
114
|
+
- lib/zendesk2/models/tickets.rb
|
113
115
|
- lib/zendesk2/models/user.rb
|
114
116
|
- lib/zendesk2/models/users.rb
|
115
117
|
- lib/zendesk2/paged_collection.rb
|
116
118
|
- lib/zendesk2/requests/create_organization.rb
|
119
|
+
- lib/zendesk2/requests/create_ticket.rb
|
117
120
|
- lib/zendesk2/requests/create_user.rb
|
118
121
|
- lib/zendesk2/requests/destroy_organization.rb
|
122
|
+
- lib/zendesk2/requests/destroy_ticket.rb
|
119
123
|
- lib/zendesk2/requests/destroy_user.rb
|
120
124
|
- lib/zendesk2/requests/get_current_user.rb
|
121
125
|
- lib/zendesk2/requests/get_organization.rb
|
122
126
|
- lib/zendesk2/requests/get_organizations.rb
|
127
|
+
- lib/zendesk2/requests/get_ticket.rb
|
128
|
+
- lib/zendesk2/requests/get_tickets.rb
|
123
129
|
- lib/zendesk2/requests/get_user.rb
|
124
130
|
- lib/zendesk2/requests/get_users.rb
|
125
131
|
- lib/zendesk2/requests/update_organization.rb
|
132
|
+
- lib/zendesk2/requests/update_ticket.rb
|
126
133
|
- lib/zendesk2/requests/update_user.rb
|
127
134
|
- lib/zendesk2/version.rb
|
128
135
|
- spec/organizations_spec.rb
|
129
136
|
- spec/shared/resource.rb
|
130
137
|
- spec/spec_helper.rb
|
131
138
|
- spec/support/client_helper.rb
|
139
|
+
- spec/tickets_spec.rb
|
132
140
|
- spec/users_spec.rb
|
133
141
|
- zendesk2.gemspec
|
134
142
|
homepage: ''
|
@@ -160,5 +168,6 @@ test_files:
|
|
160
168
|
- spec/shared/resource.rb
|
161
169
|
- spec/spec_helper.rb
|
162
170
|
- spec/support/client_helper.rb
|
171
|
+
- spec/tickets_spec.rb
|
163
172
|
- spec/users_spec.rb
|
164
173
|
has_rdoc:
|