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.
Files changed (94) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -2
  3. data/Gemfile +0 -6
  4. data/README.md +38 -31
  5. data/desk_api.gemspec +1 -4
  6. data/lib/desk_api.rb +5 -7
  7. data/lib/desk_api/client.rb +44 -57
  8. data/lib/desk_api/configuration.rb +89 -95
  9. data/lib/desk_api/default.rb +51 -55
  10. data/lib/desk_api/error.rb +42 -44
  11. data/lib/desk_api/rate_limit.rb +20 -22
  12. data/lib/desk_api/resource.rb +142 -65
  13. data/lib/desk_api/version.rb +1 -1
  14. data/spec/cassettes/DeskApi_Client/using_Basic_Authentication/_delete/deletes_a_resource.yml +22 -22
  15. data/spec/cassettes/DeskApi_Client/using_Basic_Authentication/_get/fetches_resources.yml +26 -26
  16. data/spec/cassettes/DeskApi_Client/using_Basic_Authentication/_patch/updates_a_resource.yml +30 -30
  17. data/spec/cassettes/DeskApi_Client/using_Basic_Authentication/_post/creates_a_resource.yml +27 -27
  18. data/spec/cassettes/DeskApi_Client/using_OAuth/_delete/deletes_a_resource.yml +22 -22
  19. data/spec/cassettes/DeskApi_Client/using_OAuth/_get/fetches_resources.yml +31 -286
  20. data/spec/cassettes/DeskApi_Client/using_OAuth/_patch/updates_a_resource.yml +35 -35
  21. data/spec/cassettes/DeskApi_Client/using_OAuth/_post/creates_a_resource.yml +28 -28
  22. data/spec/cassettes/DeskApi_Error/_from_response/can_be_created_from_a_faraday_response.yml +22 -22
  23. data/spec/cassettes/DeskApi_Error/_from_response/uses_the_body_message_if_present.yml +22 -22
  24. data/spec/cassettes/DeskApi_Error/on_validation_error/allows_access_to_error_hash.yml +22 -22
  25. data/spec/cassettes/DeskApi_Resource/_by_url/finds_resources_by_url.yml +37 -286
  26. data/spec/cassettes/DeskApi_Resource/_create/creates_a_new_topic.yml +27 -27
  27. data/spec/cassettes/DeskApi_Resource/_create/throws_an_error_creating_a_user.yml +54 -0
  28. data/spec/cassettes/DeskApi_Resource/_delete/deletes_a_resource.yml +83 -79
  29. data/spec/cassettes/DeskApi_Resource/_delete/throws_an_error_deleting_a_non_deletalbe_resource.yml +78 -28
  30. data/spec/cassettes/DeskApi_Resource/_exec_/can_be_forced_to_reload.yml +34 -285
  31. data/spec/cassettes/DeskApi_Resource/_exec_/loads_the_current_resource.yml +34 -285
  32. data/spec/cassettes/DeskApi_Resource/_find/has_an_alias_by_id.yml +54 -0
  33. data/spec/cassettes/DeskApi_Resource/_find/loads_the_requested_resource.yml +54 -0
  34. data/spec/cassettes/DeskApi_Resource/_get_linked_resource/returns_linked_resources.yml +113 -0
  35. data/spec/cassettes/DeskApi_Resource/_get_linked_resource/returns_nil_if_link_is_nil.yml +62 -0
  36. data/spec/cassettes/DeskApi_Resource/_get_linked_resource/saves_the_linked_resource_instead_of_the_url.yml +113 -0
  37. data/spec/cassettes/DeskApi_Resource/_method_missing/loads_the_resource_to_find_a_suitable_method.yml +34 -285
  38. data/spec/cassettes/DeskApi_Resource/_method_missing/raises_an_error_if_method_does_not_exist.yml +34 -285
  39. data/spec/cassettes/DeskApi_Resource/_page/keeps_the_resource_as_loaded.yml +113 -0
  40. data/spec/cassettes/DeskApi_Resource/_page/returns_the_current_page_and_loads_if_page_not_defined.yml +62 -0
  41. data/spec/cassettes/DeskApi_Resource/_page/sets_the_resource_to_not_loaded.yml +113 -0
  42. data/spec/cassettes/DeskApi_Resource/_search/allows_searching_on_search_enabled_resources.yml +23 -23
  43. data/spec/cassettes/DeskApi_Resource/_search/throws_an_error_if_search_is_not_enabled.yml +52 -0
  44. data/spec/cassettes/DeskApi_Resource/_update/can_update_without_a_hash.yml +178 -58
  45. data/spec/cassettes/DeskApi_Resource/_update/throws_an_error_updating_a_user.yml +86 -28
  46. data/spec/cassettes/DeskApi_Resource/_update/updates_a_topic.yml +61 -57
  47. data/spec/desk_api/client_spec.rb +9 -16
  48. data/spec/desk_api/resource_spec.rb +118 -43
  49. data/spec/spec_helper.rb +1 -1
  50. metadata +24 -102
  51. data/lib/desk_api/action/create.rb +0 -15
  52. data/lib/desk_api/action/delete.rb +0 -9
  53. data/lib/desk_api/action/embeddable.rb +0 -47
  54. data/lib/desk_api/action/field.rb +0 -33
  55. data/lib/desk_api/action/link.rb +0 -29
  56. data/lib/desk_api/action/resource.rb +0 -14
  57. data/lib/desk_api/action/search.rb +0 -15
  58. data/lib/desk_api/action/update.rb +0 -17
  59. data/lib/desk_api/error/method_not_supported.rb +0 -9
  60. data/lib/desk_api/error/not_embeddable.rb +0 -8
  61. data/lib/desk_api/error/not_updateable.rb +0 -10
  62. data/lib/desk_api/error/parse_error.rb +0 -9
  63. data/lib/desk_api/resource/article.rb +0 -10
  64. data/lib/desk_api/resource/article_translation.rb +0 -8
  65. data/lib/desk_api/resource/attachment.rb +0 -8
  66. data/lib/desk_api/resource/case.rb +0 -11
  67. data/lib/desk_api/resource/company.rb +0 -8
  68. data/lib/desk_api/resource/customer.rb +0 -9
  69. data/lib/desk_api/resource/filter.rb +0 -7
  70. data/lib/desk_api/resource/inbound_mailbox.rb +0 -7
  71. data/lib/desk_api/resource/integration_url.rb +0 -9
  72. data/lib/desk_api/resource/job.rb +0 -9
  73. data/lib/desk_api/resource/label.rb +0 -9
  74. data/lib/desk_api/resource/macro.rb +0 -9
  75. data/lib/desk_api/resource/macro_action.rb +0 -7
  76. data/lib/desk_api/resource/note.rb +0 -7
  77. data/lib/desk_api/resource/page.rb +0 -64
  78. data/lib/desk_api/resource/reply.rb +0 -10
  79. data/lib/desk_api/resource/topic.rb +0 -9
  80. data/lib/desk_api/resource/topic_translation.rb +0 -9
  81. data/lib/desk_api/resource/user_preference.rb +0 -7
  82. data/lib/desk_api/resources.json +0 -76
  83. data/spec/cassettes/DeskApi_Client/_delete/deletes_a_resource.yml +0 -48
  84. data/spec/cassettes/DeskApi_Client/_get/fetches_resources.yml +0 -55
  85. data/spec/cassettes/DeskApi_Client/_patch/updates_a_resource.yml +0 -62
  86. data/spec/cassettes/DeskApi_Client/_post/creates_a_resource.yml +0 -58
  87. data/spec/cassettes/DeskApi_Resource_Case/once_closed/can_not_be_updated.yml +0 -124
  88. data/spec/cassettes/DeskApi_Resource_Page/_find/has_an_alias_by_id.yml +0 -54
  89. data/spec/cassettes/DeskApi_Resource_Page/_find/loads_the_requested_resource.yml +0 -54
  90. data/spec/cassettes/DeskApi_Resource_Page/_page/keeps_the_resource_as_loaded.yml +0 -113
  91. data/spec/cassettes/DeskApi_Resource_Page/_page/returns_the_current_page_and_loads_if_page_not_defined.yml +0 -313
  92. data/spec/cassettes/DeskApi_Resource_Page/_page/sets_the_resource_to_not_loaded.yml +0 -113
  93. data/spec/desk_api/resource/case_spec.rb +0 -28
  94. data/spec/desk_api/resource/page_spec.rb +0 -68
