zendesk 0.1.2 → 0.1.3
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/.gitignore +6 -0
 - data/CHANGELOG.rdoc +6 -0
 - data/Gemfile +4 -8
 - data/Rakefile +1 -24
 - data/lib/zendesk.rb +55 -8
 - data/lib/zendesk/comment.rb +2 -2
 - data/lib/zendesk/lib/properties.rb +17 -3
 - data/lib/zendesk/lib/rest_object.rb +5 -10
 - data/lib/zendesk/resource.rb +7 -1
 - data/lib/zendesk/ticket.rb +20 -17
 - data/lib/zendesk/user.rb +1 -1
 - data/lib/zendesk/version.rb +1 -1
 - data/spec/ticket_spec.rb +5 -0
 - data/zendesk.gemspec +10 -51
 - metadata +15 -56
 - data/VERSION +0 -1
 
    
        data/.gitignore
    ADDED
    
    
    
        data/CHANGELOG.rdoc
    CHANGED
    
    
    
        data/Gemfile
    CHANGED
    
    | 
         @@ -1,12 +1,8 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            source "http://rubygems.org"
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
      
 2 
     | 
    
         
            +
            gemspec
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            gem 'rest-client'
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
            # Add dependencies to develop your gem here.
         
     | 
| 
       7 
     | 
    
         
            -
            # Include everything needed to run rake, tests, features, etc.
         
     | 
| 
       8 
6 
     | 
    
         
             
            group :development do
         
     | 
| 
       9 
     | 
    
         
            -
              gem " 
     | 
| 
       10 
     | 
    
         
            -
              gem "jeweler", "~> 1.6.0"
         
     | 
| 
       11 
     | 
    
         
            -
              # gem "rcov", ">= 0"
         
     | 
| 
      
 7 
     | 
    
         
            +
              gem "rspec"
         
     | 
| 
       12 
8 
     | 
    
         
             
            end
         
     | 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -1,25 +1,2 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # encoding: utf-8
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            require 'rubygems'
         
     | 
| 
       4 
1 
     | 
    
         
             
            require 'bundler'
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
            begin
         
     | 
| 
       8 
     | 
    
         
            -
              Bundler.setup(:default, :development)
         
     | 
| 
       9 
     | 
    
         
            -
            rescue Bundler::BundlerError => e
         
     | 
| 
       10 
     | 
    
         
            -
              $stderr.puts e.message
         
     | 
| 
       11 
     | 
    
         
            -
              $stderr.puts "Run `bundle install` to install missing gems"
         
     | 
| 
       12 
     | 
    
         
            -
              exit e.status_code
         
     | 
| 
       13 
     | 
    
         
            -
            end
         
     | 
| 
       14 
     | 
    
         
            -
            require 'rake'
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
            require 'jeweler'
         
     | 
| 
       17 
     | 
    
         
            -
            Jeweler::Tasks.new do |gem|
         
     | 
| 
       18 
     | 
    
         
            -
              gem.name = "zendesk"
         
     | 
| 
       19 
     | 
    
         
            -
              gem.homepage = "http://github.com/aderyabin/zendesk"
         
     | 
| 
       20 
     | 
    
         
            -
              gem.license = "MIT"
         
     | 
| 
       21 
     | 
    
         
            -
              gem.summary = %Q{Ruby wrapper around the Zendesk API}
         
     | 
| 
       22 
     | 
    
         
            -
              gem.description = %Q{Ruby wrapper around the Zendesk API}
         
     | 
| 
       23 
     | 
    
         
            -
              gem.email = "deriabin@gmail.com"
         
     | 
| 
       24 
     | 
    
         
            -
              gem.authors = ["Andrey Deryabin"]
         
     | 
| 
       25 
     | 
    
         
            -
            end
         
     | 
| 
      
 2 
     | 
    
         
            +
            Bundler::GemHelper.install_tasks
         
     | 
    
        data/lib/zendesk.rb
    CHANGED
    
    | 
         @@ -1,17 +1,17 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # Zendesk
         
     | 
| 
       2 
2 
     | 
    
         
             
            require 'rubygems'
         
     | 
| 
       3 
     | 
    
         
            -
            require 'active_support'
         
     | 
| 
       4 
3 
     | 
    
         
             
            require 'rest_client'
         
     | 
| 
       5 
4 
     | 
    
         
             
            require 'yaml'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'rexml/document'
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
            module Zendesk
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
       9 
9 
     | 
    
         
             
              class ConfigurationNotFound < NameError;
         
     | 
| 
       10 
10 
     | 
    
         
             
              end
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
              ZENDESK_ROOT 
     | 
| 
       14 
     | 
    
         
            -
              DEFAULT_CONFIG_PATH 
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
              ZENDESK_ROOT = File.expand_path((defined?(Rails) && Rails.root.to_s.length > 0) ? Rails.root : ".") unless defined?(ZENDESK_ROOT)
         
     | 
| 
      
 14 
     | 
    
         
            +
              DEFAULT_CONFIG_PATH = File.join(ZENDESK_ROOT, 'config', 'zendesk.yml')
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
       16 
16 
     | 
    
         
             
              def self.load_configuration(config_path)
         
     | 
| 
       17 
17 
     | 
    
         
             
                exists = config_path && File.exists?(config_path)
         
     | 
| 
         @@ -22,16 +22,63 @@ module Zendesk 
     | 
|
| 
       22 
22 
     | 
    
         
             
              def self.config
         
     | 
| 
       23 
