zendesk 0.1.1 → 0.1.2

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/CHANGELOG.rdoc CHANGED
@@ -1,3 +1,8 @@
1
+ == 0.1.2
2
+ * bugfix
3
+ * fixed missed field entries
4
+ * config loading
5
+
1
6
  == 0.1.1
2
7
 
3
8
  * bugfix
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.1.2
data/lib/zendesk.rb CHANGED
@@ -6,10 +6,26 @@ require 'yaml'
6
6
 
7
7
  module Zendesk
8
8
 
9
- CONFIG = YAML.load_file('zendesk.yml')
10
- RESOURCE = RestClient::Resource.new CONFIG['host'], :user => CONFIG['user'], :password => CONFIG['password'], :timeout => 20, :open_timeout => 1
9
+ class ConfigurationNotFound < NameError;
10
+ end
11
11
 
12
- # TODO: Make load file as optional
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
+
16
+ def self.load_configuration(config_path)
17
+ exists = config_path && File.exists?(config_path)
18
+ raise ConfigurationNotFound, "could not find the \"#{config_path}\" configuration file" unless exists
19
+ YAML.load_file(config_path)
20
+ end
21
+
22
+ def self.config
23
+ @configuration ||= load_configuration(DEFAULT_CONFIG_PATH)
24
+ end
25
+
26
+ def self.resource
27
+ @resource ||= RestClient::Resource.new config['host'], :user => config['user'], :password => config['password'], :timeout => 20, :open_timeout => 1
28
+ end
13
29
 
14
30
  autoload :Resource, File.dirname(__FILE__) + '/zendesk/resource.rb'
15
31
  autoload :Comment, File.dirname(__FILE__) + '/zendesk/comment.rb'
@@ -18,7 +18,7 @@ class Zendesk::Comment < Zendesk::Resource
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 = 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
@@ -23,9 +23,9 @@ module Zendesk::RestObject
23
23
  def save
24
24
  begin
25
25
  response = if self.id
26
- Zendesk::RESOURCE["#{path}/#{id}.xml"].put self.to_xml, :content_type => 'application/xml'
26
+ Zendesk.resource["#{path}/#{id}.xml"].put self.to_xml, :content_type => 'application/xml'
27
27
  else
28
- Zendesk::RESOURCE["#{path}.xml"].post self.to_xml, :content_type => 'application/xml'
28
+ Zendesk.resource["#{path}.xml"].post self.to_xml, :content_type => 'application/xml'
29
29
  end
30
30
  if (200..300).include?(response.headers[:status].to_i)
31
31
  load(id || response.headers[:location].scan(/\d+/).first.to_i)
@@ -51,7 +51,7 @@ module Zendesk::RestObject
51
51
 
52
52
  def load(id)
53
53
  begin
54
- data = load_data(Zendesk::RESOURCE["#{path}/#{id}.xml"].get)[path.singularize]
54
+ data = load_data(Zendesk.resource["#{path}/#{id}.xml"].get)[path.singularize]
55
55
  load_attributes(data)
56
56
  load_protected_attributes(data)
57
57
  load_field_entries(data) if respond_to?(:load_field_entries)
@@ -18,10 +18,12 @@ class Zendesk::Ticket < Zendesk::Resource
18
18
  super
19
19
  end
20
20
 
21
+ # Filling field methods from imported data.
22
+ # If field is not pointed in config it will be missed
21
23
  def load_field_entries(data)
22
24
  data['ticket_field_entries'].each do |field_entry|
23
25
  method_name = @field_ids.index(field_entry['ticket_field_id'])
24
- send("#{method_name}=", field_entry['value'])
26
+ send("#{method_name}=", field_entry['value']) if method_name
25
27
  end
26
28
  end
27
29
 
@@ -76,7 +78,7 @@ class Zendesk::Ticket < Zendesk::Resource
76
78
  end
77
79
 
78
80
  def load_fields
79
- attr_keys = Zendesk::CONFIG['ticket'] || {}
81
+ attr_keys = Zendesk.config['ticket'] || {}
80
82
  @field_ids = {}
81
83
  field_names = attr_keys.keys
82
84
  unless field_names.blank?
@@ -87,5 +89,4 @@ class Zendesk::Ticket < Zendesk::Resource
87
89
  field_names.each{ |field_name| self.class.attributes field_name.to_sym }
88
90
  end
89
91
  end
90
-
91
92
  end
data/zendesk.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{zendesk}
8
- s.version = "0.1.1"
8
+ s.version = "0.1.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Andrey Deryabin"]
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: 25
4
+ hash: 31
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 1
10
- version: 0.1.1
9
+ - 2
10
+ version: 0.1.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Andrey Deryabin