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.
@@ -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
@@ -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
@@ -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
- end
98
+
99
+ end
@@ -1,3 +1,3 @@
1
1
  module Zendesk
2
- VERSION = "0.1.6"
2
+ VERSION = "0.1.7"
3
3
  end
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: 23
4
+ hash: 21
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 6
10
- version: 0.1.6
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.6.2
82
+ rubygems_version: 1.5.2
82
83
  signing_key:
83
84
  specification_version: 3
84
85
  summary: Ruby wrapper around the Zendesk API