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.
Files changed (84) hide show
  1. data/lib/kayako_client.rb +31 -0
  2. data/lib/kayako_client/base.rb +23 -0
  3. data/lib/kayako_client/custom_field.rb +14 -0
  4. data/lib/kayako_client/department.rb +18 -3
  5. data/lib/kayako_client/http/http.rb +14 -0
  6. data/lib/kayako_client/http/http_backend.rb +14 -0
  7. data/lib/kayako_client/http/http_client.rb +14 -0
  8. data/lib/kayako_client/http/http_response.rb +14 -0
  9. data/lib/kayako_client/http/net_http.rb +14 -0
  10. data/lib/kayako_client/knowledgebase_article.rb +131 -0
  11. data/lib/kayako_client/knowledgebase_attachment.rb +59 -0
  12. data/lib/kayako_client/knowledgebase_category.rb +71 -0
  13. data/lib/kayako_client/knowledgebase_comment.rb +32 -0
  14. data/lib/kayako_client/mixins/api.rb +14 -0
  15. data/lib/kayako_client/mixins/article_client.rb +76 -0
  16. data/lib/kayako_client/mixins/attachment.rb +16 -1
  17. data/lib/kayako_client/mixins/authentication.rb +14 -0
  18. data/lib/kayako_client/mixins/client.rb +300 -0
  19. data/lib/kayako_client/mixins/comment_object.rb +102 -0
  20. data/lib/kayako_client/mixins/convert_api.rb +39 -0
  21. data/lib/kayako_client/mixins/creator_api.rb +44 -0
  22. data/lib/kayako_client/mixins/knowledgebase_article_api.rb +69 -0
  23. data/lib/kayako_client/mixins/knowledgebase_category_client.rb +51 -0
  24. data/lib/kayako_client/mixins/logger.rb +14 -0
  25. data/lib/kayako_client/mixins/news_category_client.rb +51 -0
  26. data/lib/kayako_client/mixins/news_client.rb +51 -0
  27. data/lib/kayako_client/mixins/object.rb +24 -7
  28. data/lib/kayako_client/mixins/post_client.rb +14 -0
  29. data/lib/kayako_client/mixins/staff_visibility_api.rb +14 -0
  30. data/lib/kayako_client/mixins/ticket_api.rb +14 -0
  31. data/lib/kayako_client/mixins/ticket_client.rb +14 -0
  32. data/lib/kayako_client/mixins/troubleshooter_step_api.rb +69 -0
  33. data/lib/kayako_client/mixins/troubleshooter_step_client.rb +76 -0
  34. data/lib/kayako_client/mixins/user_visibility_api.rb +14 -0
  35. data/lib/kayako_client/news_category.rb +29 -0
  36. data/lib/kayako_client/news_comment.rb +32 -0
  37. data/lib/kayako_client/news_item.rb +81 -0
  38. data/lib/kayako_client/news_subscriber.rb +33 -0
  39. data/lib/kayako_client/staff.rb +14 -0
  40. data/lib/kayako_client/staff_group.rb +14 -0
  41. data/lib/kayako_client/ticket.rb +24 -1
  42. data/lib/kayako_client/ticket_attachment.rb +18 -0
  43. data/lib/kayako_client/ticket_count.rb +14 -0
  44. data/lib/kayako_client/ticket_custom_field.rb +14 -0
  45. data/lib/kayako_client/ticket_note.rb +14 -1
  46. data/lib/kayako_client/ticket_post.rb +15 -0
  47. data/lib/kayako_client/ticket_priority.rb +14 -0
  48. data/lib/kayako_client/ticket_status.rb +14 -0
  49. data/lib/kayako_client/ticket_time_track.rb +14 -0
  50. data/lib/kayako_client/ticket_type.rb +14 -0
  51. data/lib/kayako_client/troubleshooter_attachment.rb +68 -0
  52. data/lib/kayako_client/troubleshooter_category.rb +51 -0
  53. data/lib/kayako_client/troubleshooter_comment.rb +32 -0
  54. data/lib/kayako_client/troubleshooter_step.rb +100 -0
  55. data/lib/kayako_client/user.rb +42 -0
  56. data/lib/kayako_client/user_group.rb +14 -0
  57. data/lib/kayako_client/user_organization.rb +14 -0
  58. data/lib/kayako_client/xml/lib_xml.rb +14 -0
  59. data/lib/kayako_client/xml/rexml_document.rb +14 -0
  60. data/lib/kayako_client/xml/xml.rb +14 -0
  61. data/lib/kayako_client/xml/xml_backend.rb +14 -0
  62. data/test/test_attachment.rb +77 -0
  63. data/test/test_client.rb +191 -0
  64. data/test/test_configuration.rb +110 -0
  65. data/test/test_count.rb +162 -0
  66. data/test/test_custom_field.rb +86 -0
  67. data/test/test_department.rb +136 -0
  68. data/test/test_http.rb +34 -0
  69. data/test/test_knowledgebase.rb +155 -0
  70. data/test/test_news.rb +117 -0
  71. data/test/test_note.rb +64 -0
  72. data/test/test_post.rb +64 -0
  73. data/test/test_priority.rb +46 -0
  74. data/test/test_properties.rb +114 -0
  75. data/test/test_staff.rb +77 -0
  76. data/test/test_status.rb +52 -0
  77. data/test/test_ticket.rb +152 -0
  78. data/test/test_ticket_custom_field.rb +193 -0
  79. data/test/test_time_track.rb +68 -0
  80. data/test/test_troubleshooter.rb +106 -0
  81. data/test/test_type.rb +65 -0
  82. data/test/test_user.rb +95 -0
  83. data/test/test_xml.rb +183 -0
  84. metadata +89 -42