23 
     | 
    
         
             
                @configuration ||= load_configuration(DEFAULT_CONFIG_PATH)
         
     | 
| 
       24 
24 
     | 
    
         
             
              end
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
       26 
26 
     | 
    
         
             
              def self.resource
         
     | 
| 
       27 
27 
     | 
    
         
             
                @resource ||= RestClient::Resource.new config['host'], :user => config['user'], :password => config['password'], :timeout => 20, :open_timeout => 1
         
     | 
| 
       28 
28 
     | 
    
         
             
              end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
              def self.xml_in(xml_data)
         
     | 
| 
      
 31 
     | 
    
         
            +
                xml_elements_to_hash REXML::Document.new(xml_data).root
         
     | 
| 
      
 32 
     | 
    
         
            +
              end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
              def self.xml_elements_to_hash(element)
         
     | 
| 
      
 35 
     | 
    
         
            +
                value = element.text
         
     | 
| 
      
 36 
     | 
    
         
            +
                value = case element.attributes['type']
         
     | 
| 
      
 37 
     | 
    
         
            +
                when 'integer'
         
     | 
| 
      
 38 
     | 
    
         
            +
                  value.to_i
         
     | 
| 
      
 39 
     | 
    
         
            +
                when 'datetime'
         
     | 
| 
      
 40 
     | 
    
         
            +
                  DateTime.parse(element.text)
         
     | 
| 
      
 41 
     | 
    
         
            +
                else
         
     | 
| 
      
 42 
     | 
    
         
            +
                  element.text
         
     | 
| 
      
 43 
     | 
    
         
            +
                end if value
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
                if element.elements.count > 0
         
     | 
| 
      
 46 
     | 
    
         
            +
                  if element.attributes['type'] == 'array'
         
     | 
| 
      
 47 
     | 
    
         
            +
                    value = element.elements.map{|el| xml_elements_to_hash(el) }
         
     | 
| 
      
 48 
     | 
    
         
            +
                  else
         
     | 
| 
      
 49 
     | 
    
         
            +
                    value = {}
         
     | 
| 
      
 50 
     | 
    
         
            +
                    element.elements.each{|el| value.merge! xml_elements_to_hash(el) }
         
     | 
| 
      
 51 
     | 
    
         
            +
                  end      
         
     | 
| 
      
 52 
     | 
    
         
            +
                end
         
     | 
| 
      
 53 
     | 
    
         
            +
                { element.name.gsub('-', '_').to_sym => value }      
         
     | 
| 
      
 54 
     | 
    
         
            +
              end
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
              def self.xml_out(hash)
         
     | 
| 
      
 57 
     | 
    
         
            +
                doc = REXML::Document.new 
         
     | 
| 
      
 58 
     | 
    
         
            +
                doc.add_element hash_elements_to_xml(hash.keys[0], hash.values[0])
         
     | 
| 
      
 59 
     | 
    
         
            +
                doc.to_s
         
     | 
| 
      
 60 
     | 
    
         
            +
              end  
         
     | 
| 
       29 
61 
     | 
    
         | 
| 
      
 62 
     | 
    
         
            +
              def self.hash_elements_to_xml(key, value)
         
     | 
| 
      
 63 
     | 
    
         
            +
                element = REXML::Element.new(key.to_s.gsub('_', '-'))
         
     | 
| 
      
 64 
     | 
    
         
            +
                if value.is_a?(Array)
         
     | 
| 
      
 65 
     | 
    
         
            +
                  element.attributes['type'] = 'array'
         
     | 
| 
      
 66 
     | 
    
         
            +
                  value.each{ |val| element.add_element hash_elements_to_xml(val.keys[0], val.values[0]) }
         
     | 
| 
      
 67 
     | 
    
         
            +
                elsif value.is_a?(Hash)
         
     | 
| 
      
 68 
     | 
    
         
            +
                  value.each_pair{ |key, v| element.add_element hash_elements_to_xml(key, v) }
         
     | 
| 
      
 69 
     | 
    
         
            +
                else
         
     | 
| 
      
 70 
     | 
    
         
            +
                  element.text = value
         
     | 
| 
      
 71 
     | 
    
         
            +
                end
         
     | 
| 
      
 72 
     | 
    
         
            +
                element
         
     | 
| 
      
 73 
     | 
    
         
            +
              end
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
             
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
       30 
77 
     | 
    
         
             
              autoload :Resource, File.dirname(__FILE__) + '/zendesk/resource.rb'
         
     | 
| 
       31 
78 
     | 
    
         
             
              autoload :Comment, File.dirname(__FILE__) + '/zendesk/comment.rb'
         
     | 
| 
       32 
79 
     | 
    
         
             
              autoload :Ticket, File.dirname(__FILE__) + '/zendesk/ticket.rb'
         
     | 
| 
       33 
80 
     | 
    
         
             
              autoload :User, File.dirname(__FILE__) + '/zendesk/user.rb'
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
      
 81 
     | 
    
         
            +
             
     | 
| 
       35 
82 
     | 
    
         
             
              autoload :Constants, File.dirname(__FILE__) + '/zendesk/lib/constants.rb'
         
     | 
| 
       36 
83 
     | 
    
         
             
              autoload :RestObject, File.dirname(__FILE__) + '/zendesk/lib/rest_object.rb'
         
     | 
| 
       37 
