zendesk2 1.9.0 → 1.10.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 (222) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +30 -0
  3. data/.travis.yml +3 -1
  4. data/Gemfile +4 -5
  5. data/Guardfile +4 -3
  6. data/Rakefile +4 -3
  7. data/lib/zendesk2.rb +9 -6
  8. data/lib/zendesk2/attributes.rb +11 -8
  9. data/lib/zendesk2/audit_event.rb +5 -3
  10. data/lib/zendesk2/categories.rb +4 -3
  11. data/lib/zendesk2/category.rb +10 -5
  12. data/lib/zendesk2/client.rb +3 -3
  13. data/lib/zendesk2/collection.rb +35 -21
  14. data/lib/zendesk2/create_category.rb +10 -9
  15. data/lib/zendesk2/create_forum.rb +11 -10
  16. data/lib/zendesk2/create_group.rb +13 -12
  17. data/lib/zendesk2/create_membership.rb +21 -20
  18. data/lib/zendesk2/create_organization.rb +24 -18
  19. data/lib/zendesk2/create_ticket.rb +60 -56
  20. data/lib/zendesk2/create_ticket_field.rb +24 -22
  21. data/lib/zendesk2/create_topic.rb +11 -10
  22. data/lib/zendesk2/create_topic_comment.rb +12 -11
  23. data/lib/zendesk2/create_user.rb +54 -41
  24. data/lib/zendesk2/create_user_field.rb +22 -21
  25. data/lib/zendesk2/create_user_identity.rb +18 -15
  26. data/lib/zendesk2/create_view.rb +62 -62
  27. data/lib/zendesk2/destroy_category.rb +2 -1
  28. data/lib/zendesk2/destroy_forum.rb +2 -1
  29. data/lib/zendesk2/destroy_group.rb +3 -2
  30. data/lib/zendesk2/destroy_membership.rb +7 -5
  31. data/lib/zendesk2/destroy_organization.rb +3 -2
  32. data/lib/zendesk2/destroy_ticket.rb +3 -2
  33. data/lib/zendesk2/destroy_ticket_field.rb +3 -2
  34. data/lib/zendesk2/destroy_topic.rb +3 -2
  35. data/lib/zendesk2/destroy_topic_comment.rb +4 -3
  36. data/lib/zendesk2/destroy_user.rb +11 -10
  37. data/lib/zendesk2/destroy_user_field.rb +3 -2
  38. data/lib/zendesk2/destroy_user_identity.rb +4 -3
  39. data/lib/zendesk2/destroy_view.rb +3 -2
  40. data/lib/zendesk2/error.rb +1 -1
  41. data/lib/zendesk2/forum.rb +36 -18
  42. data/lib/zendesk2/forums.rb +4 -3
  43. data/lib/zendesk2/get_assignable_groups.rb +3 -2
  44. data/lib/zendesk2/get_categories.rb +2 -1
  45. data/lib/zendesk2/get_category.rb +3 -2
  46. data/lib/zendesk2/get_ccd_tickets.rb +4 -3
  47. data/lib/zendesk2/get_current_user.rb +3 -2
  48. data/lib/zendesk2/get_forum.rb +3 -2
  49. data/lib/zendesk2/get_forums.rb +2 -1
  50. data/lib/zendesk2/get_group.rb +3 -2
  51. data/lib/zendesk2/get_groups.rb +2 -1
  52. data/lib/zendesk2/get_membership.rb +3 -2
  53. data/lib/zendesk2/get_memberships.rb +3 -2
  54. data/lib/zendesk2/get_organization.rb +3 -2
  55. data/lib/zendesk2/get_organization_by_external_id.rb +8 -5
  56. data/lib/zendesk2/get_organization_memberships.rb +5 -2
  57. data/lib/zendesk2/get_organization_tickets.rb +7 -5
  58. data/lib/zendesk2/get_organization_users.rb +6 -5
  59. data/lib/zendesk2/get_organizations.rb +2 -1
  60. data/lib/zendesk2/get_requested_tickets.rb +5 -4
  61. data/lib/zendesk2/get_ticket.rb +3 -2
  62. data/lib/zendesk2/get_ticket_audit.rb +5 -4
  63. data/lib/zendesk2/get_ticket_audits.rb +4 -3
  64. data/lib/zendesk2/get_ticket_comments.rb +6 -5
  65. data/lib/zendesk2/get_ticket_field.rb +3 -2
  66. data/lib/zendesk2/get_ticket_fields.rb +2 -1
  67. data/lib/zendesk2/get_ticket_metric.rb +4 -3
  68. data/lib/zendesk2/get_ticket_metrics.rb +3 -2
  69. data/lib/zendesk2/get_tickets.rb +2 -1
  70. data/lib/zendesk2/get_topic.rb +3 -2
  71. data/lib/zendesk2/get_topic_comment.rb +4 -3
  72. data/lib/zendesk2/get_topic_comments.rb +5 -4
  73. data/lib/zendesk2/get_topics.rb +2 -1
  74. data/lib/zendesk2/get_user.rb +7 -7
  75. data/lib/zendesk2/get_user_field.rb +3 -2
  76. data/lib/zendesk2/get_user_fields.rb +3 -2
  77. data/lib/zendesk2/get_user_identities.rb +4 -3
  78. data/lib/zendesk2/get_user_identity.rb +4 -3
  79. data/lib/zendesk2/get_user_memberships.rb +4 -3
  80. data/lib/zendesk2/get_user_organizations.rb +5 -4
  81. data/lib/zendesk2/get_users.rb +3 -2
  82. data/lib/zendesk2/get_view.rb +3 -2
  83. data/lib/zendesk2/get_view_tickets.rb +19 -16
  84. data/lib/zendesk2/get_views.rb +2 -1
  85. data/lib/zendesk2/group.rb +6 -5
  86. data/lib/zendesk2/groups.rb +7 -6
  87. data/lib/zendesk2/help_center.rb +15 -0
  88. data/lib/zendesk2/help_center/access_policy.rb +3 -2
  89. data/lib/zendesk2/help_center/article.rb +10 -7
  90. data/lib/zendesk2/help_center/articles.rb +7 -7
  91. data/lib/zendesk2/help_center/categories.rb +3 -2
  92. data/lib/zendesk2/help_center/category.rb +8 -7
  93. data/lib/zendesk2/help_center/create_help_center_article.rb +31 -29
  94. data/lib/zendesk2/help_center/create_help_center_category.rb +17 -16
  95. data/lib/zendesk2/help_center/create_help_center_post.rb +37 -0
  96. data/lib/zendesk2/help_center/create_help_center_section.rb +32 -31
  97. data/lib/zendesk2/help_center/create_help_center_topic.rb +36 -0
  98. data/lib/zendesk2/help_center/create_help_center_translation.rb +15 -14
  99. data/lib/zendesk2/help_center/destroy_help_center_article.rb +3 -2
  100. data/lib/zendesk2/help_center/destroy_help_center_category.rb +3 -2
  101. data/lib/zendesk2/help_center/destroy_help_center_post.rb +15 -0
  102. data/lib/zendesk2/help_center/destroy_help_center_section.rb +3 -2
  103. data/lib/zendesk2/help_center/destroy_help_center_topic.rb +15 -0
  104. data/lib/zendesk2/help_center/destroy_help_center_translation.rb +2 -1
  105. data/lib/zendesk2/help_center/get_help_center_access_policy.rb +6 -5
  106. data/lib/zendesk2/help_center/get_help_center_article.rb +7 -9
  107. data/lib/zendesk2/help_center/get_help_center_articles.rb +3 -2
  108. data/lib/zendesk2/help_center/get_help_center_categories.rb +6 -2
  109. data/lib/zendesk2/help_center/get_help_center_categories_articles.rb +8 -7
  110. data/lib/zendesk2/help_center/get_help_center_categories_sections.rb +6 -5
  111. data/lib/zendesk2/help_center/get_help_center_category.rb +7 -9
  112. data/lib/zendesk2/help_center/get_help_center_post.rb +19 -0
  113. data/lib/zendesk2/help_center/get_help_center_posts.rb +28 -0
  114. data/lib/zendesk2/help_center/get_help_center_section.rb +8 -10
  115. data/lib/zendesk2/help_center/get_help_center_sections.rb +3 -2
  116. data/lib/zendesk2/help_center/get_help_center_sections_articles.rb +9 -8
  117. data/lib/zendesk2/help_center/get_help_center_topic.rb +14 -0
  118. data/lib/zendesk2/help_center/get_help_center_topics.rb +10 -0
  119. data/lib/zendesk2/help_center/get_help_center_translation.rb +5 -4
  120. data/lib/zendesk2/help_center/get_help_center_translations.rb +7 -6
  121. data/lib/zendesk2/help_center/post.rb +72 -0
  122. data/lib/zendesk2/help_center/posts.rb +18 -0
  123. data/lib/zendesk2/help_center/search_help_center_articles.rb +8 -7
  124. data/lib/zendesk2/help_center/section.rb +11 -11
  125. data/lib/zendesk2/help_center/sections.rb +7 -6
  126. data/lib/zendesk2/help_center/topic.rb +52 -0
  127. data/lib/zendesk2/help_center/topics.rb +13 -0
  128. data/lib/zendesk2/help_center/translation.rb +8 -5
  129. data/lib/zendesk2/help_center/translation_source.rb +16 -13
  130. data/lib/zendesk2/help_center/translations.rb +3 -2
  131. data/lib/zendesk2/help_center/update_help_center_access_policy.rb +8 -7
  132. data/lib/zendesk2/help_center/update_help_center_article.rb +9 -11
  133. data/lib/zendesk2/help_center/update_help_center_category.rb +9 -11
  134. data/lib/zendesk2/help_center/update_help_center_post.rb +20 -0
  135. data/lib/zendesk2/help_center/update_help_center_section.rb +9 -11
  136. data/lib/zendesk2/help_center/update_help_center_topic.rb +20 -0
  137. data/lib/zendesk2/help_center/update_help_center_translation.rb +4 -3
  138. data/lib/zendesk2/logger.rb +3 -2
  139. data/lib/zendesk2/mark_membership_default.rb +7 -6
  140. data/lib/zendesk2/mark_user_identity_primary.rb +7 -6
  141. data/lib/zendesk2/membership.rb +10 -8
  142. data/lib/zendesk2/memberships.rb +18 -12
  143. data/lib/zendesk2/mock.rb +39 -34
  144. data/lib/zendesk2/model.rb +14 -3
  145. data/lib/zendesk2/organization.rb +7 -7
  146. data/lib/zendesk2/organizations.rb +14 -12
  147. data/lib/zendesk2/paged_collection.rb +40 -36
  148. data/lib/zendesk2/rate_limit.rb +4 -3
  149. data/lib/zendesk2/real.rb +25 -22
  150. data/lib/zendesk2/request.rb +78 -82
  151. data/lib/zendesk2/search.rb +8 -7
  152. data/lib/zendesk2/search_organization.rb +14 -14
  153. data/lib/zendesk2/search_user.rb +41 -37
  154. data/lib/zendesk2/searchable.rb +36 -26
  155. data/lib/zendesk2/ticket.rb +20 -18
  156. data/lib/zendesk2/ticket_audit.rb +5 -4
  157. data/lib/zendesk2/ticket_audits.rb +10 -11
  158. data/lib/zendesk2/ticket_change.rb +10 -11
  159. data/lib/zendesk2/ticket_comment.rb +2 -1
  160. data/lib/zendesk2/ticket_comment_privacy_change.rb +12 -14
  161. data/lib/zendesk2/ticket_comments.rb +7 -6
  162. data/lib/zendesk2/ticket_create.rb +8 -9
  163. data/lib/zendesk2/ticket_field.rb +5 -4
  164. data/lib/zendesk2/ticket_fields.rb +4 -3
  165. data/lib/zendesk2/ticket_metric.rb +2 -2
  166. data/lib/zendesk2/ticket_metrics.rb +3 -2
  167. data/lib/zendesk2/ticket_notification.rb +12 -13
  168. data/lib/zendesk2/ticket_voice_comment.rb +28 -29
  169. data/lib/zendesk2/tickets.rb +8 -7
  170. data/lib/zendesk2/topic.rb +49 -22
  171. data/lib/zendesk2/topic_comment.rb +12 -9
  172. data/lib/zendesk2/topic_comments.rb +4 -3
  173. data/lib/zendesk2/topics.rb +4 -3
  174. data/lib/zendesk2/update_category.rb +8 -6
  175. data/lib/zendesk2/update_forum.rb +5 -4
  176. data/lib/zendesk2/update_group.rb +5 -4
  177. data/lib/zendesk2/update_organization.rb +18 -9
  178. data/lib/zendesk2/update_request.rb +6 -5
  179. data/lib/zendesk2/update_ticket.rb +39 -38
  180. data/lib/zendesk2/update_ticket_field.rb +5 -4
  181. data/lib/zendesk2/update_topic.rb +5 -4
  182. data/lib/zendesk2/update_user.rb +39 -31
  183. data/lib/zendesk2/update_user_field.rb +4 -3
  184. data/lib/zendesk2/update_user_identity.rb +7 -6
  185. data/lib/zendesk2/update_view.rb +38 -34
  186. data/lib/zendesk2/user.rb +41 -37
  187. data/lib/zendesk2/user_field.rb +9 -6
  188. data/lib/zendesk2/user_fields.rb +4 -3
  189. data/lib/zendesk2/user_identities.rb +4 -3
  190. data/lib/zendesk2/user_identity.rb +12 -9
  191. data/lib/zendesk2/users.rb +5 -4
  192. data/lib/zendesk2/version.rb +2 -1
  193. data/lib/zendesk2/view.rb +24 -13
  194. data/lib/zendesk2/views.rb +3 -2
  195. data/spec/categories_spec.rb +63 -60
  196. data/spec/client_spec.rb +6 -5
  197. data/spec/forums_spec.rb +64 -61
  198. data/spec/groups_spec.rb +7 -8
  199. data/spec/help_center/articles_spec.rb +22 -26
  200. data/spec/help_center/categories_spec.rb +26 -27
  201. data/spec/help_center/posts_spec.rb +39 -0
  202. data/spec/help_center/sections_spec.rb +32 -33
  203. data/spec/help_center/topics_spec.rb +13 -0
  204. data/spec/lib/paged_collection_spec.rb +11 -11
  205. data/spec/lib/rate_limit_spec.rb +9 -8
  206. data/spec/memberships_spec.rb +38 -27
  207. data/spec/organizations_spec.rb +92 -87
  208. data/spec/shared/zendesk_resource.rb +40 -25
  209. data/spec/spec_helper.rb +8 -13
  210. data/spec/support/client_helper.rb +5 -4
  211. data/spec/support/data_helper.rb +1 -0
  212. data/spec/ticket_fields_spec.rb +6 -7
  213. data/spec/tickets_spec.rb +69 -58
  214. data/spec/topic_comments_spec.rb +7 -8
  215. data/spec/topics_spec.rb +5 -6
  216. data/spec/user_fields_spec.rb +7 -7
  217. data/spec/user_identities_spec.rb +29 -25
  218. data/spec/users_spec.rb +88 -78
  219. data/spec/views_spec.rb +45 -34
  220. data/spec/zendesk2_spec.rb +3 -2
  221. data/zendesk2.gemspec +15 -14
  222. metadata +21 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 57938a7a4d8d6885607eb9ce942295373b41559b
