desk_api 0.1.3 → 0.5.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.
- checksums.yaml +4 -4
- data/.travis.yml +1 -2
- data/Gemfile +0 -6
- data/README.md +38 -31
- data/desk_api.gemspec +1 -4
- data/lib/desk_api.rb +5 -7
- data/lib/desk_api/client.rb +44 -57
- data/lib/desk_api/configuration.rb +89 -95
- data/lib/desk_api/default.rb +51 -55
- data/lib/desk_api/error.rb +42 -44
- data/lib/desk_api/rate_limit.rb +20 -22
- data/lib/desk_api/resource.rb +142 -65
- data/lib/desk_api/version.rb +1 -1
- data/spec/cassettes/DeskApi_Client/using_Basic_Authentication/_delete/deletes_a_resource.yml +22 -22
- data/spec/cassettes/DeskApi_Client/using_Basic_Authentication/_get/fetches_resources.yml +26 -26
- data/spec/cassettes/DeskApi_Client/using_Basic_Authentication/_patch/updates_a_resource.yml +30 -30
- data/spec/cassettes/DeskApi_Client/using_Basic_Authentication/_post/creates_a_resource.yml +27 -27
- data/spec/cassettes/DeskApi_Client/using_OAuth/_delete/deletes_a_resource.yml +22 -22
- data/spec/cassettes/DeskApi_Client/using_OAuth/_get/fetches_resources.yml +31 -286
- data/spec/cassettes/DeskApi_Client/using_OAuth/_patch/updates_a_resource.yml +35 -35
- data/spec/cassettes/DeskApi_Client/using_OAuth/_post/creates_a_resource.yml +28 -28
- data/spec/cassettes/DeskApi_Error/_from_response/can_be_created_from_a_faraday_response.yml +22 -22
- data/spec/cassettes/DeskApi_Error/_from_response/uses_the_body_message_if_present.yml +22 -22
- data/spec/cassettes/DeskApi_Error/on_validation_error/allows_access_to_error_hash.yml +22 -22
- data/spec/cassettes/DeskApi_Resource/_by_url/finds_resources_by_url.yml +37 -286
- data/spec/cassettes/DeskApi_Resource/_create/creates_a_new_topic.yml +27 -27
- data/spec/cassettes/DeskApi_Resource/_create/throws_an_error_creating_a_user.yml +54 -0
- data/spec/cassettes/DeskApi_Resource/_delete/deletes_a_resource.yml +83 -79
- data/spec/cassettes/DeskApi_Resource/_delete/throws_an_error_deleting_a_non_deletalbe_resource.yml +78 -28
- data/spec/cassettes/DeskApi_Resource/_exec_/can_be_forced_to_reload.yml +34 -285
- data/spec/cassettes/DeskApi_Resource/_exec_/loads_the_current_resource.yml +34 -285
- data/spec/cassettes/DeskApi_Resource/_find/has_an_alias_by_id.yml +54 -0
- data/spec/cassettes/DeskApi_Resource/_find/loads_the_requested_resource.yml +54 -0
- data/spec/cassettes/DeskApi_Resource/_get_linked_resource/returns_linked_resources.yml +113 -0
- data/spec/cassettes/DeskApi_Resource/_get_linked_resource/returns_nil_if_link_is_nil.yml +62 -0
- data/spec/cassettes/DeskApi_Resource/_get_linked_resource/saves_the_linked_resource_instead_of_the_url.yml +113 -0
- data/spec/cassettes/DeskApi_Resource/_method_missing/loads_the_resource_to_find_a_suitable_method.yml +34 -285
- data/spec/cassettes/DeskApi_Resource/_method_missing/raises_an_error_if_method_does_not_exist.yml +34 -285
- data/spec/cassettes/DeskApi_Resource/_page/keeps_the_resource_as_loaded.yml +113 -0
- data/spec/cassettes/DeskApi_Resource/_page/returns_the_current_page_and_loads_if_page_not_defined.yml +62 -0
- data/spec/cassettes/DeskApi_Resource/_page/sets_the_resource_to_not_loaded.yml +113 -0
- data/spec/cassettes/DeskApi_Resource/_search/allows_searching_on_search_enabled_resources.yml +23 -23
- data/spec/cassettes/DeskApi_Resource/_search/throws_an_error_if_search_is_not_enabled.yml +52 -0
- data/spec/cassettes/DeskApi_Resource/_update/can_update_without_a_hash.yml +178 -58
- data/spec/cassettes/DeskApi_Resource/_update/throws_an_error_updating_a_user.yml +86 -28
- data/spec/cassettes/DeskApi_Resource/_update/updates_a_topic.yml +61 -57
- data/spec/desk_api/client_spec.rb +9 -16
- data/spec/desk_api/resource_spec.rb +118 -43
- data/spec/spec_helper.rb +1 -1
- metadata +24 -102
- data/lib/desk_api/action/create.rb +0 -15
- data/lib/desk_api/action/delete.rb +0 -9
- data/lib/desk_api/action/embeddable.rb +0 -47
- data/lib/desk_api/action/field.rb +0 -33
- data/lib/desk_api/action/link.rb +0 -29
- data/lib/desk_api/action/resource.rb +0 -14
- data/lib/desk_api/action/search.rb +0 -15
- data/lib/desk_api/action/update.rb +0 -17
- data/lib/desk_api/error/method_not_supported.rb +0 -9
- data/lib/desk_api/error/not_embeddable.rb +0 -8
- data/lib/desk_api/error/not_updateable.rb +0 -10
- data/lib/desk_api/error/parse_error.rb +0 -9
- data/lib/desk_api/resource/article.rb +0 -10
- data/lib/desk_api/resource/article_translation.rb +0 -8
- data/lib/desk_api/resource/attachment.rb +0 -8
- data/lib/desk_api/resource/case.rb +0 -11
- data/lib/desk_api/resource/company.rb +0 -8
- data/lib/desk_api/resource/customer.rb +0 -9
- data/lib/desk_api/resource/filter.rb +0 -7
- data/lib/desk_api/resource/inbound_mailbox.rb +0 -7
- data/lib/desk_api/resource/integration_url.rb +0 -9
- data/lib/desk_api/resource/job.rb +0 -9
- data/lib/desk_api/resource/label.rb +0 -9
- data/lib/desk_api/resource/macro.rb +0 -9
- data/lib/desk_api/resource/macro_action.rb +0 -7
- data/lib/desk_api/resource/note.rb +0 -7
- data/lib/desk_api/resource/page.rb +0 -64
- data/lib/desk_api/resource/reply.rb +0 -10
- data/lib/desk_api/resource/topic.rb +0 -9
- data/lib/desk_api/resource/topic_translation.rb +0 -9
- data/lib/desk_api/resource/user_preference.rb +0 -7
- data/lib/desk_api/resources.json +0 -76
- data/spec/cassettes/DeskApi_Client/_delete/deletes_a_resource.yml +0 -48
- data/spec/cassettes/DeskApi_Client/_get/fetches_resources.yml +0 -55
- data/spec/cassettes/DeskApi_Client/_patch/updates_a_resource.yml +0 -62
- data/spec/cassettes/DeskApi_Client/_post/creates_a_resource.yml +0 -58
- data/spec/cassettes/DeskApi_Resource_Case/once_closed/can_not_be_updated.yml +0 -124
- data/spec/cassettes/DeskApi_Resource_Page/_find/has_an_alias_by_id.yml +0 -54
- data/spec/cassettes/DeskApi_Resource_Page/_find/loads_the_requested_resource.yml +0 -54
- data/spec/cassettes/DeskApi_Resource_Page/_page/keeps_the_resource_as_loaded.yml +0 -113
- data/spec/cassettes/DeskApi_Resource_Page/_page/returns_the_current_page_and_loads_if_page_not_defined.yml +0 -313
- data/spec/cassettes/DeskApi_Resource_Page/_page/sets_the_resource_to_not_loaded.yml +0 -113
- data/spec/desk_api/resource/case_spec.rb +0 -28
- data/spec/desk_api/resource/page_spec.rb +0 -68
@@ -1,64 +0,0 @@
|
|
1
|
-
module DeskApi
|
2
|
-
class Resource
|
3
|
-
class Page < DeskApi::Resource
|
4
|
-
include Enumerable
|
5
|
-
|
6
|
-
[
|
7
|
-
:all?, :any?,
|
8
|
-
:collect, :each, :entries, :find, :find_all,
|
9
|
-
:find_index, :first, :first, :group_by, :last,
|
10
|
-
:map, :map!, :none?, :one?, :partition, :reduce,
|
11
|
-
:reject, :select, :sort, :sort_by, :taken, :zip
|
12
|
-
].each do |method|
|
13
|
-
define_method(method) do |*args, &block|
|
14
|
-
exec!.records.send(method, *args, &block)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
def search(params)
|
19
|
-
raise DeskApi::Error::MethodNotSupported unless base_class.respond_to?(:search)
|
20
|
-
url = Addressable::URI.parse(clean_base_url + '/search')
|
21
|
-
url.query_values = params
|
22
|
-
base_class.search(client, url.to_s).exec!
|
23
|
-
end
|
24
|
-
|
25
|
-
def create(params)
|
26
|
-
raise DeskApi::Error::MethodNotSupported unless base_class.respond_to?(:create)
|
27
|
-
base_class.create(client, clean_base_url, params)
|
28
|
-
end
|
29
|
-
|
30
|
-
[:page, :per_page].each do |method|
|
31
|
-
define_method(method) do |value = nil|
|
32
|
-
if not value
|
33
|
-
self.exec! if self.query_params_include?(method.to_s) == nil
|
34
|
-
return self.query_params_include?(method.to_s).to_i
|
35
|
-
end
|
36
|
-
self.query_params = Hash[method.to_s, value.to_s]
|
37
|
-
self
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
def find(id, options = {})
|
42
|
-
res = base_class.new(client, Hashie::Mash.new({ _links: { self: { href: "#{clean_base_url}/#{id}" }}}))
|
43
|
-
if options[:embed]
|
44
|
-
options[:embed] = [options[:embed]] unless options[:embed].kind_of?(Array)
|
45
|
-
res.embed(*options[:embed])
|
46
|
-
end
|
47
|
-
res.exec!
|
48
|
-
end
|
49
|
-
alias_method :by_id, :find
|
50
|
-
|
51
|
-
protected
|
52
|
-
|
53
|
-
attr_reader :records
|
54
|
-
|
55
|
-
def clean_base_url
|
56
|
-
Addressable::URI.parse(@_links.self.href).path.gsub(/\/search$/, '')
|
57
|
-
end
|
58
|
-
|
59
|
-
def base_class
|
60
|
-
resource(clean_base_url[/\w+$/].singularize)
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
data/lib/desk_api/resources.json
DELETED
@@ -1,76 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"_links": {
|
3
|
-
"articles": {
|
4
|
-
"href": "/api/v2/articles",
|
5
|
-
"class": "page"
|
6
|
-
},
|
7
|
-
"cases": {
|
8
|
-
"href": "/api/v2/cases",
|
9
|
-
"class": "page"
|
10
|
-
},
|
11
|
-
"companies": {
|
12
|
-
"href": "/api/v2/companies",
|
13
|
-
"class": "page"
|
14
|
-
},
|
15
|
-
"custom_fields": {
|
16
|
-
"href": "/api/v2/custom_fields",
|
17
|
-
"class": "page"
|
18
|
-
},
|
19
|
-
"customers": {
|
20
|
-
"href": "/api/v2/customers",
|
21
|
-
"class": "page"
|
22
|
-
},
|
23
|
-
"filters": {
|
24
|
-
"href": "/api/v2/filters",
|
25
|
-
"class": "page"
|
26
|
-
},
|
27
|
-
"groups": {
|
28
|
-
"href": "/api/v2/groups",
|
29
|
-
"class": "page"
|
30
|
-
},
|
31
|
-
"inbound_mailboxes": {
|
32
|
-
"href": "/api/v2/inbound_mailboxes",
|
33
|
-
"class": "page"
|
34
|
-
},
|
35
|
-
"integration_urls": {
|
36
|
-
"href": "/api/v2/integration_urls",
|
37
|
-
"class": "page"
|
38
|
-
},
|
39
|
-
"jobs": {
|
40
|
-
"href": "/api/v2/jobs",
|
41
|
-
"class": "page"
|
42
|
-
},
|
43
|
-
"labels": {
|
44
|
-
"href": "/api/v2/labels",
|
45
|
-
"class": "page"
|
46
|
-
},
|
47
|
-
"macros": {
|
48
|
-
"href": "/api/v2/macros",
|
49
|
-
"class": "page"
|
50
|
-
},
|
51
|
-
"rules": {
|
52
|
-
"href": "/api/v2/rules",
|
53
|
-
"class": "page"
|
54
|
-
},
|
55
|
-
"site_settings": {
|
56
|
-
"href": "/api/v2/site_settings",
|
57
|
-
"class": "page"
|
58
|
-
},
|
59
|
-
"system_message": {
|
60
|
-
"href": "/api/v2/system_message",
|
61
|
-
"class": "system_message"
|
62
|
-
},
|
63
|
-
"topics": {
|
64
|
-
"href": "/api/v2/topics",
|
65
|
-
"class": "page"
|
66
|
-
},
|
67
|
-
"twitter_accounts": {
|
68
|
-
"href": "/api/v2/twitter_accounts",
|
69
|
-
"class": "page"
|
70
|
-
},
|
71
|
-
"users": {
|
72
|
-
"href": "/api/v2/users",
|
73
|
-
"class": "page"
|
74
|
-
}
|
75
|
-
}
|
76
|
-
}
|
@@ -1,48 +0,0 @@
|
|
1
|
-
---
|
2
|
-
http_interactions:
|
3
|
-
- request:
|
4
|
-
method: delete
|
5
|
-
uri: https://devel.desk.com/api/v2/topics/558245
|
6
|
-
body:
|
7
|
-
encoding: US-ASCII
|
8
|
-
string: ''
|
9
|
-
headers:
|
10
|
-
Accept:
|
11
|
-
- application/json
|
12
|
-
User-Agent:
|
13
|
-
- desk.com Ruby Gem v0.1.0
|
14
|
-
response:
|
15
|
-
status:
|
16
|
-
code: 204
|
17
|
-
message:
|
18
|
-
headers:
|
19
|
-
Accept-Ranges:
|
20
|
-
- bytes
|
21
|
-
Cache-Control:
|
22
|
-
- no-cache
|
23
|
-
Date:
|
24
|
-
- Mon, 19 Aug 2013 23:53:31 GMT
|
25
|
-
Status:
|
26
|
-
- 204 No Content
|
27
|
-
Vary:
|
28
|
-
- X-AppVersion
|
29
|
-
X-AppVersion:
|
30
|
-
- '7.9'
|
31
|
-
X-Frame-Options:
|
32
|
-
- SAMEORIGIN
|
33
|
-
X-Rate-Limit-Limit:
|
34
|
-
- '60'
|
35
|
-
X-Rate-Limit-Remaining:
|
36
|
-
- '59'
|
37
|
-
X-Rate-Limit-Reset:
|
38
|
-
- '29'
|
39
|
-
X-Request-Id:
|
40
|
-
- d699571cf1eeca0714f02b9ee61bcbd8
|
41
|
-
Connection:
|
42
|
-
- keep-alive
|
43
|
-
body:
|
44
|
-
encoding: UTF-8
|
45
|
-
string: ''
|
46
|
-
http_version:
|
47
|
-
recorded_at: Mon, 19 Aug 2013 23:53:31 GMT
|
48
|
-
recorded_with: VCR 2.5.0
|
@@ -1,55 +0,0 @@
|
|
1
|
-
---
|
2
|
-
http_interactions:
|
3
|
-
- request:
|
4
|
-
method: get
|
5
|
-
uri: https://devel.desk.com/api/v2/cases/3014
|
6
|
-
body:
|
7
|
-
encoding: US-ASCII
|
8
|
-
string: ''
|
9
|
-
headers:
|
10
|
-
Accept:
|
11
|
-
- application/json
|
12
|
-
User-Agent:
|
13
|
-
- desk.com Ruby Gem v0.1.0
|
14
|
-
response:
|
15
|
-
status:
|
16
|
-
code: 200
|
17
|
-
message:
|
18
|
-
headers:
|
19
|
-
Accept-Ranges:
|
20
|
-
- bytes
|
21
|
-
Cache-Control:
|
22
|
-
- must-revalidate, private, max-age=0
|
23
|
-
Content-Type:
|
24
|
-
- application/json; charset=utf-8
|
25
|
-
Date:
|
26
|
-
- Mon, 19 Aug 2013 23:51:35 GMT
|
27
|
-
ETag:
|
28
|
-
- '"31cb249bf0be971be83b891b995e19f4"'
|
29
|
-
Status:
|
30
|
-
- 200 OK
|
31
|
-
Vary:
|
32
|
-
- X-AppVersion
|
33
|
-
X-AppVersion:
|
34
|
-
- '7.9'
|
35
|
-
X-Frame-Options:
|
36
|
-
- SAMEORIGIN
|
37
|
-
X-Rate-Limit-Limit:
|
38
|
-
- '60'
|
39
|
-
X-Rate-Limit-Remaining:
|
40
|
-
- '36'
|
41
|
-
X-Rate-Limit-Reset:
|
42
|
-
- '25'
|
43
|
-
X-Request-Id:
|
44
|
-
- c57375cb946f6c499ce01ecdc8e35527
|
45
|
-
Content-Length:
|
46
|
-
- '942'
|
47
|
-
Connection:
|
48
|
-
- keep-alive
|
49
|
-
body:
|
50
|
-
encoding: UTF-8
|
51
|
-
string: '{"external_id":"","subject":"Testing Quick Case","priority":8,"locked_until":null,"description":"Some
|
52
|
-
additional Description regarding this email.","status":"resolved","type":"email","labels":[],"language":"de","active_at":"2013-05-10T19:08:27Z","created_at":"2013-05-10T19:08:10Z","updated_at":"2013-05-10T19:08:10Z","received_at":null,"custom_fields":{"my_new_custom_field":null,"my_new_number_field":null,"my_new_date_field":null,"my_new_boolean_field":null,"my_new_list_field":null},"_links":{"self":{"href":"/api/v2/cases/3014","class":"case"},"message":{"href":"/api/v2/cases/3014/message","class":"email"},"customer":{"href":"/api/v2/customers/37823480","class":"customer"},"assigned_user":null,"assigned_group":null,"locked_by":null,"replies":{"href":"/api/v2/cases/3014/replies","class":"reply"},"notes":{"href":"/api/v2/cases/3014/notes","class":"note"},"attachments":{"href":"/api/v2/cases/3014/attachments","class":"attachment"}}}'
|
53
|
-
http_version:
|
54
|
-
recorded_at: Mon, 19 Aug 2013 23:51:35 GMT
|
55
|
-
recorded_with: VCR 2.5.0
|