84 
     | 
    
         
             
              autoload :Properties, File.dirname(__FILE__) + '/zendesk/lib/properties.rb'
         
     | 
    
        data/lib/zendesk/comment.rb
    CHANGED
    
    | 
         @@ -13,12 +13,12 @@ class Zendesk::Comment < Zendesk::Resource 
     | 
|
| 
       13 
13 
     | 
    
         
             
              end
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
15 
     | 
    
         
             
              def to_xml    
         
     | 
| 
       16 
     | 
    
         
            -
                { :value => value, :is_public => is_public } 
     | 
| 
      
 16 
     | 
    
         
            +
                Zendesk.xml_out({:comment => { :value => value, :is_public => is_public }})
         
     | 
| 
       17 
17 
     | 
    
         
             
              end
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
       19 
19 
     | 
    
         
             
              def save
         
     | 
| 
       20 
20 
     | 
    
         
             
                begin
         
     | 
| 
       21 
     | 
    
         
            -
                  response = resource["tickets/#{ticket_id}.xml"].put self.to_xml, :content_type => 'application/xml'
         
     | 
| 
      
 21 
     | 
    
         
            +
                  response = Zendesk.resource["tickets/#{ticket_id}.xml"].put self.to_xml, :content_type => 'application/xml'
         
     | 
| 
       22 
22 
     | 
    
         
             
                  return (200..300).include?(response.headers[:status].to_i)
         
     | 
| 
       23 
23 
     | 
    
         
             
                rescue Exception => e
         
     | 
| 
       24 
24 
     | 
    
         
             
                  puts e.message
         
     | 
| 
         @@ -1,13 +1,27 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Zendesk::Properties
         
     | 
| 
       2 
2 
     | 
    
         
             
              module ClassMethods
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
                mattr_accessor :_attributes, :_protected_attributes, :_properties, :_datetimes
         
     | 
| 
       5 
     | 
    
         
            -
                
         
     | 
| 
       6 
4 
     | 
    
         
             
                @@_attributes = []
         
     | 
| 
       7 
5 
     | 
    
         
             
                @@_protected_attributes = []
         
     | 
| 
       8 
6 
     | 
    
         
             
                @@_properties = []
         
     | 
| 
       9 
7 
     | 
    
         
             
                @@_datetimes = []
         
     | 
| 
       10 
8 
     | 
    
         | 
| 
      
 9 
     | 
    
         
            +
                def _attributes
         
     | 
| 
      
 10 
     | 
    
         
            +
                  @@_attributes
         
     | 
| 
      
 11 
     | 
    
         
            +
                end
         
     | 
| 
      
 12 
     | 
    
         
            +
                
         
     | 
| 
      
 13 
     | 
    
         
            +
                def _protected_attributes
         
     | 
| 
      
 14 
     | 
    
         
            +
                  @@_protected_attributes
         
     | 
| 
      
 15 
     | 
    
         
            +
                end
         
     | 
| 
      
 16 
     | 
    
         
            +
                
         
     | 
| 
      
 17 
     | 
    
         
            +
                def _properties
         
     | 
| 
      
 18 
     | 
    
         
            +
                  @@_properties
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
                
         
     | 
| 
      
 21 
     | 
    
         
            +
                def _datetimes
         
     | 
| 
      
 22 
     | 
    
         
            +
                  @@_datetimes
         
     | 
| 
      
 23 
     | 
    
         
            +
                end
         
     | 
| 
      
 24 
     | 
    
         
            +
                
         
     | 
| 
       11 
25 
     | 
    
         
             
                def attributes(*vars)
         
     | 
| 
       12 
26 
     | 
    
         
             
                  @@_attributes.concat vars
         
     | 
| 
       13 
27 
     | 
    
         
             
                  attr_accessor *vars
         
     | 
| 
         @@ -46,7 +60,7 @@ module Zendesk::Properties 
     | 
|
| 
       46 
60 
     | 
    
         | 
| 
       47 
61 
     | 
    
         
             
                    class_eval <<-END
         
     | 
| 
       48 
62 
     | 
    
         
             
                    def #{method_name}=(value)
         
     | 
| 
       49 
     | 
    
         
            -
                      @#{method_name}_id = #{method_name.upcase}. 
     | 
| 
      
 63 
     | 
    
         
            +
                      @#{method_name}_id = #{method_name.upcase}.key(value)
         
     | 
| 
       50 
64 
     | 
    
         
             
                    end
         
     | 
| 
       51 
65 
     | 
    
         
             
                    END
         
     | 
| 
       52 
66 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -1,10 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Zendesk::RestObject
         
     | 
| 
       2 
2 
     | 
    
         
             
              module ClassMethods
         
     | 
| 
       3 
     | 
    
         
            -
                def create(attrs = {})
         
     | 
| 
       4 
     | 
    
         
            -
                  instance = new(attrs)
         
     | 
| 
       5 
     | 
    
         
            -
                  instance.save
         
     | 
| 
       6 
     | 
    
         
            -
                end
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
3 
     | 
    
         
             
                def find(id)
         
     | 
| 
       9 
4 
     | 
    
         
             
                  begin
         
     | 
| 
       10 
5 
     | 
    
         
             
                    new().load(id)
         
     | 
| 
         @@ -16,16 +11,16 @@ module Zendesk::RestObject 
     | 
|
| 
       16 
11 
     | 
    
         
             
              end
         
     | 
| 
       17 
12 
     | 
    
         | 
| 
       18 
13 
     | 
    
         
             
              module InstanceMethods
         
     | 
| 
       19 
     | 
    
         
            -
                def  
     | 