4
- data.tar.gz: b56d6e5fc5b3505f8ebe107bca1198cdfa568dc8
3
+ metadata.gz: a4b6c9e3a2263e5d8e84d8c0d408c2a40d898106
4
+ data.tar.gz: db66a761d97b525ef31cb6d63ae5b6d28b5751fe
5
5
  SHA512:
6
- metadata.gz: 9147be1837cf536af9c09ffd595dbf2542cfc759d160162d70f7e141d680502dfcc057f67a13997b18d501aae4f73d5dc867b17265bcb566e39ea7e08b8759e7
7
- data.tar.gz: 345b472a1182294e3a5a23a1bfac5b775bcb024f020d3117bc78737d781b5797c206df09273eab2084493aa127d6415aa748a9d2855399238ddf4b1042893bd4
6
+ metadata.gz: f14e79bbd8b508ce7f9d22e31e4249f85ffeb4fd153b4ae244ac79293425b76ab63253c7ea8723cb1b57be64376f9dd8637ee034a25a24917d61b99e2deeb704
7
+ data.tar.gz: a8b6cc3a9da6ecd75fe1174a59b790076b9f2c51004318199e9b759c634008aa6bac5a57b276125315c53c610380b5290aaf8f4e012061c9ae3543e51262c9b0
data/.rubocop.yml ADDED
@@ -0,0 +1,30 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.3
3
+ DisplayCopNames: true
4
+ Metrics/LineLength:
5
+ Max: 120
6
+ Style/BlockDelimiters:
7
+ EnforcedStyle: line_count_based
8
+ Style/BracesAroundHashParameters:
9
+ EnforcedStyle: context_dependent
10
+ Style/TrailingCommaInLiteral:
11
+ EnforcedStyleForMultiline: consistent_comma
12
+ Style/ClassAndModuleChildren:
13
+ EnforcedStyle: compact
14
+ Metrics/AbcSize:
15
+ Max: 75
16
+ Metrics/MethodLength:
17
+ Max: 50
18
+ Metrics/ClassLength:
19
+ Max: 300
20
+ Metrics/ModuleLength:
21
+ Max: 300
22
+ Metrics/CyclomaticComplexity:
23
+ Max: 10
24
+ Metrics/PerceivedComplexity:
25
+ Max: 10
26
+ Style/TrailingCommaInArguments:
27
+ Enabled: false
28
+ #EnforcedStyleForMultiline: consistent_comma # this is very broke
29
+ Style/Documentation:
30
+ Enabled: false
data/.travis.yml CHANGED
@@ -6,6 +6,8 @@ rvm:
6
6
  - 2.3.0
