zendesk 0.1.6 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -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