desk_api 0.1.0 → 0.1.1

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 (117) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +49 -34
  3. data/config.rb +1 -1
  4. data/desk_api.gemspec +3 -3
  5. data/lib/desk.rb +1 -35
  6. data/lib/desk_api.rb +35 -0
  7. data/lib/{desk → desk_api}/action/create.rb +1 -1
  8. data/lib/{desk → desk_api}/action/delete.rb +1 -1
  9. data/lib/{desk → desk_api}/action/embedded.rb +1 -1
  10. data/lib/{desk → desk_api}/action/field.rb +3 -3
  11. data/lib/{desk → desk_api}/action/link.rb +2 -2
  12. data/lib/desk_api/action/resource.rb +14 -0
  13. data/lib/{desk → desk_api}/action/search.rb +1 -1
  14. data/lib/{desk → desk_api}/action/update.rb +2 -2
  15. data/lib/{desk → desk_api}/client.rb +15 -15
  16. data/lib/{desk → desk_api}/configuration.rb +13 -13
  17. data/lib/{desk → desk_api}/default.rb +5 -5
  18. data/lib/{desk → desk_api}/error.rb +5 -5
  19. data/lib/{desk → desk_api}/error/bad_gateway.rb +3 -3
  20. data/lib/{desk → desk_api}/error/bad_request.rb +3 -3
  21. data/lib/{desk → desk_api}/error/client_error.rb +3 -3
  22. data/lib/{desk → desk_api}/error/configuration_error.rb +2 -2
  23. data/lib/{desk → desk_api}/error/conflict.rb +3 -3
  24. data/lib/{desk → desk_api}/error/forbidden.rb +3 -3
  25. data/lib/{desk → desk_api}/error/gateway_timeout.rb +3 -3
  26. data/lib/desk_api/error/internal_server_error.rb +10 -0
  27. data/lib/{desk → desk_api}/error/method_not_allowed.rb +3 -3
  28. data/lib/{desk → desk_api}/error/method_not_supported.rb +3 -3
  29. data/lib/{desk → desk_api}/error/not_acceptable.rb +3 -3
  30. data/lib/{desk → desk_api}/error/not_found.rb +3 -3
  31. data/lib/desk_api/error/parse_error.rb +9 -0
  32. data/lib/desk_api/error/parser_error.rb +9 -0
  33. data/lib/{desk → desk_api}/error/server_error.rb +3 -3
  34. data/lib/desk_api/error/service_unavailable.rb +10 -0
  35. data/lib/{desk → desk_api}/error/too_many_requests.rb +3 -3
  36. data/lib/{desk → desk_api}/error/unauthorized.rb +3 -3
  37. data/lib/{desk → desk_api}/error/unprocessable_entity.rb +3 -3
  38. data/lib/{desk → desk_api}/error/unsupported_media_type.rb +3 -3
  39. data/lib/{desk → desk_api}/rate_limit.rb +1 -1
  40. data/lib/{desk → desk_api}/request/retry.rb +2 -2
  41. data/lib/{desk → desk_api}/resource.rb +16 -16
  42. data/lib/desk_api/resource/article.rb +10 -0
  43. data/lib/desk_api/resource/article_translation.rb +8 -0
  44. data/lib/desk_api/resource/attachment.rb +8 -0
  45. data/lib/desk_api/resource/case.rb +9 -0
  46. data/lib/desk_api/resource/company.rb +8 -0
  47. data/lib/desk_api/resource/customer.rb +9 -0
  48. data/lib/desk_api/resource/integration_url.rb +9 -0
  49. data/lib/desk_api/resource/job.rb +7 -0
  50. data/lib/desk_api/resource/label.rb +9 -0
  51. data/lib/desk_api/resource/macro.rb +9 -0
  52. data/lib/desk_api/resource/macro_action.rb +7 -0
  53. data/lib/desk_api/resource/note.rb +7 -0
  54. data/lib/{desk → desk_api}/resource/page.rb +5 -5
  55. data/lib/desk_api/resource/reply.rb +8 -0
  56. data/lib/desk_api/resource/topic.rb +9 -0
  57. data/lib/desk_api/resource/topic_translation.rb +9 -0
  58. data/lib/desk_api/resource/user_preference.rb +7 -0
  59. data/lib/{desk → desk_api}/resources.json +0 -0
  60. data/lib/desk_api/response/raise_error.rb +34 -0
  61. data/lib/desk_api/version.rb +3 -0
  62. data/spec/cassettes/{Desk_Client → DeskApi_Client}/_delete/deletes_a_resource.yml +5 -5
  63. data/spec/cassettes/{Desk_Client → DeskApi_Client}/_get/fetches_resources.yml +5 -5
  64. data/spec/cassettes/{Desk_Client → DeskApi_Client}/_patch/updates_a_resource.yml +6 -6
  65. data/spec/cassettes/{Desk_Client → DeskApi_Client}/_post/creates_a_resource.yml +8 -8
  66. data/spec/cassettes/{Desk_Error → DeskApi_Error}/_from_response/can_be_created_from_a_faraday_response.yml +5 -5
  67. data/spec/cassettes/{Desk_Error → DeskApi_Error}/_from_response/uses_the_body_message_if_present.yml +5 -5
  68. data/spec/cassettes/{Desk_Resource → DeskApi_Resource}/_by_url/finds_resources_by_url.yml +7 -7
  69. data/spec/cassettes/{Desk_Resource → DeskApi_Resource}/_create/creates_a_new_topic.yml +8 -8
  70. data/spec/cassettes/{Desk_Resource → DeskApi_Resource}/_delete/deletes_a_resource.yml +25 -26
  71. data/spec/cassettes/{Desk_Resource → DeskApi_Resource}/_delete/throws_an_error_deleting_a_non_deletalbe_resource.yml +6 -6
  72. data/spec/cassettes/{Desk_Resource_Page/_page/returns_the_current_page_and_loads_if_page_not_defined.yml → DeskApi_Resource/_exec_/can_be_forced_to_reload.yml} +6 -6
  73. data/spec/cassettes/{Desk_Resource → DeskApi_Resource}/_exec_/loads_the_current_resource.yml +7 -7
  74. data/spec/cassettes/{Desk_Resource/_exec_/can_be_forced_to_reload.yml → DeskApi_Resource/_method_missing/loads_the_resource_to_find_a_suitable_method.yml} +6 -6
  75. data/spec/cassettes/{Desk_Resource/_method_missing/loads_the_resource_to_find_a_suitable_method.yml → DeskApi_Resource/_method_missing/raises_an_error_if_method_does_not_exist.yml} +7 -7
  76. data/spec/cassettes/{Desk_Resource → DeskApi_Resource}/_search/allows_searching_on_search_enabled_resources.yml +5 -5
  77. data/spec/cassettes/DeskApi_Resource/_update/can_update_without_a_hash.yml +116 -0
  78. data/spec/cassettes/{Desk_Resource → DeskApi_Resource}/_update/throws_an_error_updating_a_user.yml +5 -5
  79. data/spec/cassettes/{Desk_Resource → DeskApi_Resource}/_update/updates_a_topic.yml +18 -20
  80. data/spec/cassettes/{Desk_Resource_Page → DeskApi_Resource_Page}/_by_id/loads_the_requested_resource.yml +5 -5
  81. data/spec/cassettes/{Desk_Resource_Page → DeskApi_Resource_Page}/_page/keeps_the_resource_as_loaded.yml +5 -5
  82. data/spec/cassettes/{Desk_Resource/_method_missing/raises_an_error_if_method_does_not_exist.yml → DeskApi_Resource_Page/_page/returns_the_current_page_and_loads_if_page_not_defined.yml} +6 -6
  83. data/spec/cassettes/{Desk_Resource_Page → DeskApi_Resource_Page}/_page/sets_the_resource_to_not_loaded.yml +5 -5
  84. data/spec/{desk → desk_api}/client_spec.rb +14 -14
  85. data/spec/{desk → desk_api}/configuration_spec.rb +23 -23
  86. data/spec/{desk → desk_api}/default_spec.rb +5 -5
  87. data/spec/{desk → desk_api}/error_spec.rb +4 -4
  88. data/spec/{desk → desk_api}/rate_limit_spec.rb +7 -7
  89. data/spec/{desk → desk_api}/request/retry_spec.rb +3 -3
  90. data/spec/{desk → desk_api}/resource_spec.rb +17 -10
  91. data/spec/{desk → desk_api}/resources/page_spec.rb +5 -5
  92. data/spec/{desk_spec.rb → desk_api_spec.rb} +10 -10
  93. data/spec/spec_helper.rb +1 -1
  94. metadata +121 -118
  95. data/lib/desk/action/resource.rb +0 -14
  96. data/lib/desk/error/internal_server_error.rb +0 -10
  97. data/lib/desk/error/parse_error.rb +0 -9
  98. data/lib/desk/error/parser_error.rb +0 -9
  99. data/lib/desk/error/service_unavailable.rb +0 -10
  100. data/lib/desk/resource/article.rb +0 -10
  101. data/lib/desk/resource/article_translation.rb +0 -8
  102. data/lib/desk/resource/attachment.rb +0 -8
  103. data/lib/desk/resource/case.rb +0 -9
  104. data/lib/desk/resource/company.rb +0 -8
  105. data/lib/desk/resource/customer.rb +0 -9
  106. data/lib/desk/resource/integration_url.rb +0 -9
  107. data/lib/desk/resource/job.rb +0 -7
  108. data/lib/desk/resource/label.rb +0 -9
  109. data/lib/desk/resource/macro.rb +0 -9
  110. data/lib/desk/resource/macro_action.rb +0 -7
  111. data/lib/desk/resource/note.rb +0 -7
  112. data/lib/desk/resource/reply.rb +0 -8
  113. data/lib/desk/resource/topic.rb +0 -9
  114. data/lib/desk/resource/topic_translation.rb +0 -9
  115. data/lib/desk/resource/user_preference.rb +0 -7
  116. data/lib/desk/response/raise_error.rb +0 -34
  117. data/lib/desk/version.rb +0 -3