7
7
  - 2.2.4
8
8
  - 2.1.8
9
- script: "bundle exec rake --trace"
9
+ script:
10
+ - bundle exec rubocop -Da
11
+ - bundle exec rake spec
10
12
  notifications:
11
13
  email: false
data/Gemfile CHANGED
@@ -1,15 +1,14 @@
1
+ # frozen_string_literal: true
1
2
  source 'https://rubygems.org'
2
3
 
3
4
  # Specify your gem's dependencies in zendesk2.gemspec
4
5
  gemspec
5
6
 
6
7
  gem 'rake'
7
- # To avoid warnings from JWT
8
+ # To avoid warnings from JWT
8
9
  gem 'json', '~> 1.8'
9
-
10
- group :development, :test do
11
- gem 'pry-nav'
12
- end
10
+ gem 'rubocop', '~> 0.41', require: false
11
+ gem 'pry-nav'
13
12
 
14
13
  group :test do
15
14
  gem 'awesome_print'
data/Guardfile CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  guard 'bundler' do
2
3
  watch('Gemfile')
3
4
  watch(/^.+\.gemspec/)
@@ -5,7 +6,7 @@ end
5
6
 
6
7
  guard 'rspec', cmd: 'bundle exec rspec', all_on_start: true, all_after_pass: true, failed_mode: :focus do