@@ -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 PostClient
3
17
 
@@ -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 StaffVisibilityAPI
3
17
 
@@ -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 TicketAPI
3
17
 
@@ -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 TicketClient
3
17
 
@@ -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 TroubleshooterStepAPI
17
+
18
+ def self.included(base)
19
+ base.extend(ClassMethods)
20
+ end
21
+
22
+ def delete_request(options = {})
23
+ raise RuntimeError, "undefined troubleshooter step ID" unless troubleshooter_step_id
24
+ raise RuntimeError, "undefined ID" unless id
25
+ super(options.merge(:e => "#{self.class.path}/#{troubleshooter_step_id}/#{id}"))
26
+ end
27
+
28
+ module ClassMethods
29
+
30
+ def all(step, options = {})
31
+ unless step.to_i > 0
32
+ logger.error "invalid :troubleshooter_step_id - #{step}" if logger
33
+ raise ArgumentError, "invalid troubleshooter step ID"
34
+ end
35
+ super(options.merge(:e => "#{path}/ListAll/#{step.to_i}"))
36
+ end
37
+
38
+ def get(step, id, options = {})
39
+ unless step.to_i > 0
40
+ logger.error "invalid :troubleshooter_step_id - #{step}" if logger
41
+ raise ArgumentError, "invalid troubleshooter step ID"
42
+ end
43
+ if id == :all
44
+ all(step, 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}/#{step.to_i}/#{id.to_i}"))
51
+ end
52
+ end
53
+
54
+ def delete(step, id, options = {})
55
+ unless step.to_i > 0
56
+ logger.error "invalid :troubleshooter_step_id - #{step}" if logger
57
+ raise ArgumentError, "invalid troubleshooter step 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}/#{step.to_i}/#{id.to_i}"))
64
+ end
65
+
66
+ end
67
+
68
+ end
69
+ end
@@ -0,0 +1,76 @@
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 TroubleshooterStepClient
17
+
18
+ def get_attachment(attachment, options = {})
19
+ KayakoClient::TroubleshooterAttachment.get(id, attachment, options.merge(inherited_options)) if id
20
+ end
21
+
22
+ alias_method :find_attachment, :get_attachment
23
+
24
+ def post_attachment(options = {})
25
+ if id
26
+ if logger && options[:troubleshooter_step_id] && options[:troubleshooter_step_id].to_i != id
27
+ logger.warn "overwriting :troubleshooter_step_id"
28
+ end
29
+ options[:troubleshooter_step_id] = id
30
+ KayakoClient::TroubleshooterAttachment.post(options.merge(inherited_options))
31
+ end
32
+ end
33
+
34
+ alias_method :create_attachment, :post_attachment
35
+
36
+ def delete_attachment(attachment, options = {})
37
+ KayakoClient::TroubleshooterAttachment.delete(id, attachment, options.merge(inherited_options)) if id
38
+ end
39
+
40
+ alias_method :destroy_attachment, :delete_attachment
41
+
42
+
43
+ def comments(options = {})
44
+ KayakoClient::TroubleshooterComment.all(id, options.merge(inherited_options)) if id
45
+ end
46
+
47
+ def get_comment(comment, options = {})
48
+ if id
49
+ value = KayakoClient::TroubleshooterComment.get(comment, options.merge(inherited_options))
50
+ value && value.troubleshooter_step_id == id ? value : nil
51
+ end
52
+ end
53
+
54
+ alias_method :find_comment, :get_comment
55
+
56
+ def post_comment(options = {})
57
+ if id
58
+ if logger && options[:troubleshooter_step_id] && options[:troubleshooter_step_id].to_i != id
59
+ logger.warn "overwriting :troubleshooter_step_id"
60
+ end
61
+ options[:troubleshooter_step_id] = id
62
+ KayakoClient::TroubleshooterComment.post(options.merge(inherited_options))
63
+ end
64
+ end
65
+
66
+ alias_method :create_comment, :post_comment
67
+
68
+ def delete_comment(comment, options = {})
69
+ step_comment = get_comment(comment, options.merge(inherited_options))
70
+ step_comment.delete if step_comment
71
+ end
72
+
73
+ alias_method :destroy_comment, :delete_comment
74
+
75
+ end
76
+ 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 UserVisibilityAPI
3
17
 
