KayakoClient 1.0.2 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/kayako_client.rb +31 -0
- data/lib/kayako_client/base.rb +23 -0
- data/lib/kayako_client/custom_field.rb +14 -0
- data/lib/kayako_client/department.rb +18 -3
- data/lib/kayako_client/http/http.rb +14 -0
- data/lib/kayako_client/http/http_backend.rb +14 -0
- data/lib/kayako_client/http/http_client.rb +14 -0
- data/lib/kayako_client/http/http_response.rb +14 -0
- data/lib/kayako_client/http/net_http.rb +14 -0
- data/lib/kayako_client/knowledgebase_article.rb +131 -0
- data/lib/kayako_client/knowledgebase_attachment.rb +59 -0
- data/lib/kayako_client/knowledgebase_category.rb +71 -0
- data/lib/kayako_client/knowledgebase_comment.rb +32 -0
- data/lib/kayako_client/mixins/api.rb +14 -0
- data/lib/kayako_client/mixins/article_client.rb +76 -0
- data/lib/kayako_client/mixins/attachment.rb +16 -1
- data/lib/kayako_client/mixins/authentication.rb +14 -0
- data/lib/kayako_client/mixins/client.rb +300 -0
- data/lib/kayako_client/mixins/comment_object.rb +102 -0
- data/lib/kayako_client/mixins/convert_api.rb +39 -0
- data/lib/kayako_client/mixins/creator_api.rb +44 -0
- data/lib/kayako_client/mixins/knowledgebase_article_api.rb +69 -0
- data/lib/kayako_client/mixins/knowledgebase_category_client.rb +51 -0
- data/lib/kayako_client/mixins/logger.rb +14 -0
- data/lib/kayako_client/mixins/news_category_client.rb +51 -0
- data/lib/kayako_client/mixins/news_client.rb +51 -0
- data/lib/kayako_client/mixins/object.rb +24 -7
- data/lib/kayako_client/mixins/post_client.rb +14 -0
- data/lib/kayako_client/mixins/staff_visibility_api.rb +14 -0
- data/lib/kayako_client/mixins/ticket_api.rb +14 -0
- data/lib/kayako_client/mixins/ticket_client.rb +14 -0
- data/lib/kayako_client/mixins/troubleshooter_step_api.rb +69 -0
- data/lib/kayako_client/mixins/troubleshooter_step_client.rb +76 -0
- data/lib/kayako_client/mixins/user_visibility_api.rb +14 -0
- data/lib/kayako_client/news_category.rb +29 -0
- data/lib/kayako_client/news_comment.rb +32 -0
- data/lib/kayako_client/news_item.rb +81 -0
- data/lib/kayako_client/news_subscriber.rb +33 -0
- data/lib/kayako_client/staff.rb +14 -0
- data/lib/kayako_client/staff_group.rb +14 -0
- data/lib/kayako_client/ticket.rb +24 -1
- data/lib/kayako_client/ticket_attachment.rb +18 -0
- data/lib/kayako_client/ticket_count.rb +14 -0
- data/lib/kayako_client/ticket_custom_field.rb +14 -0
- data/lib/kayako_client/ticket_note.rb +14 -1
- data/lib/kayako_client/ticket_post.rb +15 -0
- data/lib/kayako_client/ticket_priority.rb +14 -0
- data/lib/kayako_client/ticket_status.rb +14 -0
- data/lib/kayako_client/ticket_time_track.rb +14 -0
- data/lib/kayako_client/ticket_type.rb +14 -0
- data/lib/kayako_client/troubleshooter_attachment.rb +68 -0
- data/lib/kayako_client/troubleshooter_category.rb +51 -0
- data/lib/kayako_client/troubleshooter_comment.rb +32 -0
- data/lib/kayako_client/troubleshooter_step.rb +100 -0
- data/lib/kayako_client/user.rb +42 -0
- data/lib/kayako_client/user_group.rb +14 -0
- data/lib/kayako_client/user_organization.rb +14 -0
- data/lib/kayako_client/xml/lib_xml.rb +14 -0
- data/lib/kayako_client/xml/rexml_document.rb +14 -0
- data/lib/kayako_client/xml/xml.rb +14 -0
- data/lib/kayako_client/xml/xml_backend.rb +14 -0
- data/test/test_attachment.rb +77 -0
- data/test/test_client.rb +191 -0
- data/test/test_configuration.rb +110 -0
- data/test/test_count.rb +162 -0
- data/test/test_custom_field.rb +86 -0
- data/test/test_department.rb +136 -0
- data/test/test_http.rb +34 -0
- data/test/test_knowledgebase.rb +155 -0
- data/test/test_news.rb +117 -0
- data/test/test_note.rb +64 -0
- data/test/test_post.rb +64 -0
- data/test/test_priority.rb +46 -0
- data/test/test_properties.rb +114 -0
- data/test/test_staff.rb +77 -0
- data/test/test_status.rb +52 -0
- data/test/test_ticket.rb +152 -0
- data/test/test_ticket_custom_field.rb +193 -0
- data/test/test_time_track.rb +68 -0
- data/test/test_troubleshooter.rb +106 -0
- data/test/test_type.rb +65 -0
- data/test/test_user.rb +95 -0
- data/test/test_xml.rb +183 -0
- metadata +89 -42
@@ -0,0 +1,102 @@
|
|
1
|
+
#######################################################################
|
2
|
+
#
|
3
|
+
# Kayako Ruby REST API library
|
4
|
+
# _____________________________________________________________________
|
5
|
+
#
|
6
|
+
# @author Andriy Lesyuk
|
7
|
+
#
|
8
|
+
# @package KayakoClient
|
9
|
+
# @copyright Copyright (c) 2011-2013, Kayako
|
10
|
+
# @license FreeBSD
|
11
|
+
# @link http://forge.kayako.com/projects/kayako-ruby-api-library
|
12
|
+
#
|
13
|
+
#######################################################################
|
14
|
+
|
15
|
+
require 'kayako_client/mixins/creator_api'
|
16
|
+
|
17
|
+
require 'kayako_client/staff'
|
18
|
+
require 'kayako_client/user'
|
19
|
+
|
20
|
+
module KayakoClient
|
21
|
+
module CommentObject
|
22
|
+
|
23
|
+
CREATOR_STAFF = 1
|
24
|
+
CREATOR_USER = 2
|
25
|
+
|
26
|
+
STATUS_PENDING = 1
|
27
|
+
STATUS_APPROVED = 2
|
28
|
+
STATUS_SPAM = 3
|
29
|
+
|
30
|
+
def self.included(base)
|
31
|
+
base.extend(ClassMethods)
|
32
|
+
base.class_eval do
|
33
|
+
|
34
|
+
supports :all, :get, :post, :delete
|
35
|
+
|
36
|
+
property :id, :integer, :readonly => true
|
37
|
+
property :creator_type, :integer, :required => :post, :range => 1..2
|
38
|
+
property :creator_id, :integer
|
39
|
+
property :full_name, :string
|
40
|
+
property :email, :string
|
41
|
+
property :ip_address, :string, :readonly => true
|
42
|
+
property :date_line, :date, :readonly => true
|
43
|
+
property :parent_comment_id, :integer
|
44
|
+
property :comment_status, :integer, :range => 1..3
|
45
|
+
property :user_agent, :string, :readonly => true
|
46
|
+
property :referrer, :string, :readonly => true
|
47
|
+
property :parent_url, :string, :readonly => true
|
48
|
+
property :contents, :string, :required => :post
|
49
|
+
|
50
|
+
associate :parent_comment, :parent_comment_id, base
|
51
|
+
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def creator=(creator)
|
56
|
+
if creator.is_a?(Staff)
|
57
|
+
self.creator_type = self.class::CREATOR_STAFF
|
58
|
+
self.creator_id = creator.id
|
59
|
+
self.full_name = creator.full_name
|
60
|
+
self.email = creator.email
|
61
|
+
elsif creator.is_a?(User)
|
62
|
+
self.creator_type = self.class::CREATOR_USER
|
63
|
+
self.creator_id = creator.id
|
64
|
+
self.full_name = creator.full_name
|
65
|
+
self.email = creator.emails.first
|
66
|
+
else
|
67
|
+
raise ArgumentError, "creator must be a User or Staff"
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
def has_parent_comment?
|
72
|
+
!parent_comment_id.nil? && parent_comment_id > 0
|
73
|
+
end
|
74
|
+
|
75
|
+
alias_method :is_reply?, :has_parent_comment?
|
76
|
+
|
77
|
+
module ClassMethods
|
78
|
+
|
79
|
+
def all(object, options = {})
|
80
|
+
unless object.to_i > 0
|
81
|
+
logger.error "invalid commented object :id - #{object}" if logger
|
82
|
+
raise ArgumentError, "invalid commented object ID"
|
83
|
+
end
|
84
|
+
super(options.merge(:e => "#{path}/ListAll/#{object.to_i}"))
|
85
|
+
end
|
86
|
+
|
87
|
+
end
|
88
|
+
|
89
|
+
private
|
90
|
+
|
91
|
+
def validate(method, params)
|
92
|
+
if method == :post
|
93
|
+
if params[:creator_type] == self.class::CREATOR_STAFF
|
94
|
+
raise ArgumentError, ":creator_id is required for staff" unless params[:creator_id]
|
95
|
+
elsif params[:creator_type] == self.class::CREATOR_USER
|
96
|
+
raise ArgumentError, ":full_name is required for user" unless params[:full_name]
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
end
|
102
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
#######################################################################
|
2
|
+
#
|
3
|
+
# Kayako Ruby REST API library
|
4
|
+
# _____________________________________________________________________
|
5
|
+
#
|
6
|
+
# @author Andriy Lesyuk
|
7
|
+
#
|
8
|
+
# @package KayakoClient
|
9
|
+
# @copyright Copyright (c) 2011-2013, Kayako
|
10
|
+
# @license FreeBSD
|
11
|
+
# @link http://forge.kayako.com/projects/kayako-ruby-api-library
|
12
|
+
#
|
13
|
+
#######################################################################
|
14
|
+
|
15
|
+
module KayakoClient
|
16
|
+
module ConvertAPI
|
17
|
+
|
18
|
+
def self.included(base)
|
19
|
+
base.extend(ClassMethods)
|
20
|
+
end
|
21
|
+
|
22
|
+
module ClassMethods
|
23
|
+
|
24
|
+
def convert(type, value, options = {})
|
25
|
+
value = super(type, value, options)
|
26
|
+
value = value.join(',') if type.is_a?(Array)
|
27
|
+
value
|
28
|
+
end
|
29
|
+
|
30
|
+
def convert_value(type, value, options = {})
|
31
|
+
result = super(type, value, options = {})
|
32
|
+
result = Time.at(value).strftime('%m/%d/%Y') if type == :date
|
33
|
+
result
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
#######################################################################
|
2
|
+
#
|
3
|
+
# Kayako Ruby REST API library
|
4
|
+
# _____________________________________________________________________
|
5
|
+
#
|
6
|
+
# @author Andriy Lesyuk
|
7
|
+
#
|
8
|
+
# @package KayakoClient
|
9
|
+
# @copyright Copyright (c) 2011-2013, Kayako
|
10
|
+
# @license FreeBSD
|
11
|
+
# @link http://forge.kayako.com/projects/kayako-ruby-api-library
|
12
|
+
#
|
13
|
+
#######################################################################
|
14
|
+
|
15
|
+
module KayakoClient
|
16
|
+
module CreatorAPI
|
17
|
+
|
18
|
+
def created_by_staff?
|
19
|
+
!creator_type.nil? && creator_type == self.class::CREATOR_STAFF
|
20
|
+
end
|
21
|
+
|
22
|
+
def created_by_user?
|
23
|
+
!creator_type.nil? && creator_type == self.class::CREATOR_USER
|
24
|
+
end
|
25
|
+
|
26
|
+
def creator
|
27
|
+
if @associated.has_key?(:creator)
|
28
|
+
@associated[:creator]
|
29
|
+
elsif instance_variable_defined?(:@creator_id)
|
30
|
+
creator_id = instance_variable_get(:@creator_id)
|
31
|
+
if created_by_staff?
|
32
|
+
@associated[:creator] = Staff.get(creator_id.to_i, inherited_options)
|
33
|
+
elsif created_by_user?
|
34
|
+
@associated[:creator] = User.get(creator_id.to_i, inherited_options)
|
35
|
+
else
|
36
|
+
@associated[:creator] = nil
|
37
|
+
end
|
38
|
+
else
|
39
|
+
@associated[:creator] = nil
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
#######################################################################
|
2
|
+
#
|
3
|
+
# Kayako Ruby REST API library
|
4
|
+
# _____________________________________________________________________
|
5
|
+
#
|
6
|
+
# @author Andriy Lesyuk
|
7
|
+
#
|
8
|
+
# @package KayakoClient
|
9
|
+
# @copyright Copyright (c) 2011-2013, Kayako
|
10
|
+
# @license FreeBSD
|
11
|
+
# @link http://forge.kayako.com/projects/kayako-ruby-api-library
|
12
|
+
#
|
13
|
+
#######################################################################
|
14
|
+
|
15
|
+
module KayakoClient
|
16
|
+
module KnowledgebaseArticleAPI
|
17
|
+
|
18
|
+
def self.included(base)
|
19
|
+
base.extend(ClassMethods)
|
20
|
+
end
|
21
|
+
|
22
|
+
def delete_request(options = {})
|
23
|
+
raise RuntimeError, "undefined article ID" unless kb_article_id
|
24
|
+
raise RuntimeError, "undefined ID" unless id
|
25
|
+
super(options.merge(:e => "#{self.class.path}/#{kb_article_id}/#{id}"))
|
26
|
+
end
|
27
|
+
|
28
|
+
module ClassMethods
|
29
|
+
|
30
|
+
def all(article, options = {})
|
31
|
+
unless article.to_i > 0
|
32
|
+
logger.error "invalid :kb_article_id - #{article}" if logger
|
33
|
+
raise ArgumentError, "invalid article ID"
|
34
|
+
end
|
35
|
+
super(options.merge(:e => "#{path}/ListAll/#{article.to_i}"))
|
36
|
+
end
|
37
|
+
|
38
|
+
def get(article, id, options = {})
|
39
|
+
unless article.to_i > 0
|
40
|
+
logger.error "invalid :kb_article_id - #{article}" if logger
|
41
|
+
raise ArgumentError, "invalid article ID"
|
42
|
+
end
|
43
|
+
if id == :all
|
44
|
+
all(article, options)
|
45
|
+
else
|
46
|
+
unless id.to_i > 0
|
47
|
+
logger.error "invalid :id - #{id}" if logger
|
48
|
+
raise ArgumentError, "invalid ID"
|
49
|
+
end
|
50
|
+
super(id, options.merge(:e => "#{path}/#{article.to_i}/#{id.to_i}"))
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def delete(article, id, options = {})
|
55
|
+
unless article.to_i > 0
|
56
|
+
logger.error "invalid :kb_article_id - #{article}" if logger
|
57
|
+
raise ArgumentError, "invalid article ID"
|
58
|
+
end
|
59
|
+
unless id.to_i > 0
|
60
|
+
logger.error "invalid :id - #{id}" if logger
|
61
|
+
raise ArgumentError, "invalid ID"
|
62
|
+
end
|
63
|
+
super(id, options.merge(:e => "#{path}/#{article.to_i}/#{id.to_i}"))
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
#######################################################################
|
2
|
+
#
|
3
|
+
# Kayako Ruby REST API library
|
4
|
+
# _____________________________________________________________________
|
5
|
+
#
|
6
|
+
# @author Andriy Lesyuk
|
7
|
+
#
|
8
|
+
# @package KayakoClient
|
9
|
+
# @copyright Copyright (c) 2011-2013, Kayako
|
10
|
+
# @license FreeBSD
|
11
|
+
# @link http://forge.kayako.com/projects/kayako-ruby-api-library
|
12
|
+
#
|
13
|
+
#######################################################################
|
14
|
+
|
15
|
+
module KayakoClient
|
16
|
+
module KnowledgebaseCategoryClient
|
17
|
+
|
18
|
+
def articles(options = {})
|
19
|
+
KayakoClient::KnowledgebaseArticle.all(id, options.merge(inherited_options)) if id
|
20
|
+
end
|
21
|
+
|
22
|
+
def get_article(article, options = {})
|
23
|
+
if id
|
24
|
+
value = KayakoClient::KnowledgebaseArticle.get(article, options.merge(inherited_options))
|
25
|
+
value && value.in_category?(id) ? value : nil
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
alias_method :find_article, :get_article
|
30
|
+
|
31
|
+
def post_article(options = {})
|
32
|
+
if id
|
33
|
+
if logger && options[:id] && options[:id].to_i != id
|
34
|
+
logger.warn "overwriting :id"
|
35
|
+
end
|
36
|
+
options[:id] = id
|
37
|
+
KayakoClient::KnowledgebaseArticle.post(options.merge(inherited_options))
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
alias_method :create_article, :post_article
|
42
|
+
|
43
|
+
def delete_article(article, options = {})
|
44
|
+
category_article = get_article(article, options.merge(inherited_options))
|
45
|
+
category_article.delete if category_article
|
46
|
+
end
|
47
|
+
|
48
|
+
alias_method :destroy_article, :delete_article
|
49
|
+
|
50
|
+
end
|
51
|
+
end
|
@@ -1,3 +1,17 @@
|
|
1
|
+
#######################################################################
|
2
|
+
#
|
3
|
+
# Kayako Ruby REST API library
|
4
|
+
# _____________________________________________________________________
|
5
|
+
#
|
6
|
+
# @author Andriy Lesyuk
|
7
|
+
#
|
8
|
+
# @package KayakoClient
|
9
|
+
# @copyright Copyright (c) 2011-2013, Kayako
|
10
|
+
# @license FreeBSD
|
11
|
+
# @link http://forge.kayako.com/projects/kayako-ruby-api-library
|
12
|
+
#
|
13
|
+
#######################################################################
|
14
|
+
|
1
15
|
module KayakoClient
|
2
16
|
module Logger
|
3
17
|
|
@@ -0,0 +1,51 @@
|
|
1
|
+
#######################################################################
|
2
|
+
#
|
3
|
+
# Kayako Ruby REST API library
|
4
|
+
# _____________________________________________________________________
|
5
|
+
#
|
6
|
+
# @author Andriy Lesyuk
|
7
|
+
#
|
8
|
+
# @package KayakoClient
|
9
|
+
# @copyright Copyright (c) 2011-2013, Kayako
|
10
|
+
# @license FreeBSD
|
11
|
+
# @link http://forge.kayako.com/projects/kayako-ruby-api-library
|
12
|
+
#
|
13
|
+
#######################################################################
|
14
|
+
|
15
|
+
module KayakoClient
|
16
|
+
module NewsCategoryClient
|
17
|
+
|
18
|
+
def news(options = {})
|
19
|
+
KayakoClient::NewsItem.all(id, options.merge(inherited_options)) if id
|
20
|
+
end
|
21
|
+
|
22
|
+
def get_news(news, options = {})
|
23
|
+
if id
|
24
|
+
value = KayakoClient::NewsItem.get(news, options.merge(inherited_options))
|
25
|
+
value && value.in_category?(id) ? value : nil
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
alias_method :find_news, :get_news
|
30
|
+
|
31
|
+
def post_news(options = {})
|
32
|
+
if id
|
33
|
+
if logger && options[:id] && options[:id].to_i != id
|
34
|
+
logger.warn "overwriting :id"
|
35
|
+
end
|
36
|
+
options[:id] = id
|
37
|
+
KayakoClient::NewsItem.post(options.merge(inherited_options))
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
alias_method :create_news, :post_news
|
42
|
+
|
43
|
+
def delete_news(news, options = {})
|
44
|
+
category_news = get_news(news, options.merge(inherited_options))
|
45
|
+
category_news.delete if category_news
|
46
|
+
end
|
47
|
+
|
48
|
+
alias_method :destroy_news, :delete_news
|
49
|
+
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
#######################################################################
|
2
|
+
#
|
3
|
+
# Kayako Ruby REST API library
|
4
|
+
# _____________________________________________________________________
|
5
|
+
#
|
6
|
+
# @author Andriy Lesyuk
|
7
|
+
#
|
8
|
+
# @package KayakoClient
|
9
|
+
# @copyright Copyright (c) 2011-2013, Kayako
|
10
|
+
# @license FreeBSD
|
11
|
+
# @link http://forge.kayako.com/projects/kayako-ruby-api-library
|
12
|
+
#
|
13
|
+
#######################################################################
|
14
|
+
|
15
|
+
module KayakoClient
|
16
|
+
module NewsClient
|
17
|
+
|
18
|
+
def comments(options = {})
|
19
|
+
KayakoClient::NewsComment.all(id, options.merge(inherited_options)) if id
|
20
|
+
end
|
21
|
+
|
22
|
+
def get_comment(comment, options = {})
|
23
|
+
if id
|
24
|
+
value = KayakoClient::NewsComment.get(comment, options.merge(inherited_options))
|
25
|
+
value && value.news_item_id == id ? value : nil
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
alias_method :find_comment, :get_comment
|
30
|
+
|
31
|
+
def post_comment(options = {})
|
32
|
+
if id
|
33
|
+
if logger && options[:news_item_id] && options[:news_item_id].to_i != id
|
34
|
+
logger.warn "overwriting :news_item_id"
|
35
|
+
end
|
36
|
+
options[:news_item_id] = id
|
37
|
+
KayakoClient::NewsComment.post(options.merge(inherited_options))
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
alias_method :create_comment, :post_comment
|
42
|
+
|
43
|
+
def delete_comment(comment, options = {})
|
44
|
+
news_comment = get_comment(comment, options.merge(inherited_options))
|
45
|
+
news_comment.delete if news_comment
|
46
|
+
end
|
47
|
+
|
48
|
+
alias_method :destroy_comment, :delete_comment
|
49
|
+
|
50
|
+
end
|
51
|
+
end
|
@@ -1,9 +1,24 @@
|
|
1
|
+
#######################################################################
|
2
|
+
#
|
3
|
+
# Kayako Ruby REST API library
|
4
|
+
# _____________________________________________________________________
|
5
|
+
#
|
6
|
+
# @author Andriy Lesyuk
|
7
|
+
#
|
8
|
+
# @package KayakoClient
|
9
|
+
# @copyright Copyright (c) 2011-2013, Kayako
|
10
|
+
# @license FreeBSD
|
11
|
+
# @link http://forge.kayako.com/projects/kayako-ruby-api-library
|
12
|
+
#
|
13
|
+
#######################################################################
|
14
|
+
|
1
15
|
require 'base64'
|
2
16
|
|
3
17
|
module KayakoClient
|
4
18
|
module Object
|
5
19
|
|
6
20
|
PROPERTY_TYPES = [ :integer,
|
21
|
+
:float,
|
7
22
|
:string,
|
8
23
|
:symbol,
|
9
24
|
:boolean,
|
@@ -52,7 +67,7 @@ module KayakoClient
|
|
52
67
|
end
|
53
68
|
|
54
69
|
def [](name)
|
55
|
-
if self.class.properties.include?(name.to_sym)
|
70
|
+
if name.respond_to?(:to_sym) && self.class.properties.include?(name.to_sym)
|
56
71
|
send("#{name}")
|
57
72
|
else
|
58
73
|
nil
|
@@ -197,7 +212,7 @@ module KayakoClient
|
|
197
212
|
array << klass.get(i.to_i, inherited_options)
|
198
213
|
array
|
199
214
|
end
|
200
|
-
elsif id.respond_to?(
|
215
|
+
elsif id.respond_to?(:to_i) && id.to_i > 0
|
201
216
|
@associated[property] = klass.get(id.to_i, inherited_options)
|
202
217
|
else
|
203
218
|
@associated[property] = nil
|
@@ -295,19 +310,19 @@ module KayakoClient
|
|
295
310
|
end
|
296
311
|
|
297
312
|
def properties
|
298
|
-
@properties
|
313
|
+
@properties ||= {}
|
299
314
|
end
|
300
315
|
|
301
316
|
def aliases
|
302
|
-
@aliases
|
317
|
+
@aliases ||= {}
|
303
318
|
end
|
304
319
|
|
305
320
|
def options
|
306
|
-
@options
|
321
|
+
@options ||= {}
|
307
322
|
end
|
308
323
|
|
309
324
|
def map
|
310
|
-
@map
|
325
|
+
@map ||= {}
|
311
326
|
end
|
312
327
|
|
313
328
|
private
|
@@ -416,12 +431,14 @@ module KayakoClient
|
|
416
431
|
case type
|
417
432
|
when :integer
|
418
433
|
value.to_i
|
434
|
+
when :float
|
435
|
+
value.to_f
|
419
436
|
when :string
|
420
437
|
value.to_s
|
421
438
|
when :symbol
|
422
439
|
value.to_sym
|
423
440
|
when :boolean
|
424
|
-
if value.respond_to?(
|
441
|
+
if value.respond_to?(:to_i)
|
425
442
|
value.to_i == 0 ? false : true
|
426
443
|
else
|
427
444
|
case value
|