7
8
  watch(%r{^spec/.+_spec\.rb$})
8
- watch(%r{^lib/(.+)\.rb$}) { "spec" }
9
- watch('spec/spec_helper.rb') { "spec" }
10
- watch(%r{^spec/(support|matchers|shared)/(.+)\.rb$}) { "spec" }
9
+ watch(%r{^lib/(.+)\.rb$}) { 'spec' }
10
+ watch('spec/spec_helper.rb') { 'spec' }
11
+ watch(%r{^spec/(support|matchers|shared)/(.+)\.rb$}) { 'spec' }
11
12
  end
data/Rakefile CHANGED
@@ -1,9 +1,10 @@
1
1
  #!/usr/bin/env rake
2
- require "bundler/gem_tasks"
2
+ # frozen_string_literal: true
3
+ require 'bundler/gem_tasks'
3
4
  require 'rspec/core/rake_task'
4
5
 
5
6
  RSpec::Core::RakeTask.new(:spec) do |spec|
6
- spec.rspec_opts = "-cfp"
7
+ spec.rspec_opts = '-cfp'
7
8
  end
8
9
 
9
- task :default => :spec
10
+ task default: :spec
data/lib/zendesk2.rb CHANGED
@@ -1,4 +1,5 @@
1
- require "zendesk2/version"
1
+ # frozen_string_literal: true
2
+ require 'zendesk2/version'
2
3
 
