zendesk 0.1.6 → 0.1.7
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.
- 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
|