@@ -1,22 +1,22 @@
1
- require 'desk/version'
1
+ require 'desk_api/version'
2
2
 
3
- module Desk
3
+ module DeskApi
4
4
  module Default
5
5
  CONNECTION_OPTIONS = {
6
6
  headers: {
7
7
  accept: 'application/json',
8
- user_agent: "desk.com Ruby Gem v#{Desk::VERSION}"
8
+ user_agent: "desk.com Ruby Gem v#{DeskApi::VERSION}"
9
9
  },
10
10
  request: {
11
11
  open_timeout: 5,
12
12
  timeout: 10
13
13
  }
14
- } unless defined? Desk::Default::CONNECTION_OPTIONS
14
+ } unless defined? DeskApi::Default::CONNECTION_OPTIONS
15
15
 
16
16
  class << self
17
17
  # @return [Hash]
18
18
  def options
19
- Hash[Desk::Configuration.keys.map{|key| [key, send(key)]}]
19
+ Hash[DeskApi::Configuration.keys.map{|key| [key, send(key)]}]
20
20
  end
21
21
 
22
22
  # @return [String]
@@ -1,6 +1,6 @@
1
- require 'desk/rate_limit'
1
+ require 'desk_api/rate_limit'
2
2
 
3
- module Desk
3
+ module DeskApi
4
4
  # Custom error class for rescuing from all desk.com errors