3
4
  # dependencies
4
5
  require 'cistern'
@@ -14,14 +15,17 @@ require 'time'
14
15
  require 'yaml'
15
16
  require 'securerandom'
16
17
 
18
+ # welcome
17
19
  module Zendesk2
18
20
  include Cistern::Client.with(interface: :module)
19
21
 
20
- USER_AGENT = "Ruby/#{RUBY_VERSION} (#{RUBY_PLATFORM}; #{RUBY_ENGINE}) Zendesk2/#{Zendesk2::VERSION} Faraday/#{Faraday::VERSION}".freeze
22
+ USER_AGENT = <<-UA
23
+ Ruby/#{RUBY_VERSION} (#{RUBY_PLATFORM}; #{RUBY_ENGINE}) Zendesk2/#{Zendesk2::VERSION} Faraday/#{Faraday::VERSION}
24
+ UA
21
25
 
22
26
  def self.defaults
23
27
  @defaults ||= begin
24
- YAML.load_file(File.expand_path("~/.zendesk2"))
28
+ YAML.load_file(File.expand_path('~/.zendesk2'))
25
29
  rescue ArgumentError, Errno::ENOENT
26
30
  # handle missing home directories or missing file
27
31
  {}
@@ -29,14 +33,13 @@ module Zendesk2
29
33
  end
