desk_api 0.1.0 → 0.1.1

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