| 
       20 
     | 
    
         
            -
                  self.class.to_s. 
     | 
| 
      
 14 
     | 
    
         
            +
                def model_name
         
     | 
| 
      
 15 
     | 
    
         
            +
                  self.class.to_s.gsub(/^.*::/, '').downcase
         
     | 
| 
       21 
16 
     | 
    
         
             
                end
         
     | 
| 
       22 
17 
     | 
    
         | 
| 
       23 
18 
     | 
    
         
             
                def save
         
     | 
| 
       24 
19 
     | 
    
         
             
                  begin
         
     | 
| 
       25 
20 
     | 
    
         
             
                    response = if self.id
         
     | 
| 
       26 
     | 
    
         
            -
                      Zendesk.resource["#{ 
     | 
| 
      
 21 
     | 
    
         
            +
                      Zendesk.resource["#{model_name}s/#{id}.xml"].put self.to_xml, :content_type => 'application/xml'
         
     | 
| 
       27 
22 
     | 
    
         
             
                    else  
         
     | 
| 
       28 
     | 
    
         
            -
                      Zendesk.resource["#{ 
     | 
| 
      
 23 
     | 
    
         
            +
                      Zendesk.resource["#{model_name}s.xml"].post self.to_xml, :content_type => 'application/xml'
         
     | 
| 
       29 
24 
     | 
    
         
             
                    end
         
     | 
| 
       30 
25 
     | 
    
         
             
                    if (200..300).include?(response.headers[:status].to_i)
         
     | 
| 
       31 
26 
     | 
    
         
             
                      load(id || response.headers[:location].scan(/\d+/).first.to_i)
         
     | 
| 
         @@ -51,7 +46,7 @@ module Zendesk::RestObject 
     | 
|
| 
       51 
46 
     | 
    
         | 
| 
       52 
47 
     | 
    
         
             
                def load(id)
         
     | 
| 
       53 
48 
     | 
    
         
             
                  begin
         
     | 
| 
       54 
     | 
    
         
            -
                    data = load_data(Zendesk.resource["#{ 
     | 
| 
      
 49 
     | 
    
         
            +
                    data = load_data(Zendesk.resource["#{model_name}s/#{id}.xml"].get)[model_name.to_sym]
         
     | 
| 
       55 
50 
     | 
    
         
             
                    load_attributes(data)
         
     | 
| 
       56 
51 
     | 
    
         
             
                    load_protected_attributes(data)
         
     | 
| 
       57 
52 
     | 
    
         
             
                    load_field_entries(data) if respond_to?(:load_field_entries)
         
     | 
    
        data/lib/zendesk/resource.rb
    CHANGED
    
    
    
        data/lib/zendesk/ticket.rb
    CHANGED
    
    | 
         @@ -8,8 +8,8 @@ class Zendesk::Ticket < Zendesk::Resource 
     | 
|
| 
       8 
8 
     | 
    
         
             
              properties :status, :ticket_type, :priority, :via
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
     | 
    
         
            -
               
     | 
| 
       12 
     | 
    
         
            -
               
     | 
| 
      
 11 
     | 
    
         
            +
              alias :id :nice_id
         
     | 
| 
      
 12 
     | 
    
         
            +
              alias :set_tags :current_tags
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
14 
     | 
    
         
             
              def initialize(attrs = {})
         
     | 
| 
       15 
15 
     | 
    
         
             
                @comments = []
         
     | 
| 
         @@ -18,19 +18,21 @@ class Zendesk::Ticket < Zendesk::Resource 
     | 
|
| 
       18 
18 
     | 
    
         
             
                super
         
     | 
| 
       19 
19 
     | 
    
         
             
              end
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
     | 
    
         
            -
              # Filling field methods from imported data.
         
     | 
| 
      
 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)
         
     | 
| 
       24 
     | 
    
         
            -
                data[ 
     | 
| 
       25 
     | 
    
         
            -
                   
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
      
 24 
     | 
    
         
            +
                if data[:ticket_field_entries]
         
     | 
| 
      
 25 
     | 
    
         
            +
                  data[:ticket_field_entries].each do |field_entry|
         
     | 
| 
      
 26 
     | 
    
         
            +
                    method_name = @field_ids.key(field_entry[:ticket_field_id])
         
     | 
| 
      
 27 
     | 
    
         
            +
                    send("#{method_name}=", field_entry[:value]) if method_name
         
     | 
| 
      
 28 
     | 
    
         
            +
                  end
         
     | 
| 
       27 
29 
     | 
    
         
             
                end
         
     | 
| 
       28 
30 
     | 
    
         
             
              end
         
     | 
| 
       29 
31 
     | 
    
         | 
| 
       30 
32 
     | 
    
         
             
              def load_comments(data)
         
     | 
| 
       31 
33 
     | 
    
         
             
                @comments = []
         
     | 
| 
       32 
     | 
    
         
            -
                data[ 
     | 
| 
       33 
     | 
    
         
            -
                  @comments << Zendesk::Comment.new(comment)
         
     | 
| 
      
 34 
     | 
    
         
            +
                data[:comments].each do |comment|
         
     | 
| 
      
 35 
     | 
    
         
            +
                  @comments << Zendesk::Comment.new(comment[:comment])
         
     | 
| 
       34 
36 
     | 
    
         
             
                end
         
     | 
| 
       35 
37 
     | 
    
         
             
              end
         
     | 
| 
       36 
38 
     | 
    
         | 
| 
         @@ -53,20 +55,21 @@ class Zendesk::Ticket < Zendesk::Resource 
     | 
|
| 
       53 
55 
     | 
    
         
             
              def to_xml
         
     | 
| 
       54 
56 
     | 
    
         
             
                result = {}
         
     | 
| 
       55 
57 
     | 
    
         
             
                (attributes -  @field_ids.keys).each do |obj|
         
     | 
| 
       56 
     | 
    
         
            -
                  if instance_variable_get(:"@#{obj.to_s}") 
     | 
| 
       57 
     | 
    
         
            -
                    result[obj.to_s.downcase] =  
     | 
| 
      
 58 
     | 
    
         
            +
                  if val = instance_variable_get(:"@#{obj.to_s}")
         
     | 
| 
      
 59 
     | 
    
         
            +
                    result[obj.to_s.downcase] = val
         
     | 
| 
       58 
60 
     | 
    
         
             
                  end
         
     | 
| 
       59 
61 
     | 
    
         
             
                end
         
     | 
| 
       60 
62 
     | 
    
         | 
| 
       61 
     | 
    
         
            -
                 
     | 
| 
      
 63 
     | 
    
         
            +
                ticket_field_entries = []
         
     | 
| 
       62 
64 
     | 
    
         
             
                @field_ids.each_pair do |key, value|
         
     | 
| 
       63 
     | 
    
         
            -
                  if instance_variable_get(:"@#{key.to_s}") 
     | 
| 
       64 
     | 
    
         
            -
                     
     | 
| 
      
 65 
     | 
    
         
            +
                  if val = instance_variable_get(:"@#{key.to_s}")
         
     | 
| 
      
 66 
     | 
    
         
            +
                    ticket_field_entries << { :ticket_field_id => value, :value => val.to_s }
         
     | 
| 
       65 
67 
     | 
    
         
             
                  end
         
     | 
| 
       66 
68 
     | 
    
         
             
                end
         
     | 
| 
      
 69 
     | 
    
         
            +
                 result[:ticket_field_entries] = ticket_field_entries unless ticket_field_entries.empty?
         
     | 
| 
       67 
70 
     | 
    
         | 
| 
       68 
     | 
    
         
            -
                result[:set_tags] = current_tags
         
     | 
| 
       69 
     | 
    
         
            -
                 
     | 
| 
      
 71 
     | 
    
         
            +
                result[:set_tags] = current_tags if current_tags
         
     | 
| 
      
 72 
     | 
    
         
            +
                Zendesk.xml_out({:ticket => result})
         
     | 
| 
       70 
73 
     | 
    
         
             
              end
         
     | 
| 
       71 
74 
     | 
    
         | 
| 
       72 
75 
     | 
    
         
             
              def tags
         
     | 
| 
         @@ -74,14 +77,14 @@ class Zendesk::Ticket < Zendesk::Resource 
     | 
|
| 
       74 
77 
     | 
    
         
             
              end
         
     | 
| 
       75 
78 
     | 
    
         | 
| 
       76 
79 
     | 
    
         
             
              def tags=(tags)
         
     | 
| 
       77 
     | 
    
         
            -
                @current_tags = tags.to_a.join(' ')
         
     | 
| 
      
 80 
     | 
    
         
            +
                @current_tags = tags.is_a?(Array) ? tags.to_a.join(' ') : tags
         
     | 
| 
       78 
81 
     | 
    
         
             
              end
         
     | 
| 
       79 
82 
     | 
    
         | 
| 
       80 
83 
     | 
    
         
             
              def load_fields
         
     | 
| 
       81 
84 
     | 
    
         
             
                attr_keys = Zendesk.config['ticket'] || {}
         
     | 
| 
       82 
85 
     | 
    
         
             
                @field_ids = {}
         
     | 
| 
       83 
86 
     | 
    
         
             
                field_names = attr_keys.keys
         
     | 
| 
       84 
     | 
    
         
            -
                unless field_names. 
     | 
| 
      
 87 
     | 
    
         
            +
                unless field_names.empty?
         
     | 
| 
       85 
88 
     | 
    
         
             
                  field_names = field_names.map(&:to_sym)
         
     | 
| 
       86 
89 
     | 
    
         
             
                  attr_keys.keys.each do |attr_name|
         
     | 
| 
       87 
90 
     | 
    
         
             
                    @field_ids[attr_name.to_sym]  = attr_keys[attr_name]
         
     | 
    
        data/lib/zendesk/user.rb
    CHANGED
    
    | 
         @@ -14,6 +14,6 @@ class Zendesk::User < Zendesk::Resource 
     | 
|
| 
       14 
14 
     | 
    
         
             
              def to_xml
         
     | 
| 
       15 
15 
     | 
    
         
             
                result = {}
         
     | 
| 
       16 
16 
     | 
    
         
             
                attributes.each{|attr| result[attr] = instance_variable_get(:"@#{attr.to_s}") }
         
     | 
| 
       17 
     | 
    
         
            -
                 
     | 
| 
      
 17 
     | 
    
         
            +
                SimpleXML.xml_out result, 'RootName' =>:user, 'AttrPrefix' => true
         
     | 
| 
       18 
18 
     | 
    
         
             
              end
         
     | 
| 
       19 
19 
     | 
    
         
             
            end
         
     | 
    
        data/lib/zendesk/version.rb
    CHANGED
    
    
    
        data/spec/ticket_spec.rb
    CHANGED
    
    | 
         @@ -26,4 +26,9 @@ require File.dirname(__FILE__) + '/../lib/zendesk' 
     | 
|
| 
       26 
26 
     | 
    
         
             
                ticket.ticket_type_id.should  == 3
         
     | 
| 
       27 
27 
     | 
    
         
             
              end
         
     | 
| 
       28 
28 
     | 
    
         | 
| 
      
 29 
     | 
    
         
            +
              it 'should convert to xml' do
         
     | 
| 
      
 30 
     | 
    
         
            +
                ticket = Zendesk::Ticket.new( :description => 'ticket_description', :tags => 'one_two' )
         
     | 
| 
      
 31 
     | 
    
         
            +
                ticket.to_xml.should == "<ticket><description>ticket_description</description><set-tags>one_two</set-tags></ticket>"
         
     | 
| 
      
 32 
     | 
    
         
            +
              end
         
     | 
| 
      
 33 
     | 
    
         
            +
              
         
     | 
| 
       29 
34 
     | 
    
         
             
            end
         
     | 
    
        data/zendesk.gemspec
    CHANGED
    
    | 
         @@ -1,62 +1,21 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # Generated by jeweler
         
     | 
| 
       2 
     | 
    
         
            -
            # DO NOT EDIT THIS FILE DIRECTLY
         
     | 
| 
       3 
     | 
    
         
            -
            # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
         
     | 
| 
       4 
1 
     | 
    
         
             
            # -*- encoding: utf-8 -*-
         
     | 
| 
      
 2 
     | 
    
         
            +
            $:.push File.expand_path("../lib", __FILE__)
         
     | 
| 
      
 3 
     | 
    
         
            +
            require "zendesk/version"
         
     | 
| 
       5 
4 
     | 
    
         | 
| 
       6 
5 
     | 
    
         
             
            Gem::Specification.new do |s|
         
     | 
| 
       7 
6 
     | 
    
         
             
              s.name = %q{zendesk}
         
     | 
| 
       8 
     | 
    
         
            -
              s.version =  
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         
     | 
| 
      
 7 
     | 
    
         
            +
              s.version = Zendesk::VERSION
         
     | 
| 
      
 8 
     | 
    
         
            +
              s.platform    = Gem::Platform::RUBY
         
     | 
| 
       11 
9 
     | 
    
         
             
              s.authors = ["Andrey Deryabin"]
         
     | 
| 
       12 
     | 
    
         
            -
              s.date = %q{2011-05- 
     | 
| 
      
 10 
     | 
    
         
            +
              s.date = %q{2011-05-20}
         
     | 
| 
      
 11 
     | 
    
         
            +
              s.summary = %q{Ruby wrapper around the Zendesk API}
         
     | 
| 
       13 
12 
     | 
    
         
             
              s.description = %q{Ruby wrapper around the Zendesk API}
         
     | 
| 
       14 
13 
     | 
    
         
             
              s.email = %q{deriabin@gmail.com}
         
     | 
| 
       15 
     | 
    
         
            -
              s.extra_rdoc_files = [
         
     | 
| 
       16 
     | 
    
         
            -
                "LICENSE.txt",
         
     | 
| 
       17 
     | 
    
         
            -
                "README.rdoc"
         
     | 
| 
       18 
     | 
    
         
            -
              ]
         
     | 
| 
       19 
     | 
    
         
            -
              s.files = [
         
     | 
| 
       20 
     | 
    
         
            -
                "CHANGELOG.rdoc",
         
     | 
| 
       21 
     | 
    
         
            -
                "Gemfile",
         
     | 
| 
       22 
     | 
    
         
            -
                "LICENSE.txt",
         
     | 
| 
       23 
     | 
    
         
            -
                "README.rdoc",
         
     | 
| 
       24 
     | 
    
         
            -
                "Rakefile",
         
     | 
| 
       25 
     | 
    
         
            -
                "VERSION",
         
     | 
| 
       26 
     | 
    
         
            -
                "lib/zendesk.rb",
         
     | 
| 
       27 
     | 
    
         
            -
                "lib/zendesk/comment.rb",
         
     | 
| 
       28 
     | 
    
         
            -
                "lib/zendesk/lib/constants.rb",
         
     | 
| 
       29 
     | 
    
         
            -
                "lib/zendesk/lib/properties.rb",
         
     | 
| 
       30 
     | 
    
         
            -
                "lib/zendesk/lib/rest_object.rb",
         
     | 
| 
       31 
     | 
    
         
            -
                "lib/zendesk/resource.rb",
         
     | 
| 
       32 
     | 
    
         
            -
                "lib/zendesk/ticket.rb",
         
     | 
| 
       33 
     | 
    
         
            -
                "lib/zendesk/user.rb",
         
     | 
| 
       34 
     | 
    
         
            -
                "lib/zendesk/version.rb",
         
     | 
| 
       35 
     | 
    
         
            -
                "spec/comment_spec.rb",
         
     | 
| 
       36 
     | 
    
         
            -
                "spec/spec_helper.rb",
         
     | 
| 
       37 
     | 
    
         
            -
                "spec/ticket_spec.rb",
         
     | 
| 
       38 
     | 
    
         
            -
                "zendesk.gemspec"
         
     | 
| 
       39 
     | 
    
         
            -
              ]
         
     | 
| 
       40 
14 
     | 
    
         
             
              s.homepage = %q{http://github.com/aderyabin/zendesk}
         
     | 
| 
       41 
     | 
    
         
            -
              s.licenses = ["MIT"]
         
     | 
| 
       42 
     | 
    
         
            -
              s.require_paths = ["lib"]
         
     | 
| 
       43 
     | 
    
         
            -
              s.rubygems_version = %q{1.3.7}
         
     | 
| 
       44 
     | 
    
         
            -
              s.summary = %q{Ruby wrapper around the Zendesk API}
         
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
              if s.respond_to? :specification_version then
         
     | 
| 
       47 
     | 
    
         
            -
                current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
         
     | 
| 
       48 
     | 
    
         
            -
                s.specification_version = 3
         
     | 
| 
       49 
15 
     | 
    
         | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
                  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
         
     | 
| 
       55 
     | 
    
         
            -
                  s.add_dependency(%q<jeweler>, ["~> 1.6.0"])
         
     | 
| 
       56 
     | 
    
         
            -
                end
         
     | 
| 
       57 
     | 
    
         
            -
              else
         
     | 
| 
       58 
     | 
    
         
            -
                s.add_dependency(%q<bundler>, ["~> 1.0.0"])
         
     | 
| 
       59 
     | 
    
         
            -
                s.add_dependency(%q<jeweler>, ["~> 1.6.0"])
         
     | 
| 
       60 
     | 
    
         
            -
              end
         
     | 
| 
      
 16 
     | 
    
         
            +
              s.files         = `git ls-files`.split("\n")
         
     | 
| 
      
 17 
     | 
    
         
            +
              s.test_files    = `git ls-files -- {test,spec,features}/*`.split("\n")
         
     | 
| 
      
 18 
     | 
    
         
            +
              s.executables   = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
         
     | 
| 
      
 19 
     | 
    
         
            +
              s.require_paths = ["lib"]
         
     | 
| 
       61 
20 
     | 
    
         
             
            end
         
     | 
| 
       62 
21 
     | 
    
         | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,13 +1,8 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: zendesk
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
     | 
    
         
            -
               
     | 
| 
       5 
     | 
    
         
            -
               
     | 
| 
       6 
     | 
    
         
            -
              segments: 
         
     | 
| 
       7 
     | 
    
         
            -
              - 0
         
     | 
| 
       8 
     | 
    
         
            -
              - 1
         
     | 
| 
       9 
     | 
    
         
            -
              - 2
         
     | 
| 
       10 
     | 
    
         
            -
              version: 0.1.2
         
     | 
| 
      
 4 
     | 
    
         
            +
              prerelease: 
         
     | 
| 
      
 5 
     | 
    
         
            +
              version: 0.1.3
         
     | 
| 
       11 
6 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       12 
7 
     | 
    
         
             
            authors: 
         
     | 
| 
       13 
8 
     | 
    
         
             
            - Andrey Deryabin
         
     | 
| 
         @@ -15,57 +10,25 @@ autorequire: 
     | 
|
| 
       15 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       16 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       17 
12 
     | 
    
         | 
| 
       18 
     | 
    
         
            -
            date: 2011-05- 
     | 
| 
      
 13 
     | 
    
         
            +
            date: 2011-05-20 00:00:00 +04:00
         
     | 
| 
       19 
14 
     | 
    
         
             
            default_executable: 
         
     | 
| 
       20 
     | 
    
         
            -
            dependencies: 
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
              prerelease: false
         
     | 
| 
       23 
     | 
    
         
            -
              type: :development
         
     | 
| 
       24 
     | 
    
         
            -
              name: bundler
         
     | 
| 
       25 
     | 
    
         
            -
              version_requirements: &id001 !ruby/object:Gem::Requirement 
         
     | 
| 
       26 
     | 
    
         
            -
                none: false
         
     | 
| 
       27 
     | 
    
         
            -
                requirements: 
         
     | 
| 
       28 
     | 
    
         
            -
                - - ~>
         
     | 
| 
       29 
     | 
    
         
            -
                  - !ruby/object:Gem::Version 
         
     | 
| 
       30 
     | 
    
         
            -
                    hash: 23
         
     | 
| 
       31 
     | 
    
         
            -
                    segments: 
         
     | 
| 
       32 
     | 
    
         
            -
                    - 1
         
     | 
| 
       33 
     | 
    
         
            -
                    - 0
         
     | 
| 
       34 
     | 
    
         
            -
                    - 0
         
     | 
| 
       35 
     | 
    
         
            -
                    version: 1.0.0
         
     | 
| 
       36 
     | 
    
         
            -
              requirement: *id001
         
     | 
| 
       37 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       38 
     | 
    
         
            -
              prerelease: false
         
     | 
| 
       39 
     | 
    
         
            -
              type: :development
         
     | 
| 
       40 
     | 
    
         
            -
              name: jeweler
         
     | 
| 
       41 
     | 
    
         
            -
              version_requirements: &id002 !ruby/object:Gem::Requirement 
         
     | 
| 
       42 
     | 
    
         
            -
                none: false
         
     | 
| 
       43 
     | 
    
         
            -
                requirements: 
         
     | 
| 
       44 
     | 
    
         
            -
                - - ~>
         
     | 
| 
       45 
     | 
    
         
            -
                  - !ruby/object:Gem::Version 
         
     | 
| 
       46 
     | 
    
         
            -
                    hash: 15
         
     | 
| 
       47 
     | 
    
         
            -
                    segments: 
         
     | 
| 
       48 
     | 
    
         
            -
                    - 1
         
     | 
| 
       49 
     | 
    
         
            -
                    - 6
         
     | 
| 
       50 
     | 
    
         
            -
                    - 0
         
     | 
| 
       51 
     | 
    
         
            -
                    version: 1.6.0
         
     | 
| 
       52 
     | 
    
         
            -
              requirement: *id002
         
     | 
| 
      
 15 
     | 
    
         
            +
            dependencies: []
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
       53 
17 
     | 
    
         
             
            description: Ruby wrapper around the Zendesk API
         
     | 
| 
       54 
18 
     | 
    
         
             
            email: deriabin@gmail.com
         
     | 
| 
       55 
19 
     | 
    
         
             
            executables: []
         
     | 
| 
       56 
20 
     | 
    
         | 
| 
       57 
21 
     | 
    
         
             
            extensions: []
         
     | 
| 
       58 
22 
     | 
    
         | 
| 
       59 
     | 
    
         
            -
            extra_rdoc_files: 
         
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
       61 
     | 
    
         
            -
            - README.rdoc
         
     | 
| 
      
 23 
     | 
    
         
            +
            extra_rdoc_files: []
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
       62 
25 
     | 
    
         
             
            files: 
         
     | 
| 
      
 26 
     | 
    
         
            +
            - .gitignore
         
     | 
| 
       63 
27 
     | 
    
         
             
            - CHANGELOG.rdoc
         
     | 
| 
       64 
28 
     | 
    
         
             
            - Gemfile
         
     | 
| 
       65 
29 
     | 
    
         
             
            - LICENSE.txt
         
     | 
| 
       66 
30 
     | 
    
         
             
            - README.rdoc
         
     | 
| 
       67 
31 
     | 
    
         
             
            - Rakefile
         
     | 
| 
       68 
     | 
    
         
            -
            - VERSION
         
     | 
| 
       69 
32 
     | 
    
         
             
            - lib/zendesk.rb
         
     | 
| 
       70 
33 
     | 
    
         
             
            - lib/zendesk/comment.rb
         
     | 
| 
       71 
34 
     | 
    
         
             
            - lib/zendesk/lib/constants.rb
         
     | 
| 
         @@ -81,8 +44,8 @@ files: 
     | 
|
| 
       81 
44 
     | 
    
         
             
            - zendesk.gemspec
         
     | 
| 
       82 
45 
     | 
    
         
             
            has_rdoc: true
         
     | 
| 
       83 
46 
     | 
    
         
             
            homepage: http://github.com/aderyabin/zendesk
         
     | 
| 
       84 
     | 
    
         
            -
            licenses: 
         
     | 
| 
       85 
     | 
    
         
            -
             
     | 
| 
      
 47 
     | 
    
         
            +
            licenses: []
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
       86 
49 
     | 
    
         
             
            post_install_message: 
         
     | 
| 
       87 
50 
     | 
    
         
             
            rdoc_options: []
         
     | 
| 
       88 
51 
     | 
    
         | 
| 
         @@ -93,25 +56,21 @@ required_ruby_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       93 
56 
     | 
    
         
             
              requirements: 
         
     | 
| 
       94 
57 
     | 
    
         
             
              - - ">="
         
     | 
| 
       95 
58 
     | 
    
         
             
                - !ruby/object:Gem::Version 
         
     | 
| 
       96 
     | 
    
         
            -
                  hash: 3
         
     | 
| 
       97 
     | 
    
         
            -
                  segments: 
         
     | 
| 
       98 
     | 
    
         
            -
                  - 0
         
     | 
| 
       99 
59 
     | 
    
         
             
                  version: "0"
         
     | 
| 
       100 
60 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement 
         
     | 
| 
       101 
61 
     | 
    
         
             
              none: false
         
     | 
| 
       102 
62 
     | 
    
         
             
              requirements: 
         
     | 
| 
       103 
63 
     | 
    
         
             
              - - ">="
         
     | 
| 
       104 
64 
     | 
    
         
             
                - !ruby/object:Gem::Version 
         
     | 
| 
       105 
     | 
    
         
            -
                  hash: 3
         
     | 
| 
       106 
     | 
    
         
            -
                  segments: 
         
     | 
| 
       107 
     | 
    
         
            -
                  - 0
         
     | 
| 
       108 
65 
     | 
    
         
             
                  version: "0"
         
     | 
| 
       109 
66 
     | 
    
         
             
            requirements: []
         
     | 
| 
       110 
67 
     | 
    
         | 
| 
       111 
68 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       112 
     | 
    
         
            -
            rubygems_version: 1. 
     | 
| 
      
 69 
     | 
    
         
            +
            rubygems_version: 1.6.2
         
     | 
| 
       113 
70 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       114 
71 
     | 
    
         
             
            specification_version: 3
         
     | 
| 
       115 
72 
     | 
    
         
             
            summary: Ruby wrapper around the Zendesk API
         
     | 
| 
       116 
     | 
    
         
            -
            test_files:  
     | 
| 
       117 
     | 
    
         
            -
             
     | 
| 
      
 73 
     | 
    
         
            +
            test_files: 
         
     | 
| 
      
 74 
     | 
    
         
            +
            - spec/comment_spec.rb
         
     | 
| 
      
 75 
     | 
    
         
            +
            - spec/spec_helper.rb
         
     | 
| 
      
 76 
     | 
    
         
            +
            - spec/ticket_spec.rb
         
     | 
    
        data/VERSION
    DELETED
    
    | 
         @@ -1 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            0.1.2
         
     |