5
5
  class Error < StandardError
6
6
  attr_reader :rate_limit
@@ -10,9 +10,9 @@ module Desk
10
10
  # @param exception [Exception, String]
11
11
  # @param response_headers [Hash]
12
12
  # @param code [Integer]
13
- # @return [Desk::Error]
13
+ # @return [DeskApi::Error]
14
14
  def initialize(exception=$!, response_headers={}, code = nil)
15
- @rate_limit = Desk::RateLimit.new(response_headers)
15
+ @rate_limit = DeskApi::RateLimit.new(response_headers)
16
16
  @wrapped_exception = exception
17
17
  @code = code
18
18
  exception.respond_to?(:backtrace) ? super(exception.message) : super(exception.to_s)
@@ -26,7 +26,7 @@ module Desk
26
26
  # Create a new error from an HTTP response
27
27
  #
28
28
  # @param response [Hash]
29
- # @return [Desk::Error]
29
+ # @return [DeskApi::Error]
30
30
  def from_response(response = {})
31
31
  error, code = parse_error(response[:body]), response[:status]
32
32
  new(error, response[:response_headers], code)
@@ -1,9 +1,9 @@
1
- require 'desk/error/server_error'
1
+ require 'desk_api/error/server_error'
2
2
 
3
- module Desk
3
+ module DeskApi
4
4
  class Error