@@ -35,7 +35,7 @@ rescue LoadError
35
35
  end
36
36
 
37
37
  VCR.configure do |config|
38
- config.hook_into :typhoeus, :faraday
38
+ config.hook_into :faraday
39
39
  config.cassette_library_dir = 'spec/cassettes'
40
40
  config.configure_rspec_metadata!
41
41
  config.before_record { |i| i.request.headers.delete('Authorization') }
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: desk_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Stachl
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-07 00:00:00.000000000 Z
11
+ date: 2013-12-12 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: multi_json
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - '>='
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - '>='
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: faraday
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -66,20 +52,6 @@ dependencies:
66
52
  - - '>='
67
53
  - !ruby/object:Gem::Version
68
54
  version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: typhoeus
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - '>='
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :runtime
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - '>='
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
55
  - !ruby/object:Gem::Dependency
84
56
  name: addressable
85
57
  requirement: !ruby/object:Gem::Requirement
@@ -94,20 +66,6 @@ dependencies:
94
66
  - - '>='
95
67
  - !ruby/object:Gem::Version
96
68
  version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: activesupport
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - '>='
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :runtime
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - '>='
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
69
  - !ruby/object:Gem::Dependency
112
70
  name: hashie
113
71
  requirement: !ruby/object:Gem::Requirement
