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.
- checksums.yaml +4 -4
- data/README.md +49 -34
- data/config.rb +1 -1
- data/desk_api.gemspec +3 -3
- data/lib/desk.rb +1 -35
- data/lib/desk_api.rb +35 -0
- data/lib/{desk → desk_api}/action/create.rb +1 -1
- data/lib/{desk → desk_api}/action/delete.rb +1 -1
- data/lib/{desk → desk_api}/action/embedded.rb +1 -1
- data/lib/{desk → desk_api}/action/field.rb +3 -3
- data/lib/{desk → desk_api}/action/link.rb +2 -2
- data/lib/desk_api/action/resource.rb +14 -0
- data/lib/{desk → desk_api}/action/search.rb +1 -1
- data/lib/{desk → desk_api}/action/update.rb +2 -2
- data/lib/{desk → desk_api}/client.rb +15 -15
- data/lib/{desk → desk_api}/configuration.rb +13 -13
- data/lib/{desk → desk_api}/default.rb +5 -5
- data/lib/{desk → desk_api}/error.rb +5 -5
- data/lib/{desk → desk_api}/error/bad_gateway.rb +3 -3
- data/lib/{desk → desk_api}/error/bad_request.rb +3 -3
- data/lib/{desk → desk_api}/error/client_error.rb +3 -3
- data/lib/{desk → desk_api}/error/configuration_error.rb +2 -2
- data/lib/{desk → desk_api}/error/conflict.rb +3 -3
- data/lib/{desk → desk_api}/error/forbidden.rb +3 -3
- data/lib/{desk → desk_api}/error/gateway_timeout.rb +3 -3
- data/lib/desk_api/error/internal_server_error.rb +10 -0
- data/lib/{desk → desk_api}/error/method_not_allowed.rb +3 -3
- data/lib/{desk → desk_api}/error/method_not_supported.rb +3 -3
- data/lib/{desk → desk_api}/error/not_acceptable.rb +3 -3
- data/lib/{desk → desk_api}/error/not_found.rb +3 -3
- data/lib/desk_api/error/parse_error.rb +9 -0
- data/lib/desk_api/error/parser_error.rb +9 -0
- data/lib/{desk → desk_api}/error/server_error.rb +3 -3
- data/lib/desk_api/error/service_unavailable.rb +10 -0
- data/lib/{desk → desk_api}/error/too_many_requests.rb +3 -3
- data/lib/{desk → desk_api}/error/unauthorized.rb +3 -3
- data/lib/{desk → desk_api}/error/unprocessable_entity.rb +3 -3
- data/lib/{desk → desk_api}/error/unsupported_media_type.rb +3 -3
- data/lib/{desk → desk_api}/rate_limit.rb +1 -1
- data/lib/{desk → desk_api}/request/retry.rb +2 -2
- data/lib/{desk → desk_api}/resource.rb +16 -16
- data/lib/desk_api/resource/article.rb +10 -0
- data/lib/desk_api/resource/article_translation.rb +8 -0
- data/lib/desk_api/resource/attachment.rb +8 -0
- data/lib/desk_api/resource/case.rb +9 -0
- data/lib/desk_api/resource/company.rb +8 -0
- data/lib/desk_api/resource/customer.rb +9 -0
- data/lib/desk_api/resource/integration_url.rb +9 -0
- data/lib/desk_api/resource/job.rb +7 -0
- data/lib/desk_api/resource/label.rb +9 -0
- data/lib/desk_api/resource/macro.rb +9 -0
- data/lib/desk_api/resource/macro_action.rb +7 -0
- data/lib/desk_api/resource/note.rb +7 -0
- data/lib/{desk → desk_api}/resource/page.rb +5 -5
- data/lib/desk_api/resource/reply.rb +8 -0
- data/lib/desk_api/resource/topic.rb +9 -0
- data/lib/desk_api/resource/topic_translation.rb +9 -0
- data/lib/desk_api/resource/user_preference.rb +7 -0
- data/lib/{desk → desk_api}/resources.json +0 -0
- data/lib/desk_api/response/raise_error.rb +34 -0
- data/lib/desk_api/version.rb +3 -0
- data/spec/cassettes/{Desk_Client → DeskApi_Client}/_delete/deletes_a_resource.yml +5 -5
- data/spec/cassettes/{Desk_Client → DeskApi_Client}/_get/fetches_resources.yml +5 -5
- data/spec/cassettes/{Desk_Client → DeskApi_Client}/_patch/updates_a_resource.yml +6 -6
- data/spec/cassettes/{Desk_Client → DeskApi_Client}/_post/creates_a_resource.yml +8 -8
- data/spec/cassettes/{Desk_Error → DeskApi_Error}/_from_response/can_be_created_from_a_faraday_response.yml +5 -5
- data/spec/cassettes/{Desk_Error → DeskApi_Error}/_from_response/uses_the_body_message_if_present.yml +5 -5
- data/spec/cassettes/{Desk_Resource → DeskApi_Resource}/_by_url/finds_resources_by_url.yml +7 -7
- data/spec/cassettes/{Desk_Resource → DeskApi_Resource}/_create/creates_a_new_topic.yml +8 -8
- data/spec/cassettes/{Desk_Resource → DeskApi_Resource}/_delete/deletes_a_resource.yml +25 -26
- data/spec/cassettes/{Desk_Resource → DeskApi_Resource}/_delete/throws_an_error_deleting_a_non_deletalbe_resource.yml +6 -6
- 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
- data/spec/cassettes/{Desk_Resource → DeskApi_Resource}/_exec_/loads_the_current_resource.yml +7 -7
- 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
- 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
- data/spec/cassettes/{Desk_Resource → DeskApi_Resource}/_search/allows_searching_on_search_enabled_resources.yml +5 -5
- data/spec/cassettes/DeskApi_Resource/_update/can_update_without_a_hash.yml +116 -0
- data/spec/cassettes/{Desk_Resource → DeskApi_Resource}/_update/throws_an_error_updating_a_user.yml +5 -5
- data/spec/cassettes/{Desk_Resource → DeskApi_Resource}/_update/updates_a_topic.yml +18 -20
- data/spec/cassettes/{Desk_Resource_Page → DeskApi_Resource_Page}/_by_id/loads_the_requested_resource.yml +5 -5
- data/spec/cassettes/{Desk_Resource_Page → DeskApi_Resource_Page}/_page/keeps_the_resource_as_loaded.yml +5 -5
- 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
- data/spec/cassettes/{Desk_Resource_Page → DeskApi_Resource_Page}/_page/sets_the_resource_to_not_loaded.yml +5 -5
- data/spec/{desk → desk_api}/client_spec.rb +14 -14
- data/spec/{desk → desk_api}/configuration_spec.rb +23 -23
- data/spec/{desk → desk_api}/default_spec.rb +5 -5
- data/spec/{desk → desk_api}/error_spec.rb +4 -4
- data/spec/{desk → desk_api}/rate_limit_spec.rb +7 -7
- data/spec/{desk → desk_api}/request/retry_spec.rb +3 -3
- data/spec/{desk → desk_api}/resource_spec.rb +17 -10
- data/spec/{desk → desk_api}/resources/page_spec.rb +5 -5
- data/spec/{desk_spec.rb → desk_api_spec.rb} +10 -10
- data/spec/spec_helper.rb +1 -1
- metadata +121 -118
- data/lib/desk/action/resource.rb +0 -14
- data/lib/desk/error/internal_server_error.rb +0 -10
- data/lib/desk/error/parse_error.rb +0 -9
- data/lib/desk/error/parser_error.rb +0 -9
- data/lib/desk/error/service_unavailable.rb +0 -10
- data/lib/desk/resource/article.rb +0 -10
- data/lib/desk/resource/article_translation.rb +0 -8
- data/lib/desk/resource/attachment.rb +0 -8
- data/lib/desk/resource/case.rb +0 -9
- data/lib/desk/resource/company.rb +0 -8
- data/lib/desk/resource/customer.rb +0 -9
- data/lib/desk/resource/integration_url.rb +0 -9
- data/lib/desk/resource/job.rb +0 -7
- data/lib/desk/resource/label.rb +0 -9
- data/lib/desk/resource/macro.rb +0 -9
- data/lib/desk/resource/macro_action.rb +0 -7
- data/lib/desk/resource/note.rb +0 -7
- data/lib/desk/resource/reply.rb +0 -8
- data/lib/desk/resource/topic.rb +0 -9
- data/lib/desk/resource/topic_translation.rb +0 -9
- data/lib/desk/resource/user_preference.rb +0 -7
- data/lib/desk/response/raise_error.rb +0 -34
- data/lib/desk/version.rb +0 -3
@@ -1,22 +1,22 @@
|
|
1
|
-
require '
|
1
|
+
require 'desk_api/version'
|
2
2
|
|
3
|
-
module
|
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#{
|
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?
|
14
|
+
} unless defined? DeskApi::Default::CONNECTION_OPTIONS
|
15
15
|
|
16
16
|
class << self
|
17
17
|
# @return [Hash]
|
18
18
|
def options
|
19
|
-
Hash[
|
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 '
|
1
|
+
require 'desk_api/rate_limit'
|
2
2
|
|
3
|
-
module
|
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 [
|
13
|
+
# @return [DeskApi::Error]
|
14
14
|
def initialize(exception=$!, response_headers={}, code = nil)
|
15
|
-
@rate_limit =
|
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 [
|
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 '
|
1
|
+
require 'desk_api/error/server_error'
|
2
2
|
|
3
|
-
module
|
3
|
+
module DeskApi
|
4
4
|
class Error
|
5
5
|
# Raised when Desk returns the HTTP status code 502
|
6
|
-
class BadGateway <
|
6
|
+
class BadGateway < DeskApi::Error::ServerError
|
7
7
|
HTTP_STATUS_CODE = 502
|
8
8
|
end
|
9
9
|
end
|
@@ -1,9 +1,9 @@
|
|
1
|
-
require '
|
1
|
+
require 'desk_api/error/client_error'
|
2
2
|
|
3
|
-
module
|
3
|
+
module DeskApi
|
4
4
|
class Error
|
5
5
|
# Raised when desk.com returns the HTTP status code 400
|
6
|
-
class BadRequest <
|
6
|
+
class BadRequest < DeskApi::Error::ClientError
|
7
7
|
HTTP_STATUS_CODE = 400
|
8
8
|
end
|
9
9
|
end
|
@@ -1,9 +1,9 @@
|
|
1
|
-
require '
|
1
|
+
require 'desk_api/error'
|
2
2
|
|
3
|
-
module
|
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 <
|
6
|
+
class ClientError < DeskApi::Error
|
7
7
|
end
|
8
8
|
end
|
9
9
|
end
|
@@ -1,9 +1,9 @@
|
|
1
|
-
require '
|
1
|
+
require 'desk_api/error/client_error'
|
2
2
|
|
3
|
-
module
|
3
|
+
module DeskApi
|
4
4
|
class Error
|
5
5
|
# Raised when desk.com returns the HTTP status code 409
|
6
|
-
class Conflict <
|
6
|
+
class Conflict < DeskApi::Error::ClientError
|
7
7
|
HTTP_STATUS_CODE = 409
|
8
8
|
end
|
9
9
|
end
|
@@ -1,9 +1,9 @@
|
|
1
|
-
require '
|
1
|
+
require 'desk_api/error/client_error'
|
2
2
|
|
3
|
-
module
|
3
|
+
module DeskApi
|
4
4
|
class Error
|
5
5
|
# Raised when desk.com returns the HTTP status code 403
|
6
|
-
class Forbidden <
|
6
|
+
class Forbidden < DeskApi::Error::ClientError
|
7
7
|
HTTP_STATUS_CODE = 403
|
8
8
|
end
|
9
9
|
end
|
@@ -1,9 +1,9 @@
|
|
1
|
-
require '
|
1
|
+
require 'desk_api/error/server_error'
|
2
2
|
|
3
|
-
module
|
3
|
+
module DeskApi
|
4
4
|
class Error
|
5
5
|
# Raised when Desk returns the HTTP status code 504
|
6
|
-
class GatewayTimeout <
|
6
|
+
class GatewayTimeout < DeskApi::Error::ServerError
|
7
7
|
HTTP_STATUS_CODE = 504
|
8
8
|
end
|
9
9
|
end
|
@@ -1,9 +1,9 @@
|
|
1
|
-
require '
|
1
|
+
require 'desk_api/error/client_error'
|
2
2
|
|
3
|
-
module
|
3
|
+
module DeskApi
|
4
4
|
class Error
|
5
5
|
# Raised when desk.com returns the HTTP status code 405
|
6
|
-
class MethodNotAllowed <
|
6
|
+
class MethodNotAllowed < DeskApi::Error::ClientError
|
7
7
|
HTTP_STATUS_CODE = 405
|
8
8
|
end
|
9
9
|
end
|
@@ -1,9 +1,9 @@
|
|
1
|
-
require '
|
1
|
+
require 'desk_api/error'
|
2
2
|
|
3
|
-
module
|
3
|
+
module DeskApi
|
4
4
|
class Error
|
5
5
|
# Raised when trying to search a resource that doesn't support search
|
6
|
-
class MethodNotSupported <
|
6
|
+
class MethodNotSupported < DeskApi::Error
|
7
7
|
end
|
8
8
|
end
|
9
9
|
end
|
@@ -1,9 +1,9 @@
|
|
1
|
-
require '
|
1
|
+
require 'desk_api/error/client_error'
|
2
2
|
|
3
|
-
module
|
3
|
+
module DeskApi
|
4
4
|
class Error
|
5
5
|
# Raised when desk.com returns the HTTP status code 406
|
6
|
-
class NotAcceptable <
|
6
|
+
class NotAcceptable < DeskApi::Error::ClientError
|
7
7
|
HTTP_STATUS_CODE = 406
|
8
8
|
end
|
9
9
|
end
|
@@ -1,9 +1,9 @@
|
|
1
|
-
require '
|
1
|
+
require 'desk_api/error/client_error'
|
2
2
|
|
3
|
-
module
|
3
|
+
module DeskApi
|
4
4
|
class Error
|
5
5
|
# Raised when desk.com returns the HTTP status code 404
|
6
|
-
class NotFound <
|
6
|
+
class NotFound < DeskApi::Error::ClientError
|
7
7
|
HTTP_STATUS_CODE = 404
|
8
8
|
end
|
9
9
|
end
|
@@ -1,9 +1,9 @@
|
|
1
|
-
require '
|
1
|
+
require 'desk_api/error/client_error'
|
2
2
|
|
3
|
-
module
|
3
|
+
module DeskApi
|
4
4
|
class Error
|
5
5
|
# Raised when desk.com returns the HTTP status code 429
|
6
|
-
class TooManyRequests <
|
6
|
+
class TooManyRequests < DeskApi::Error::ClientError
|
7
7
|
HTTP_STATUS_CODE = 429
|
8
8
|
end
|
9
9
|
end
|
@@ -1,9 +1,9 @@
|
|
1
|
-
require '
|
1
|
+
require 'desk_api/error/client_error'
|
2
2
|
|
3
|
-
module
|
3
|
+
module DeskApi
|
4
4
|
class Error
|
5
5
|
# Raised when desk.com returns the HTTP status code 401
|
6
|
-
class Unauthorized <
|
6
|
+
class Unauthorized < DeskApi::Error::ClientError
|
7
7
|
HTTP_STATUS_CODE = 401
|
8
8
|
end
|
9
9
|
end
|
@@ -1,9 +1,9 @@
|
|
1
|
-
require '
|
1
|
+
require 'desk_api/error/client_error'
|
2
2
|
|
3
|
-
module
|
3
|
+
module DeskApi
|
4
4
|
class Error
|
5
5
|
# Raised when desk.com returns the HTTP status code 422
|
6
|
-
class UnprocessableEntity <
|
6
|
+
class UnprocessableEntity < DeskApi::Error::ClientError
|
7
7
|
HTTP_STATUS_CODE = 422
|
8
8
|
end
|
9
9
|
end
|
@@ -1,9 +1,9 @@
|
|
1
|
-
require '
|
1
|
+
require 'desk_api/error/client_error'
|
2
2
|
|
3
|
-
module
|
3
|
+
module DeskApi
|
4
4
|
class Error
|
5
5
|
# Raised when desk.com returns the HTTP status code 415
|
6
|
-
class UnsupportedMediaType <
|
6
|
+
class UnsupportedMediaType < DeskApi::Error::ClientError
|
7
7
|
HTTP_STATUS_CODE = 415
|
8
8
|
end
|
9
9
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
module
|
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
|
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 '
|
2
|
-
require '
|
3
|
-
require '
|
4
|
-
require '
|
5
|
-
require '
|
6
|
-
require '
|
7
|
-
require '
|
8
|
-
require '
|
9
|
-
|
10
|
-
require '
|
11
|
-
|
12
|
-
module
|
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
|
15
|
-
include
|
16
|
-
include
|
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
|
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
|