5
5
  # Raised when Desk returns the HTTP status code 502
6
- class BadGateway < Desk::Error::ServerError
6
+ class BadGateway < DeskApi::Error::ServerError
7
7
  HTTP_STATUS_CODE = 502
8
8
  end
9
9
  end
@@ -1,9 +1,9 @@
1
- require 'desk/error/client_error'
1
+ require 'desk_api/error/client_error'
2
2
 
3
- module Desk
3
+ module DeskApi
4
4
  class Error
5
5
  # Raised when desk.com returns the HTTP status code 400
6
- class BadRequest < Desk::Error::ClientError
6
+ class BadRequest < DeskApi::Error::ClientError
7
7
  HTTP_STATUS_CODE = 400
8
8
  end
9
9
  end
@@ -1,9 +1,9 @@
1
- require 'desk/error'
1
+ require 'desk_api/error'
2
2
 
3
- module Desk
3
+ module DeskApi
4
4
  class Error
5
5
  # Raised when desk.com returns a 4xx HTTP status code or there's an error in Faraday
6
- class ClientError < Desk::Error
6
+ class ClientError < DeskApi::Error
7
7
  end
8
8
  end
9
9
  end
@@ -1,6 +1,6 @@
1
- require 'desk/error'
1
+ require 'desk_api/error'
2
2
 
3
- module Desk
3
+ module DeskApi
4
4
  class Error
5
5
  class ConfigurationError < ::ArgumentError
6
6
  end
@@ -1,9 +1,9 @@
1
- require 'desk/error/client_error'
1
+ require 'desk_api/error/client_error'
2
2
 
3
- module Desk
3
+ module DeskApi
4
4
  class Error
5
5
  # Raised when desk.com returns the HTTP status code 409
6
- class Conflict < Desk::Error::ClientError
6
+ class Conflict < DeskApi::Error::ClientError
7
7
  HTTP_STATUS_CODE = 409
8
8
  end
9
9
  end
@@ -1,9 +1,9 @@
1
- require 'desk/error/client_error'
1
+ require 'desk_api/error/client_error'
2
2
 
3
- module Desk
3
+ module DeskApi
4
4
  class Error
5
5
  # Raised when desk.com returns the HTTP status code 403
6
- class Forbidden < Desk::Error::ClientError
6
+ class Forbidden < DeskApi::Error::ClientError
7
7
  HTTP_STATUS_CODE = 403
8
8
  end
9
9
  end
@@ -1,9 +1,9 @@
1
- require 'desk/error/server_error'
1
+ require 'desk_api/error/server_error'
2
2
 
3
- module Desk
3
+ module DeskApi
4
4
  class Error
5
5
  # Raised when Desk returns the HTTP status code 504
6
- class GatewayTimeout < Desk::Error::ServerError
6
+ class GatewayTimeout < DeskApi::Error::ServerError
7
7
  HTTP_STATUS_CODE = 504
8
8
  end
9
9
  end
@@ -0,0 +1,10 @@
1
+ require 'desk_api/error/server_error'
2
+
3
+ module DeskApi
4
+ class Error
5
+ # Raised when Desk returns the HTTP status code 500
6
+ class InternalServerError < DeskApi::Error::ServerError
7
+ HTTP_STATUS_CODE = 500
8
+ end
9
+ end
10
+ end
@@ -1,9 +1,9 @@
1
- require 'desk/error/client_error'
1
+ require 'desk_api/error/client_error'
2
2
 
3
- module Desk
3
+ module DeskApi
4
4
  class Error
5
5
  # Raised when desk.com returns the HTTP status code 405
6
- class MethodNotAllowed < Desk::Error::ClientError
6
+ class MethodNotAllowed < DeskApi::Error::ClientError
7
7
  HTTP_STATUS_CODE = 405
8
8
  end