@@ -195,7 +153,7 @@ dependencies:
195
153
  description: This is a lightweight, flexible ruby gem to interact with the desk.com
196
154
  REST API. It allows to create, read and delete resources available through the API
197
155
  endpoints. It can be used either with OAuth or HTTP Basic Authentication.
198
- email: tom@desk.com
156
+ email: thomas@desk.com
199
157
  executables: []
200
158
  extensions: []
201
159
  extra_rdoc_files:
@@ -214,14 +172,6 @@ files:
214
172
  - desk_api.gemspec
215
173
  - lib/desk.rb
216
174
  - lib/desk_api.rb
217
- - lib/desk_api/action/create.rb
218
- - lib/desk_api/action/delete.rb
219
- - lib/desk_api/action/embeddable.rb
220
- - lib/desk_api/action/field.rb
221
- - lib/desk_api/action/link.rb
222
- - lib/desk_api/action/resource.rb
223
- - lib/desk_api/action/search.rb
224
- - lib/desk_api/action/update.rb
225
175
  - lib/desk_api/client.rb
226
176
  - lib/desk_api/configuration.rb
227
177
  - lib/desk_api/default.rb
@@ -235,12 +185,8 @@ files:
235
185
  - lib/desk_api/error/gateway_timeout.rb
236
186
  - lib/desk_api/error/internal_server_error.rb
237
187
  - lib/desk_api/error/method_not_allowed.rb
238
- - lib/desk_api/error/method_not_supported.rb
239
188
  - lib/desk_api/error/not_acceptable.rb
240
- - lib/desk_api/error/not_embeddable.rb
241
189
  - lib/desk_api/error/not_found.rb
242
- - lib/desk_api/error/not_updateable.rb
243
- - lib/desk_api/error/parse_error.rb
244
190
  - lib/desk_api/error/parser_error.rb
245
191
  - lib/desk_api/error/server_error.rb
246
192
  - lib/desk_api/error/service_unavailable.rb
@@ -251,32 +197,8 @@ files:
251
197
  - lib/desk_api/rate_limit.rb
252
198
  - lib/desk_api/request/retry.rb
253
199
  - lib/desk_api/resource.rb