30
34
 
31
35
  def self.stringify_keys(hash)
32
- hash.inject({}) { |r,(k,v)| r.merge(k.to_s => v) }
36
+ hash.inject({}) { |r, (k, v)| r.merge(k.to_s => v) }
33
37
  end
34
38
 
35
39
  def self.blank?(string)
36
- string.nil? || string == ""
40
+ string.nil? || string == ''
37
41
  end
38
42
 
39
-
40
43
  recognizes :url, :logger, :adapter, :username, :password, :token, :jwt_token
41
44
  end
42
45
 
@@ -1,27 +1,30 @@
1
+ # frozen_string_literal: true
1
2
  module Zendesk2::Attributes
2
- def assoc_reader(name, options={})
3
+ def assoc_reader(name, options = {})
3
4
  assoc_key = options[:key] || "#{name}_id"
4
5
  collection = options[:collection] || "#{name}s"
5
6
  define_method(name) do
6
- if assoc_id = self.send(assoc_key)
7
- self.cistern.send(collection).get(assoc_id)
8
- else self.instance_variable_get("@#{name}")
7
+ assoc_id = send(assoc_key)
8
+ if assoc_id
9
+ cistern.send(collection).get(assoc_id)
10
+ else
11
+ instance_variable_get("@#{name}")
9
12
  end
10
13
  end
11
14
  end
12
15
 
13
- def assoc_writer(name, options={})
16
+ def assoc_writer(name, options = {})
14
17
  assoc_key = options[:key] || "#{name}_id"
15
18
  define_method("#{name}=") do |assoc|
16
19
  if assoc.is_a?(Cistern::Model)
17
- self.send("#{assoc_key}=", assoc.identity)
20
+ send("#{assoc_key}=", assoc.identity)
18
21
  else
19
- self.instance_variable_set("@#{name}", assoc)
22
+ instance_variable_set("@#{name}", assoc)
20
23
  end
21
24
  end
22
25
  end
23
26
 
24
- def assoc_accessor(name, options={})
27
+ def assoc_accessor(name, options = {})
25
28
  assoc_reader(name, options)
26
29
  assoc_writer(name, options)
27
30
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  # @abstract subclass and implement audit event specific attributes
2
3
  class Zendesk2::AuditEvent
3
4
  include Zendesk2::Model
@@ -14,11 +15,12 @@ class Zendesk2::AuditEvent
14
15
  end
15
16
 
16
17
  def self.for(attributes)
17
- event_class = "Zendesk2::Ticket#{attributes["type"]}"
18
- if klass = all.find{|k| k.name == event_class}
18
+ event_class = "Zendesk2::Ticket#{attributes['type']}"
19
+ klass = all.find { |k| k.name == event_class }
20
+ if klass
19
21
  klass.new(attributes)
20
22
  else # handle unrecognized audit events
21
- attributes.reject{|k,v| k == :cistern}
23
+ attributes.reject { |k, _v| k == :cistern }
22
24
  end
23
25
  end
24
26
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  class Zendesk2::Categories
2
3
  include Zendesk2::Collection
3
4
 
@@ -7,8 +8,8 @@ class Zendesk2::Categories
7
8
  model Zendesk2::Category
8
9
 
9
10
  self.collection_method = :get_categories
10
- self.collection_root = "categories"
11
+ self.collection_root = 'categories'
11
12
  self.model_method = :get_category
12
- self.model_root = "category"
13
- self.search_type = "category"
13
+ self.model_root = 'category'
14
+ self.search_type = 'category'
14
15
  end
@@ -1,7 +1,7 @@
1
+ # frozen_string_literal: true
1
2
  class Zendesk2::Category
2
3
  include Zendesk2::Model