@@ -0,0 +1,29 @@
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
+ class NewsCategory < KayakoClient::News
17
+ include KayakoClient::NewsCategoryClient
18
+
19
+ path '/News/Category'
20
+
21
+ VISIBILITY_TYPES = [ :public, :private ].freeze
22
+
23
+ property :id, :integer, :readonly => true
24
+ property :title, :string, :required => [ :put, :post ]
25
+ property :news_item_count, :integer, :readonly => true
26
+ property :visibility_type, :symbol, :required => [ :put, :post ], :in => VISIBILITY_TYPES
27
+
28
+ end
29
+ end
@@ -0,0 +1,32 @@
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
+ require 'kayako_client/mixins/comment_object'
17
+
18
+ require 'kayako_client/news_item'
19
+
20
+ module KayakoClient
21
+ class NewsComment < KayakoClient::News
22
+ include KayakoClient::CreatorAPI
23
+ include KayakoClient::CommentObject
24
+
25
+ path '/News/Comment'
26
+
27
+ property :news_item_id, :integer, :required => :post
28
+
29
+ associate :news_item, :news_item_id, NewsItem
30
+
31
+ end
32
+ end
@@ -0,0 +1,81 @@
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/convert_api'
16
+
17
+ require 'kayako_client/news_category'
18
+
19
+ require 'kayako_client/staff'
20
+
21
+ module KayakoClient
22
+ class NewsItem < KayakoClient::News
23
+ include KayakoClient::ConvertAPI
24
+ include KayakoClient::NewsClient
25
+ include KayakoClient::UserVisibilityAPI
26
+ include KayakoClient::StaffVisibilityAPI
27
+
28
+ TYPE_GLOBAL = 1
29
+ TYPE_PUBLIC = 2
30
+ TYPE_PRIVATE = 3
31
+
32
+ STATUS_DRAFT = 1
33
+ STATUS_PUBLISHED = 2
34
+
35
+ property :id, :integer, :readonly => true
36
+ property :staff_id, :integer, :required => :post
37
+ property :news_type, :integer, :range => 1..3, :new => true
38
+ property :news_status, :integer, :range => 1..2
39
+ property :author, :string, :readonly => true
40
+ property :email, :string
41
+ property :subject, :string, :required => [ :put, :post ]
42
+ property :date_line, :date, :readonly => true
43
+ property :expiry, :date
44
+ property :is_synced, :boolean, :readonly => true
45
+ property :total_comments, :integer, :readonly => true
46
+ property :user_visibility_custom, :boolean
47
+ property :user_group_ids, [ :integer ], :get => :usergroupidlist, :set => :usergroupidlist, :condition => { :user_visibility_custom => true }
48
+ property :staff_visibility_custom, :boolean
49
+ property :staff_group_ids, [ :integer ], :get => :staffgroupidlist, :set => :staffgroupidlist, :condition => { :staff_visibility_custom => true }
50
+ property :allow_comments, :boolean
51
+ property :contents, :string, :required => [ :put, :post ]
52
+ property :category_ids, [ :integer ], :get => :categories, :set => :newscategoryidlist
53
+ property :from_name, :string
54
+ property :custom_email_subject, :string
55
+ property :send_email, :boolean
56
+ property :edited_staff_id, :integer, :required => :put
57
+
58
+ associate :staff, :staff_id, Staff
59
+ associate :user_groups, :user_group_ids, UserGroup
60
+ associate :staff_groups, :staff_group_ids, StaffGroup
61
+ associate :categories, :category_ids, NewsCategory
62
+ associate :edited_staff, :edited_staff_id, Staff
63
+
64
+ def in_category?(category)
65
+ category.respond_to?(:to_i) && !category_ids.nil? && category_ids.include?(category.to_i)
66
+ end
67
+
68
+ def self.all(*args)
69
+ options = args.last.is_a?(Hash) ? args.pop : {}
70
+ if args.size > 0
71
+ if args.size == 1
72
+ options.merge!(:e => "#{path}/ListAll/#{args.first.to_i}")
73
+ else
74
+ raise ArgumentError, "too many arguments"
75
+ end
76
+ end
77
+ super(options)
78
+ end
79
+
80
+ end
81
+ end
@@ -0,0 +1,33 @@
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/user'
16
+ require 'kayako_client/user_group'
17
+
18
+ module KayakoClient
19
+ class NewsSubscriber < KayakoClient::News
20
+ path '/News/Subscriber'
21
+
22
+ property :id, :integer, :readonly => true
23
+ property :template_group_id, :integer, :readonly => true, :get => :tgroupid
24
+ property :user_id, :integer, :readonly => true
25
+ property :email, :string, :required => [ :put, :post ]
26
+ property :is_validated, :boolean, :new => true
27
+ property :user_group_id, :integer, :readonly => true
28
+
29
+ associate :user, :user_id, User
30
+ associate :user_group, :user_group_id, UserGroup
31
+
32
+ end
33
+ 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
  require 'kayako_client/staff_group'
2
16
 
3
17
  module KayakoClient
@@ -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
  class StaffGroup < KayakoClient::Base
3
17