254
- - lib/desk_api/resource/article.rb
255
- - lib/desk_api/resource/article_translation.rb
256
- - lib/desk_api/resource/attachment.rb
257
- - lib/desk_api/resource/case.rb
258
- - lib/desk_api/resource/company.rb
259
- - lib/desk_api/resource/customer.rb
260
- - lib/desk_api/resource/filter.rb
261
- - lib/desk_api/resource/inbound_mailbox.rb
262
- - lib/desk_api/resource/integration_url.rb
263
- - lib/desk_api/resource/job.rb
264
- - lib/desk_api/resource/label.rb
265
- - lib/desk_api/resource/macro.rb
266
- - lib/desk_api/resource/macro_action.rb
267
- - lib/desk_api/resource/note.rb
268
- - lib/desk_api/resource/page.rb
269
- - lib/desk_api/resource/reply.rb
270
- - lib/desk_api/resource/topic.rb
271
- - lib/desk_api/resource/topic_translation.rb
272
- - lib/desk_api/resource/user_preference.rb
273
- - lib/desk_api/resources.json
274
200
  - lib/desk_api/response/raise_error.rb
275
201
  - lib/desk_api/version.rb
276
- - spec/cassettes/DeskApi_Client/_delete/deletes_a_resource.yml
277
- - spec/cassettes/DeskApi_Client/_get/fetches_resources.yml
278
- - spec/cassettes/DeskApi_Client/_patch/updates_a_resource.yml
279
- - spec/cassettes/DeskApi_Client/_post/creates_a_resource.yml
280
202
  - spec/cassettes/DeskApi_Client/using_Basic_Authentication/_delete/deletes_a_resource.yml
281
203
  - spec/cassettes/DeskApi_Client/using_Basic_Authentication/_get/fetches_resources.yml
282
204
  - spec/cassettes/DeskApi_Client/using_Basic_Authentication/_patch/updates_a_resource.yml
@@ -290,30 +212,32 @@ files:
290
212
  - spec/cassettes/DeskApi_Error/on_validation_error/allows_access_to_error_hash.yml
291
213
  - spec/cassettes/DeskApi_Resource/_by_url/finds_resources_by_url.yml
292
214
  - spec/cassettes/DeskApi_Resource/_create/creates_a_new_topic.yml
215
+ - spec/cassettes/DeskApi_Resource/_create/throws_an_error_creating_a_user.yml
293
216
  - spec/cassettes/DeskApi_Resource/_delete/deletes_a_resource.yml
294
217
  - spec/cassettes/DeskApi_Resource/_delete/throws_an_error_deleting_a_non_deletalbe_resource.yml
295
218
  - spec/cassettes/DeskApi_Resource/_exec_/can_be_forced_to_reload.yml
296
219
  - spec/cassettes/DeskApi_Resource/_exec_/loads_the_current_resource.yml
220
+ - spec/cassettes/DeskApi_Resource/_find/has_an_alias_by_id.yml
221
+ - spec/cassettes/DeskApi_Resource/_find/loads_the_requested_resource.yml
222
+ - spec/cassettes/DeskApi_Resource/_get_linked_resource/returns_linked_resources.yml
223
+ - spec/cassettes/DeskApi_Resource/_get_linked_resource/returns_nil_if_link_is_nil.yml
224
+ - spec/cassettes/DeskApi_Resource/_get_linked_resource/saves_the_linked_resource_instead_of_the_url.yml
297
225
  - spec/cassettes/DeskApi_Resource/_method_missing/loads_the_resource_to_find_a_suitable_method.yml
298
226
  - spec/cassettes/DeskApi_Resource/_method_missing/raises_an_error_if_method_does_not_exist.yml
227
+ - spec/cassettes/DeskApi_Resource/_page/keeps_the_resource_as_loaded.yml
228
+ - spec/cassettes/DeskApi_Resource/_page/returns_the_current_page_and_loads_if_page_not_defined.yml
229
+ - spec/cassettes/DeskApi_Resource/_page/sets_the_resource_to_not_loaded.yml
299
230
  - spec/cassettes/DeskApi_Resource/_search/allows_searching_on_search_enabled_resources.yml
231
+ - spec/cassettes/DeskApi_Resource/_search/throws_an_error_if_search_is_not_enabled.yml
300
232
  - spec/cassettes/DeskApi_Resource/_update/can_update_without_a_hash.yml
301
233
  - spec/cassettes/DeskApi_Resource/_update/throws_an_error_updating_a_user.yml
302
234
  - spec/cassettes/DeskApi_Resource/_update/updates_a_topic.yml