3
4
 
4
-
5
5
  # @return [Integer] Automatically assigned during creation
6
6
  identity :id, type: :integer
7
7
 
@@ -21,18 +21,18 @@ class Zendesk2::Category
21
21
  def destroy!
22
22
  requires :identity
23
23
 
24
- cistern.destroy_category("category" => {"id" => self.identity})
24
+ cistern.destroy_category('category' => { 'id' => identity })
25
25
  end
26
26
 
27
27
  def save!
28
28
  data = if new_record?
29
29
  requires :name
30
30
 
31
- cistern.create_category(params).body["category"]
31
+ cistern.create_category(params).body['category']
32
32
  else
33
33
  requires :identity
34
34
 
35
- cistern.update_category(params).body["category"]
35
+ cistern.update_category(params).body['category']
36
36
  end
37
37
 
38
38
  merge_attributes(data)
@@ -41,6 +41,11 @@ class Zendesk2::Category
41
41
  protected
42
42
 
43
43
  def params
44
- {"category" => Cistern::Hash.slice(Zendesk2.stringify_keys(attributes), *Zendesk2::CreateCategory.accepted_attributes)}
44
+ {
45
+ 'category' => Cistern::Hash.slice(
46
+ Zendesk2.stringify_keys(attributes),
47
+ *Zendesk2::CreateCategory.accepted_attributes
48
+ ),
49
+ }
45
50
  end
46
51
  end
@@ -1,7 +1,8 @@
1
+ # frozen_string_literal: true
1
2
  # @deprecated use {#Zendesk2}
2
3
  module Zendesk2::Client
3
4
  def self.method_missing(message, *args, &block)
4
- Cistern.deprecation("Zendesk2::Client is deprecated, use Zendesk2", caller[1])
5
+ Cistern.deprecation('Zendesk2::Client is deprecated, use Zendesk2', caller[1])
5
6
 
6
7
  if Zendesk2.respond_to?(message)
7
8
  Zendesk2.public_send(message, *args, &block)
@@ -11,9 +12,8 @@ module Zendesk2::Client
11
12
  end
12
13
 
13
14
  def self.respond_to?(message)
14
- Cistern.deprecation("Zendesk2::Client is deprecated, use Zendesk2", caller[1])
15
+ Cistern.deprecation('Zendesk2::Client is deprecated, use Zendesk2', caller[1])
15
16
 
16
17
  Zendesk2.respond_to?(message) || super
17
18
  end
18
19
  end
19
-
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Zendesk2::Collection
2
3
  class << self
3
4
  alias cistern_included included
@@ -9,13 +10,14 @@ module Zendesk2::Collection
9
10
  end
10
11
  end
11
12
 
13
+ # Add interface methods for response constants
12
14
  module ClassMethods
13
15
  attr_accessor :collection_method, :collection_root, :model_method, :model_root
14
16
 
15
17
  attr_writer :namespace
16
18
 
17
19
  def namespace
18
- @namespace || self.model_root
20
+ @namespace || model_root
19
21
  end
20
22
 
21
23
  def scopes
@@ -23,35 +25,49 @@ module Zendesk2::Collection
23
25
  end
24
26
  end
25
27
 
26
- def collection_method; self.class.collection_method; end
27
- def collection_root; self.class.collection_root; end
28
- def model_method; self.class.model_method; end
29
- def model_root; self.class.model_root; end
30
- def namespace; self.class.namespace; end
28
+ def collection_method
29
+ self.class.collection_method
30
+ end
31
+
32
+ def collection_root
33
+ self.class.collection_root
34
+ end
35
+
36
+ def model_method
37
+ self.class.model_method
38
+ end
39
+
40
+ def model_root
41
+ self.class.model_root
42
+ end
43
+
44
+ def namespace
45
+ self.class.namespace
46
+ end
31
47
 
32
48
  # Attempt creation of resource and explode if unsuccessful
33
49
  # @raise [Zendesk2::Error] if creation was unsuccessful
34
50
  # @return [Cistern::Model]
35
- def create!(attributes={})
36
- model = self.new(attributes.merge(Zendesk2.stringify_keys(self.attributes)))
51
+ def create!(attributes = {})
52
+ model = new(attributes.merge(Zendesk2.stringify_keys(self.attributes)))
37
53
  model.save!
38
54
  end
39
55
 
