KayakoClient 1.0.2 → 1.1.0
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/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
|