303
- - spec/cassettes/DeskApi_Resource_Case/once_closed/can_not_be_updated.yml
304
- - spec/cassettes/DeskApi_Resource_Page/_find/has_an_alias_by_id.yml
305
- - spec/cassettes/DeskApi_Resource_Page/_find/loads_the_requested_resource.yml
306
- - spec/cassettes/DeskApi_Resource_Page/_page/keeps_the_resource_as_loaded.yml
307
- - spec/cassettes/DeskApi_Resource_Page/_page/returns_the_current_page_and_loads_if_page_not_defined.yml
308
- - spec/cassettes/DeskApi_Resource_Page/_page/sets_the_resource_to_not_loaded.yml
309
235
  - spec/desk_api/client_spec.rb
310
236
  - spec/desk_api/configuration_spec.rb
311
237
  - spec/desk_api/default_spec.rb
312
238
  - spec/desk_api/error_spec.rb
313
239
  - spec/desk_api/rate_limit_spec.rb
314
240
  - spec/desk_api/request/retry_spec.rb
315
- - spec/desk_api/resource/case_spec.rb
316
- - spec/desk_api/resource/page_spec.rb
317
241
  - spec/desk_api/resource_spec.rb
318
242
  - spec/desk_api_spec.rb
319
243
  - spec/spec_helper.rb
@@ -342,15 +266,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
342
266
  version: '0'
343
267
  requirements: []
344
268
  rubyforge_project:
345
- rubygems_version: 2.0.3
269
+ rubygems_version: 2.0.6
346
270
  signing_key:
347
271
  specification_version: 4
348
272
  summary: A lightweight, flexible wrapper for the desk.com REST API.
349
273
  test_files:
350
- - spec/cassettes/DeskApi_Client/_delete/deletes_a_resource.yml
351
- - spec/cassettes/DeskApi_Client/_get/fetches_resources.yml
352
- - spec/cassettes/DeskApi_Client/_patch/updates_a_resource.yml
353
- - spec/cassettes/DeskApi_Client/_post/creates_a_resource.yml
354
274
  - spec/cassettes/DeskApi_Client/using_Basic_Authentication/_delete/deletes_a_resource.yml
355
275
  - spec/cassettes/DeskApi_Client/using_Basic_Authentication/_get/fetches_resources.yml
356
276
  - spec/cassettes/DeskApi_Client/using_Basic_Authentication/_patch/updates_a_resource.yml
@@ -364,30 +284,32 @@ test_files:
364
284
  - spec/cassettes/DeskApi_Error/on_validation_error/allows_access_to_error_hash.yml
365
285
  - spec/cassettes/DeskApi_Resource/_by_url/finds_resources_by_url.yml
366
286
  - spec/cassettes/DeskApi_Resource/_create/creates_a_new_topic.yml
287
+ - spec/cassettes/DeskApi_Resource/_create/throws_an_error_creating_a_user.yml
367
288
  - spec/cassettes/DeskApi_Resource/_delete/deletes_a_resource.yml
368
289
  - spec/cassettes/DeskApi_Resource/_delete/throws_an_error_deleting_a_non_deletalbe_resource.yml
369
290
  - spec/cassettes/DeskApi_Resource/_exec_/can_be_forced_to_reload.yml
370
291
  - spec/cassettes/DeskApi_Resource/_exec_/loads_the_current_resource.yml
292
+ - spec/cassettes/DeskApi_Resource/_find/has_an_alias_by_id.yml
293
+ - spec/cassettes/DeskApi_Resource/_find/loads_the_requested_resource.yml
294
+ - spec/cassettes/DeskApi_Resource/_get_linked_resource/returns_linked_resources.yml
295
+ - spec/cassettes/DeskApi_Resource/_get_linked_resource/returns_nil_if_link_is_nil.yml
296
+ - spec/cassettes/DeskApi_Resource/_get_linked_resource/saves_the_linked_resource_instead_of_the_url.yml
371
297
  - spec/cassettes/DeskApi_Resource/_method_missing/loads_the_resource_to_find_a_suitable_method.yml
372
298
  - spec/cassettes/DeskApi_Resource/_method_missing/raises_an_error_if_method_does_not_exist.yml
