KayakoClient 1.0.2 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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