zendesk 0.1.6 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/zendesk.rb +7 -6
- data/lib/zendesk/attachment.rb +13 -0
- data/lib/zendesk/resource.rb +4 -4
- data/lib/zendesk/ticket.rb +18 -16
- data/lib/zendesk/version.rb +1 -1
- metadata +5 -4
data/lib/zendesk.rb
CHANGED
@@ -48,17 +48,17 @@ module Zendesk
|
|
48
48
|
else
|
49
49
|
value = {}
|
50
50
|
element.elements.each{|el| value.merge! xml_elements_to_hash(el) }
|
51
|
-
end
|
51
|
+
end
|
52
52
|
end
|
53
|
-
{ element.name.gsub('-', '_').to_sym => value }
|
53
|
+
{ element.name.gsub('-', '_').to_sym => value }
|
54
54
|
end
|
55
55
|
|
56
56
|
def self.xml_out(hash)
|
57
|
-
doc = REXML::Document.new
|
57
|
+
doc = REXML::Document.new
|
58
58
|
doc.add_element hash_elements_to_xml(hash.keys[0], hash.values[0])
|
59
59
|
doc.to_s
|
60
|
-
end
|
61
|
-
|
60
|
+
end
|
61
|
+
|
62
62
|
def self.hash_elements_to_xml(key, value)
|
63
63
|
element = REXML::Element.new(key.to_s.gsub('_', '-'))
|
64
64
|
if value.is_a?(Array)
|
@@ -78,8 +78,9 @@ module Zendesk
|
|
78
78
|
autoload :Comment, File.dirname(__FILE__) + '/zendesk/comment.rb'
|
79
79
|
autoload :Ticket, File.dirname(__FILE__) + '/zendesk/ticket.rb'
|
80
80
|
autoload :User, File.dirname(__FILE__) + '/zendesk/user.rb'
|
81
|
+
autoload :Attachment, File.dirname(__FILE__) + '/zendesk/attachment.rb'
|
81
82
|
|
82
83
|
autoload :Constants, File.dirname(__FILE__) + '/zendesk/lib/constants.rb'
|
83
84
|
autoload :RestObject, File.dirname(__FILE__) + '/zendesk/lib/rest_object.rb'
|
84
85
|
autoload :Properties, File.dirname(__FILE__) + '/zendesk/lib/properties.rb'
|
85
|
-
end
|
86
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class Zendesk::Attachment < Zendesk::Resource
|
2
|
+
def initialize(path, filename = nil)
|
3
|
+
@path = path
|
4
|
+
@filename = filename || File.basename(path)
|
5
|
+
|
6
|
+
end
|
7
|
+
# return token of attached file
|
8
|
+
def save
|
9
|
+
response = Zendesk.resource["uploads.xml?filename=#{@filename}"].post(File.read(@path))
|
10
|
+
REXML::Document.new(response).elements['uploads'].attributes['token']
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
data/lib/zendesk/resource.rb
CHANGED
@@ -1,21 +1,21 @@
|
|
1
1
|
class Zendesk::Resource
|
2
2
|
include Zendesk::Properties
|
3
3
|
include Zendesk::Constants
|
4
|
-
|
4
|
+
|
5
5
|
# TODO: Make load file as optional
|
6
6
|
|
7
7
|
def initialize(attrs = {})
|
8
8
|
load_attributes(attrs)
|
9
9
|
load_properties(attrs)
|
10
10
|
end
|
11
|
-
|
11
|
+
|
12
12
|
def load_data(xml_stream)
|
13
13
|
Zendesk.xml_in(xml_stream)
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
16
|
def self.create(attrs = {})
|
17
17
|
instance = new(attrs)
|
18
18
|
instance.save
|
19
19
|
instance
|
20
20
|
end
|
21
|
-
end
|
21
|
+
end
|
data/lib/zendesk/ticket.rb
CHANGED
@@ -1,23 +1,23 @@
|
|
1
1
|
class Zendesk::Ticket < Zendesk::Resource
|
2
2
|
include Zendesk::Constants
|
3
3
|
include Zendesk::RestObject
|
4
|
-
|
4
|
+
|
5
5
|
datetimes :created_at, :updated_at
|
6
|
-
attributes :subject, :description, :status, :assignee_id, :requester_name, :requester_email
|
6
|
+
attributes :subject, :description, :status, :assignee_id, :requester_name, :requester_email, :uploads
|
7
7
|
protected_attributes :nice_id, :priority_id, :status_id, :via_id, :ticket_type_id, :current_tags, :comments
|
8
8
|
properties :status, :ticket_type, :priority, :via
|
9
9
|
|
10
|
-
|
11
10
|
alias :id :nice_id
|
12
11
|
alias :set_tags :current_tags
|
13
|
-
|
12
|
+
|
14
13
|
def initialize(attrs = {})
|
14
|
+
self.uploads = Zendesk::Attachment.new(attrs[:attachment]).save if attrs[:attachment]
|
15
15
|
@comments = []
|
16
16
|
load_fields
|
17
|
-
self.tags= attrs[:tags] || attrs['tags']
|
17
|
+
self.tags = attrs[:tags] || attrs['tags']
|
18
18
|
super
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
# Filling custom field methods from imported data.
|
22
22
|
# If field is not pointed in config it will be missed
|
23
23
|
def load_field_entries(data)
|
@@ -28,7 +28,7 @@ class Zendesk::Ticket < Zendesk::Resource
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
end
|
31
|
-
|
31
|
+
|
32
32
|
def load_comments(data)
|
33
33
|
@comments = []
|
34
34
|
data[:comments].each do |comment|
|
@@ -37,7 +37,7 @@ class Zendesk::Ticket < Zendesk::Resource
|
|
37
37
|
@comments << z_comment
|
38
38
|
end
|
39
39
|
end
|
40
|
-
|
40
|
+
|
41
41
|
def user
|
42
42
|
if assignee_id
|
43
43
|
@user ||= Zendesk::User.find(assignee_id)
|
@@ -45,7 +45,7 @@ class Zendesk::Ticket < Zendesk::Resource
|
|
45
45
|
@user = nil
|
46
46
|
end
|
47
47
|
end
|
48
|
-
|
48
|
+
|
49
49
|
def create_comment(value, is_public = true)
|
50
50
|
if Zendesk::Comment.create(:ticket_id => self.id, :value => value, :is_public => is_public)
|
51
51
|
reload
|
@@ -53,7 +53,7 @@ class Zendesk::Ticket < Zendesk::Resource
|
|
53
53
|
false
|
54
54
|
end
|
55
55
|
end
|
56
|
-
|
56
|
+
|
57
57
|
def to_xml
|
58
58
|
result = {}
|
59
59
|
(attributes - @field_ids.keys).each do |obj|
|
@@ -61,7 +61,7 @@ class Zendesk::Ticket < Zendesk::Resource
|
|
61
61
|
result[obj.to_s.downcase] = val
|
62
62
|
end
|
63
63
|
end
|
64
|
-
|
64
|
+
|
65
65
|
ticket_field_entries = []
|
66
66
|
@field_ids.each_pair do |key, value|
|
67
67
|
if val = instance_variable_get(:"@#{key.to_s}")
|
@@ -69,19 +69,20 @@ class Zendesk::Ticket < Zendesk::Resource
|
|
69
69
|
end
|
70
70
|
end
|
71
71
|
result[:ticket_field_entries] = ticket_field_entries unless ticket_field_entries.empty?
|
72
|
-
|
72
|
+
|
73
73
|
result[:set_tags] = current_tags if current_tags
|
74
|
+
result[:uploads] = 'ueergyyosamiqqg'#uploads if uploads
|
74
75
|
Zendesk.xml_out({:ticket => result})
|
75
76
|
end
|
76
|
-
|
77
|
+
|
77
78
|
def tags
|
78
79
|
@current_tags.try(:split)
|
79
80
|
end
|
80
|
-
|
81
|
+
|
81
82
|
def tags=(tags)
|
82
83
|
@current_tags = tags.is_a?(Array) ? tags.to_a.join(' ') : tags
|
83
84
|
end
|
84
|
-
|
85
|
+
|
85
86
|
def load_fields
|
86
87
|
attr_keys = Zendesk.config['ticket'] || {}
|
87
88
|
@field_ids = {}
|
@@ -94,4 +95,5 @@ class Zendesk::Ticket < Zendesk::Resource
|
|
94
95
|
field_names.each{ |field_name| self.class.attributes field_name.to_sym }
|
95
96
|
end
|
96
97
|
end
|
97
|
-
|
98
|
+
|
99
|
+
end
|
data/lib/zendesk/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zendesk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 21
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 7
|
10
|
+
version: 0.1.7
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Andrey Deryabin
|
@@ -36,6 +36,7 @@ files:
|
|
36
36
|
- README.rdoc
|
37
37
|
- Rakefile
|
38
38
|
- lib/zendesk.rb
|
39
|
+
- lib/zendesk/attachment.rb
|
39
40
|
- lib/zendesk/comment.rb
|
40
41
|
- lib/zendesk/lib/constants.rb
|
41
42
|
- lib/zendesk/lib/properties.rb
|
@@ -78,7 +79,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
78
79
|
requirements: []
|
79
80
|
|
80
81
|
rubyforge_project:
|
81
|
-
rubygems_version: 1.
|
82
|
+
rubygems_version: 1.5.2
|
82
83
|
signing_key:
|
83
84
|
specification_version: 3
|
84
85
|
summary: Ruby wrapper around the Zendesk API
|