299
+ - spec/cassettes/DeskApi_Resource/_page/keeps_the_resource_as_loaded.yml
300
+ - spec/cassettes/DeskApi_Resource/_page/returns_the_current_page_and_loads_if_page_not_defined.yml
301
+ - spec/cassettes/DeskApi_Resource/_page/sets_the_resource_to_not_loaded.yml
373
302
  - spec/cassettes/DeskApi_Resource/_search/allows_searching_on_search_enabled_resources.yml
303
+ - spec/cassettes/DeskApi_Resource/_search/throws_an_error_if_search_is_not_enabled.yml
374
304
  - spec/cassettes/DeskApi_Resource/_update/can_update_without_a_hash.yml
375
305
  - spec/cassettes/DeskApi_Resource/_update/throws_an_error_updating_a_user.yml
376
306
  - spec/cassettes/DeskApi_Resource/_update/updates_a_topic.yml
377
- - spec/cassettes/DeskApi_Resource_Case/once_closed/can_not_be_updated.yml
378
- - spec/cassettes/DeskApi_Resource_Page/_find/has_an_alias_by_id.yml
379
- - spec/cassettes/DeskApi_Resource_Page/_find/loads_the_requested_resource.yml
380
- - spec/cassettes/DeskApi_Resource_Page/_page/keeps_the_resource_as_loaded.yml
381
- - spec/cassettes/DeskApi_Resource_Page/_page/returns_the_current_page_and_loads_if_page_not_defined.yml
382
- - spec/cassettes/DeskApi_Resource_Page/_page/sets_the_resource_to_not_loaded.yml
383
307
  - spec/desk_api/client_spec.rb
384
308
  - spec/desk_api/configuration_spec.rb
385
309
  - spec/desk_api/default_spec.rb
386
310
  - spec/desk_api/error_spec.rb
387
311
  - spec/desk_api/rate_limit_spec.rb
388
312
  - spec/desk_api/request/retry_spec.rb
389
- - spec/desk_api/resource/case_spec.rb
390
- - spec/desk_api/resource/page_spec.rb
391
313
  - spec/desk_api/resource_spec.rb
392
314
  - spec/desk_api_spec.rb
393
315
  - spec/spec_helper.rb