40
56
  # Quietly attempt creation of resource. Check {#new_record?} and {#errors} for success
41
57
  # @see {#create!} to raise an exception on failure
42
58
  # @return [Cistern::Model, FalseClass]
43
- def create(attributes={})
44
- model = self.new(attributes.merge(Zendesk2.stringify_keys(self.attributes)))
59
+ def create(attributes = {})
60
+ model = new(attributes.merge(Zendesk2.stringify_keys(self.attributes)))
45
61
  model.save
46
62
  end
47
63
 
48
64
  # Fetch a collection of resources
49
- def all(params={})
50
- scoped_attributes = self.class.scopes.inject({}){|r,k| r.merge(k.to_s => send(k))}.merge(params)
65
+ def all(params = {})
66
+ scoped_attributes = self.class.scopes.inject({}) { |a, e| a.merge(e.to_s => public_send(e)) }.merge(params)
51
67
  body = cistern.send(collection_method, scoped_attributes).body
52
68
 
53
- self.load(body[collection_root])
54
- self.merge_attributes(Cistern::Hash.slice(body, "count"))
69
+ load(body[collection_root])
70
+ merge_attributes(Cistern::Hash.slice(body, 'count'))
55
71
  self
56
72
  end
57
73
 
@@ -70,19 +86,17 @@ module Zendesk2::Collection
70
86
  # @raise [Zendesk2::Error] if the record cannot be found or other request error
71
87
  # @return [Zendesk2::Model] fetched resource corresponding to value of {Zendesk2::Collection#model}
72
88
  def get!(identity_or_hash)
73
- scoped_attributes = self.class.scopes.inject({}) { |r,k| r.merge(k.to_s => send(k)) }
89
+ scoped_attributes = self.class.scopes.inject({}) { |a, e| a.merge(e.to_s => public_send(e)) }
74
90
 
75
91
  if identity_or_hash.is_a?(Hash)
76
92
  scoped_attributes.merge!(identity_or_hash)
77
93
  else
78
- scoped_attributes.merge!("id" => identity_or_hash)
94
+ scoped_attributes['id'] = identity_or_hash
79
95
  end
80
96
 
81
97
  scoped_attributes = { namespace => scoped_attributes }
82
-
83
- if data = self.cistern.send(model_method, scoped_attributes).body[self.model_root]
84
- new(data)
85
- end
98
+ data = cistern.send(model_method, scoped_attributes).body[model_root]
99
+ new(data) if data
86
100
  end
87
101
 
88
102
  # Quiet version of {#get!}
@@ -95,7 +109,7 @@ module Zendesk2::Collection
95
109
  nil
96
110
  end
97
111
 
98
- def new(attributes={})
112
+ def new(attributes = {})
99
113
  super(self.attributes.merge(attributes))
100
114
  end
101
115
  end
@@ -1,26 +1,27 @@
1
+ # frozen_string_literal: true
1
2
  class Zendesk2::CreateCategory
2
3
  include Zendesk2::Request
3
4
 
4
5
  request_method :post
5
- request_path { |_| "/categories.json" }
6
- request_body { |r| {"category" => r.params["category"]} }
6
+ request_path { |_| '/categories.json' }
7
+ request_body { |r| { 'category' => r.params['category'] } }
7
8
 
8
9
  def self.accepted_attributes
9
- %w[id name description position]
10
+ %w(id name description position)
10
11
  end
11
12
 
12
13
  def mock
13
14
  identity = cistern.serial_id
14
15
 
15
16
  record = {
16
- "id" => identity,
17
- "url" => url_for("/categories/#{identity}.json"),
18
- "created_at" => Time.now.iso8601,
19
- "updated_at" => Time.now.iso8601,
20
- }.merge(Cistern::Hash.slice(params.fetch("category"), *self.class.accepted_attributes))
17
+ 'id' => identity,
18
+ 'url' => url_for("/categories/#{identity}.json"),
19
+ 'created_at' => Time.now.iso8601,
20
+ 'updated_at' => Time.now.iso8601,
21
+ }.merge(Cistern::Hash.slice(params.fetch('category'), *self.class.accepted_attributes))
21
22
 
22
23
  cistern.data[:categories][identity] = record
23
24
 
24
- mock_response({"category" => record}, {status: 201})
25
+ mock_response({ 'category' => record }, { status: 201 })
25
26
  end
26
27
  end