9
9
  end
@@ -1,9 +1,9 @@
1
- require 'desk/error'
1
+ require 'desk_api/error'
2
2
 
3
- module Desk
3
+ module DeskApi
4
4
  class Error
5
5
  # Raised when trying to search a resource that doesn't support search
6
- class MethodNotSupported < Desk::Error
6
+ class MethodNotSupported < DeskApi::Error
7
7
  end
8
8
  end
9
9
  end
@@ -1,9 +1,9 @@
1
- require 'desk/error/client_error'
1
+ require 'desk_api/error/client_error'
2
2
 
3
- module Desk
3
+ module DeskApi
4
4
  class Error
5
5
  # Raised when desk.com returns the HTTP status code 406
6
- class NotAcceptable < Desk::Error::ClientError
6
+ class NotAcceptable < DeskApi::Error::ClientError
7
7
  HTTP_STATUS_CODE = 406
8
8
  end
9
9
  end
@@ -1,9 +1,9 @@
1
- require 'desk/error/client_error'
1
+ require 'desk_api/error/client_error'
2
2
 
3
- module Desk
3
+ module DeskApi
4
4
  class Error
5
5
  # Raised when desk.com returns the HTTP status code 404
6
- class NotFound < Desk::Error::ClientError
6
+ class NotFound < DeskApi::Error::ClientError
7
7
  HTTP_STATUS_CODE = 404
8
8
  end
9
9
  end
@@ -0,0 +1,9 @@
1
+ require 'desk_api/error'
2
+
3
+ module DeskApi
4
+ class Error
5
+ # Raised when JSON parsing fails
6
+ class ParserError < DeskApi::Error
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ require 'desk_api/error'
2
+
3
+ module DeskApi
4
+ class Error
5
+ # Raised when JSON parsing fails
6
+ class ParserError < DeskApi::Error
7
+ end
8
+ end
9
+ end
@@ -1,9 +1,9 @@
1
- require 'desk/error'
1
+ require 'desk_api/error'
2
2
 
3
- module Desk
3
+ module DeskApi
4
4
  class Error
5
5
  # Raised when Desk returns a 5xx HTTP status code
6
- class ServerError < Desk::Error
6
+ class ServerError < DeskApi::Error
7
7
  end
8
8
  end
9
9
  end
@@ -0,0 +1,10 @@
1
+ require 'desk_api/error/server_error'
2
+
3
+ module DeskApi
4
+ class Error
5
+ # Raised when Desk returns the HTTP status code 503
6
+ class ServiceUnavailable < DeskApi::Error::ServerError
7
+ HTTP_STATUS_CODE = 503
8
+ end
9
+ end
10
+ end
@@ -1,9 +1,9 @@
1
- require 'desk/error/client_error'
1
+ require 'desk_api/error/client_error'
2
2
 
3
- module Desk
3
+ module DeskApi
4
4
  class Error
5
5
  # Raised when desk.com returns the HTTP status code 429
6
- class TooManyRequests < Desk::Error::ClientError
6
+ class TooManyRequests < DeskApi::Error::ClientError
7
7
  HTTP_STATUS_CODE = 429
8
8
  end
9
9
  end
@@ -1,9 +1,9 @@
1
- require 'desk/error/client_error'
1
+ require 'desk_api/error/client_error'
2
2
 
3
- module Desk
3
+ module DeskApi
4
4
  class Error
5
5
  # Raised when desk.com returns the HTTP status code 401
6
- class Unauthorized < Desk::Error::ClientError
6
+ class Unauthorized < DeskApi::Error::ClientError
7
7
  HTTP_STATUS_CODE = 401
8
8
  end
9
9
  end
@@ -1,9 +1,9 @@
1
- require 'desk/error/client_error'
1
+ require 'desk_api/error/client_error'
2
2
 
3
- module Desk
3
+ module DeskApi
4
4
  class Error
5
5
  # Raised when desk.com returns the HTTP status code 422
6
- class UnprocessableEntity < Desk::Error::ClientError
6
+ class UnprocessableEntity < DeskApi::Error::ClientError
7
7
  HTTP_STATUS_CODE = 422
8
8
  end
9
9
  end