@@ -1,15 +0,0 @@
1
- module DeskApi
2
- module Action
3
- module Create
4
- module ClassMethods
5
- def create(client, path, params)
6
- self.new(client, client.post(path, params).body)
7
- end
8
- end
9
-
10
- def self.included(base)
11
- base.extend(ClassMethods)
12
- end
13
- end
14
- end
15
- end
@@ -1,9 +0,0 @@
1
- module DeskApi
2
- module Action
3
- module Delete
4
- def delete
5
- client.delete(@_links.self.href).status === 204
6
- end
7
- end
8
- end
9
- end
@@ -1,47 +0,0 @@
1
- require 'desk_api/error/not_embeddable'
2
-
3
- module DeskApi
4
- module Action
5
- module Embeddable
6
- attr_reader :embedded
7
-
8
- def embed(*embedds)
9
- # make sure we don't try to embed anything that's not defined
10
- # add it to the query
11
- self.query_params = { embed: embedds.each{ |embed|
12
- unless self.base_class.embeddable?(embed)
13
- raise DeskApi::Error::NotEmbeddable.new("`#{embed.to_s}' can not be embedded.")
14
- end
15
- }.join(',') }
16
- # return self
17
- self
18
- end
19
-
20
- def setup_embedded(embedds)
21
- if embedds.entries?
22
- @records = embedds['entries'].map do |record|
23
- resource(record._links.self['class']).new(client, record, true)
24
- end
25
- else
26
- embedds.each_pair do |key, definition|
27
- @_links[key]['resource'] = resource(definition['class']).new @client, definition, true
28
- end
29
- end
30
- end
31
-
32
- module ClassMethods
33
- def embeddable(*embeddables)
34
- @embeddables = embeddables
35
- end
36
-
37
- def embeddable?(key)
38
- (@embeddables || []).include?(key.to_sym)
39
- end
40
- end
41
-
42
- def self.included(base)
43
- base.extend(ClassMethods)
44
- end
45
- end
46
- end
47
- end
@@ -1,33 +0,0 @@
1
- module DeskApi
2
- module Action
3
- module Field
4
- private
5
- # Handles the _links part of the HAL response and sets up the associations.
6
- # It is used by the client to setup the initial resources like `users`, `cases` and
7
- # so on, as well as by the resource object itself for sub resources (`cases.replies`).
8
- #
9
- # @api private
10
- def setup_fields(definition)
11
- definition.each_pair do |key, value|
12
- next if key[0] == '_'
13
- # set the instance variable
14
- instance_variable_set(:"@#{key}", value)
15
- # create getter
16
- (class << self; self; end).send(:define_method, "#{key}") do
17
- return @_changed[key] if kind_of?(DeskApi::Action::Update) and @_changed[key]
18
- instance_variable_get(:"@#{key}")
19
- end
20
- # create setter
21
- if kind_of?(DeskApi::Action::Update)
22
- (class << self; self; end).send(:define_method, "#{key}=") do |value|
23
- if instance_variable_get(:"@#{key}") != value
24
- @_changed[key] = value
25
- end
26
- self
27
- end
28
- end
29
- end
30
- end
31
- end
32
- end
33
- end
@@ -1,29 +0,0 @@
1
- module DeskApi
2
- module Action
3
- module Link
4
- private
5
- attr_accessor :_links
6
- # Handles the _links part of the HAL response and sets up the associations.
7
- # It is used by the client to setup the initial resources like `users`, `cases` and
8
- # so on, as well as by the resource object itself for sub resources (`cases.replies`).
9
- #
10
- # @api private
11
- def setup_links(links)
12
- @_links = links
13
- @_links.each_pair do |method, definition|
14
- (class << self; self; end).send(:define_method, ['first', 'last', 'next', 'previous'].include?(method) ? "#{method}_page" : method) do
15
- return nil unless definition
16
- # return the stored resource if we already loaded it
17
- return @_links[method]['resource'] if @_links[method].key?('resource')
18
- # this is a really ugly hack but necessary for sub resources which aren't declared consistently
19
- definition['class'] = 'page' if method.pluralize == method
20
- # get the client
21
- client = self.instance_of?(DeskApi::Client) ? self : @client
22
- # create the new resource
23
- @_links[method]['resource'] = resource(definition['class']).new client, Hashie::Mash.new({ _links: { self: definition } })
24
- end
25
- end
26
- end
27
- end
28
- end
29
- end
@@ -1,14 +0,0 @@
1
- module DeskApi
2
- module Action
3
- module Resource
4
- private
5
- def resource(name)
6
- require "desk_api/resource/#{name}"
7
- "DeskApi::Resource::#{name.classify}".constantize
8
- rescue NameError
9
- rescue LoadError
10
- DeskApi::Resource
11
- end
12
- end
13
- end
14
- end
@@ -1,15 +0,0 @@
1
- module DeskApi
2
- module Action
3
- module Search
4
- module ClassMethods
5
- def search(client, path)
6
- client.send(:resource, 'page').new(client, Hashie::Mash.new({ _links: { self: { href: path }}}))
7
- end
8
- end
9
-
10
- def self.included(base)
11
- base.extend(ClassMethods)
12
- end
13
- end
14
- end
15
- end
@@ -1,17 +0,0 @@
1
- module DeskApi
2
- module Action
3
- module Update
4
- def update(params = {})
5
- if kind_of?(resource('case')) and status == 'closed'
6
- raise DeskApi::Error::NotUpdateable
7
- end
8
-
9
- params.each_pair do |key, value|
10
- send("#{key}=", value) if respond_to?("#{key}=")
11
- end
12
-
13
- setup(client.patch(@_links.self.href, @_changed).body)
14
- end
15
- end
16
- end
17
- end
@@ -1,9 +0,0 @@
1
- require 'desk_api/error'
2
-
3
- module DeskApi
4
- class Error
5
- # Raised when trying to search a resource that doesn't support search
6
- class MethodNotSupported < DeskApi::Error
7
- end
8
- end
9
- end