@@ -1,9 +1,9 @@
1
- require 'desk/error/client_error'
1
+ require 'desk_api/error/client_error'
2
2
 
3
- module Desk
3
+ module DeskApi
4
4
  class Error
5
5
  # Raised when desk.com returns the HTTP status code 415
6
- class UnsupportedMediaType < Desk::Error::ClientError
6
+ class UnsupportedMediaType < DeskApi::Error::ClientError
7
7
  HTTP_STATUS_CODE = 415
8
8
  end
9
9
  end
@@ -1,4 +1,4 @@
1
- module Desk
1
+ module DeskApi
2
2
  class RateLimit
3
3
  def initialize(attrs = {})
4
4
  @attrs = attrs
@@ -1,4 +1,4 @@
1
- module Desk
1
+ module DeskApi
2
2
  module Request
3
3
  class Retry < Faraday::Request::Retry
4
4
  def initialize(app, options = {})
@@ -13,7 +13,7 @@ module Desk
13
13
 
14
14
  begin
15
15
  @app.call(env)
16
- rescue Desk::Error::TooManyRequests => e
16
+ rescue DeskApi::Error::TooManyRequests => e
17
17
  if retries > 0 and e.rate_limit.reset_in
18
18
  retries = 0
19
19
  sleep e.rate_limit.reset_in
@@ -1,19 +1,19 @@
1
- require 'desk/action/create'
2
- require 'desk/action/delete'
3
- require 'desk/action/embedded'
4
- require 'desk/action/field'
5
- require 'desk/action/link'
6
- require 'desk/action/resource'
7
- require 'desk/action/search'
8
- require 'desk/action/update'
9
-
10
- require 'desk/error/method_not_supported'
11
-
12
- module Desk
1
+ require 'desk_api/action/create'
2
+ require 'desk_api/action/delete'
3
+ require 'desk_api/action/embedded'
4
+ require 'desk_api/action/field'
5
+ require 'desk_api/action/link'
6
+ require 'desk_api/action/resource'
7
+ require 'desk_api/action/search'
8
+ require 'desk_api/action/update'
9
+
10
+ require 'desk_api/error/method_not_supported'
11
+
12
+ module DeskApi
13
13
  class Resource
14
- include Desk::Action::Resource
15
- include Desk::Action::Link
16
- include Desk::Action::Field
14
+ include DeskApi::Action::Resource
15
+ include DeskApi::Action::Link
16
+ include DeskApi::Action::Field
17
17
 
18
18
  def initialize(client, definition = {}, loaded = false)
19
19
  @client, @loaded, @_changed = client, loaded, {}
@@ -46,7 +46,7 @@ module Desk
46
46
 
47
47
  def method_missing(method, *args, &block)
48
48
  self.exec! if !loaded
49
- raise Desk::Error::MethodNotSupported unless self.respond_to?(method.to_sym)
49
+ raise DeskApi::Error::MethodNotSupported unless self.respond_to?(method.to_sym)
50
50
  self.send(method, *args, &block)
51
51
  end
52
52
  end
@@ -0,0 +1,10 @@
1
+ module DeskApi
2
+ class Resource
3
+ class Article < DeskApi::Resource
4
+ include DeskApi::Action::Create
5
+ include DeskApi::Action::Update
6
+ include DeskApi::Action::Delete
7
+ include DeskApi::Action::Search
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,8 @@
1
+ module DeskApi
2
+ class Resource
3
+ class ArticleTranslation < DeskApi::Resource
4
+ include DeskApi::Action::Create
5
+ include DeskApi::Action::Update
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module DeskApi
2
+ class Resource
3
+ class Attachment < DeskApi::Resource
4
+ include DeskApi::Action::Create
5
+ include DeskApi::Action::Delete
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,9 @@
1
+ module DeskApi
2
+ class Resource
3
+ class Case < DeskApi::Resource
4
+ include DeskApi::Action::Create
5
+ include DeskApi::Action::Update
6
+ include DeskApi::Action::Search
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,8 @@
1
+ module DeskApi
2
+ class Resource
3
+ class Company < DeskApi::Resource
4
+ include DeskApi::Action::Create
5
+ include DeskApi::Action::Update
6
+ end
7
+ end
8
+ end