desk_api 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +23 -0
- data/desk_api.gemspec +1 -0
- data/lib/desk_api/action/embedded.rb +1 -1
- data/lib/desk_api/action/field.rb +1 -1
- data/lib/desk_api/action/link.rb +2 -2
- data/lib/desk_api/action/resource.rb +1 -1
- data/lib/desk_api/configuration.rb +1 -1
- data/lib/desk_api/resource.rb +14 -6
- data/lib/desk_api/version.rb +1 -1
- data/spec/cassettes/DeskApi_Client/using_Basic_Authentication/_delete/deletes_a_resource.yml +48 -0
- data/spec/cassettes/DeskApi_Client/using_Basic_Authentication/_get/fetches_resources.yml +55 -0
- data/spec/cassettes/DeskApi_Client/using_Basic_Authentication/_patch/updates_a_resource.yml +62 -0
- data/spec/cassettes/DeskApi_Client/using_Basic_Authentication/_post/creates_a_resource.yml +58 -0
- data/spec/cassettes/DeskApi_Client/using_OAuth/_delete/deletes_a_resource.yml +48 -0
- data/spec/cassettes/DeskApi_Client/using_OAuth/_get/fetches_resources.yml +313 -0
- data/spec/cassettes/DeskApi_Client/using_OAuth/_patch/updates_a_resource.yml +66 -0
- data/spec/cassettes/DeskApi_Client/using_OAuth/_post/creates_a_resource.yml +62 -0
- data/spec/desk_api/client_spec.rb +52 -16
- data/spec/desk_api/resource_spec.rb +15 -0
- data/spec/spec_helper.rb +8 -0
- metadata +33 -3
- data/config.rb +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bd267e380566167aae73f9d0b26d8d84e72b1749
|
4
|
+
data.tar.gz: deaee7be024ea5238866cb2e8fab1e8e579cbe25
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0319000b143117a540561e855ee3f03adcb46a85db1ff87567d0702dd0cc9a7ac9978bca858a642e677ca39f22d8d60dc513f7c452b8a3b4788725db431f7a09
|
7
|
+
data.tar.gz: abde08faf56067f3fbea77028ef954dd04cf8f6dbcab698d6deb07fe13711570f0742f07dfa9d60a716d611bf0a7bd040e84f1ad973f3fe98db6e6f38bfc8821
|
data/.gitignore
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
.bundle
|
4
|
+
.config
|
5
|
+
coverage
|
6
|
+
InstalledFiles
|
7
|
+
lib/bundler/man
|
8
|
+
pkg
|
9
|
+
rdoc
|
10
|
+
spec/reports
|
11
|
+
test/tmp
|
12
|
+
test/version_tmp
|
13
|
+
tmp
|
14
|
+
.DS_Store
|
15
|
+
# YARD artifacts
|
16
|
+
.yardoc
|
17
|
+
_yardoc
|
18
|
+
doc/
|
19
|
+
Gemfile.lock
|
20
|
+
.rvmrc
|
21
|
+
*~
|
22
|
+
backup
|
23
|
+
config.rb
|
data/desk_api.gemspec
CHANGED
@@ -23,6 +23,7 @@ Gem::Specification.new do |gem|
|
|
23
23
|
gem.add_runtime_dependency('multi_json')
|
24
24
|
gem.add_runtime_dependency('faraday')
|
25
25
|
gem.add_runtime_dependency('faraday_middleware')
|
26
|
+
gem.add_runtime_dependency('simple_oauth')
|
26
27
|
gem.add_runtime_dependency('typhoeus')
|
27
28
|
gem.add_runtime_dependency('addressable')
|
28
29
|
gem.add_runtime_dependency('activesupport')
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module DeskApi
|
2
2
|
module Action
|
3
3
|
module Field
|
4
|
-
|
4
|
+
private
|
5
5
|
# Handles the _links part of the HAL response and sets up the associations.
|
6
6
|
# It is used by the client to setup the initial resources like `users`, `cases` and
|
7
7
|
# so on, as well as by the resource object itself for sub resources (`cases.replies`).
|
data/lib/desk_api/action/link.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module DeskApi
|
2
2
|
module Action
|
3
3
|
module Link
|
4
|
-
|
4
|
+
private
|
5
5
|
attr_accessor :_links
|
6
6
|
# Handles the _links part of the HAL response and sets up the associations.
|
7
7
|
# It is used by the client to setup the initial resources like `users`, `cases` and
|
@@ -18,7 +18,7 @@ module DeskApi
|
|
18
18
|
# this is a really ugly hack but necessary for sub resources which aren't declared consistently
|
19
19
|
definition['class'] = 'page' if method.pluralize == method
|
20
20
|
# get the client
|
21
|
-
client = self.instance_of?(DeskApi::Client) ? self :
|
21
|
+
client = self.instance_of?(DeskApi::Client) ? self : @client
|
22
22
|
# create the new resource
|
23
23
|
@_links[method]['resource'] = resource(definition['class']).new client, Hashie::Mash.new({ _links: { self: definition } })
|
24
24
|
end
|
@@ -41,9 +41,9 @@ module DeskApi
|
|
41
41
|
|
42
42
|
def middleware
|
43
43
|
@middleware ||= Proc.new do |builder|
|
44
|
+
builder.request :json
|
44
45
|
builder.request :basic_auth, @username, @password if basic_auth.values.all?
|
45
46
|
builder.request :oauth, oauth if oauth.values.all?
|
46
|
-
builder.request :json
|
47
47
|
builder.request :retry
|
48
48
|
|
49
49
|
builder.response :mashify
|
data/lib/desk_api/resource.rb
CHANGED
@@ -29,7 +29,20 @@ module DeskApi
|
|
29
29
|
@_links.self
|
30
30
|
end
|
31
31
|
|
32
|
+
def get_href
|
33
|
+
get_self['href']
|
34
|
+
end
|
35
|
+
|
32
36
|
protected
|
37
|
+
|
38
|
+
def exec!(reload = false)
|
39
|
+
return self if loaded and !reload
|
40
|
+
definition, @loaded = client.get(@_links.self.href).body, true
|
41
|
+
setup(definition)
|
42
|
+
end
|
43
|
+
|
44
|
+
private
|
45
|
+
|
33
46
|
attr_accessor :client, :loaded, :_changed
|
34
47
|
|
35
48
|
def setup(definition)
|
@@ -38,16 +51,11 @@ module DeskApi
|
|
38
51
|
self
|
39
52
|
end
|
40
53
|
|
41
|
-
def exec!(reload = false)
|
42
|
-
return self if loaded and !reload
|
43
|
-
definition, @loaded = client.get(@_links.self.href).body, true
|
44
|
-
setup(definition)
|
45
|
-
end
|
46
|
-
|
47
54
|
def method_missing(method, *args, &block)
|
48
55
|
self.exec! if !loaded
|
49
56
|
raise DeskApi::Error::MethodNotSupported unless self.respond_to?(method.to_sym)
|
50
57
|
self.send(method, *args, &block)
|
51
58
|
end
|
59
|
+
|
52
60
|
end
|
53
61
|
end
|
data/lib/desk_api/version.rb
CHANGED
@@ -0,0 +1,48 @@
|
|
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
|
@@ -0,0 +1,55 @@
|
|
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.1
|
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
|
+
- Tue, 03 Sep 2013 02:04:32 GMT
|
27
|
+
ETag:
|
28
|
+
- '"31cb249bf0be971be83b891b995e19f4"'
|
29
|
+
Status:
|
30
|
+
- 200 OK
|
31
|
+
Vary:
|
32
|
+
- X-AppVersion
|
33
|
+
X-AppVersion:
|
34
|
+
- '9.3'
|
35
|
+
X-Frame-Options:
|
36
|
+
- SAMEORIGIN
|
37
|
+
X-Rate-Limit-Limit:
|
38
|
+
- '60'
|
39
|
+
X-Rate-Limit-Remaining:
|
40
|
+
- '58'
|
41
|
+
X-Rate-Limit-Reset:
|
42
|
+
- '28'
|
43
|
+
X-Request-Id:
|
44
|
+
- ce49e111e53586ae4d813d378210d171
|
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: Tue, 03 Sep 2013 02:04:32 GMT
|
55
|
+
recorded_with: VCR 2.5.0
|
@@ -0,0 +1,62 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: patch
|
5
|
+
uri: https://devel.desk.com/api/v2/topics/556402
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: '{"name":"Test Updated Topic"}'
|
9
|
+
headers:
|
10
|
+
Accept:
|
11
|
+
- application/json
|
12
|
+
User-Agent:
|
13
|
+
- desk.com Ruby Gem v0.1.1
|
14
|
+
Content-Type:
|
15
|
+
- application/json
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message:
|
20
|
+
headers:
|
21
|
+
Cache-Control:
|
22
|
+
- max-age=0, private, must-revalidate
|
23
|
+
Content-Type:
|
24
|
+
- application/json; charset=utf-8
|
25
|
+
Date:
|
26
|
+
- Tue, 03 Sep 2013 02:04:32 GMT
|
27
|
+
ETag:
|
28
|
+
- '"00b667764701df60d557676ad7c34b48"'
|
29
|
+
Server:
|
30
|
+
- nginx
|
31
|
+
Status:
|
32
|
+
- 200 OK
|
33
|
+
Vary:
|
34
|
+
- X-AppVersion
|
35
|
+
X-AppVersion:
|
36
|
+
- '9.3'
|
37
|
+
X-Frame-Options:
|
38
|
+
- SAMEORIGIN
|
39
|
+
X-Rack-Cache:
|
40
|
+
- invalidate, pass
|
41
|
+
X-Rate-Limit-Limit:
|
42
|
+
- '60'
|
43
|
+
X-Rate-Limit-Remaining:
|
44
|
+
- '56'
|
45
|
+
X-Rate-Limit-Reset:
|
46
|
+
- '28'
|
47
|
+
X-Request-Id:
|
48
|
+
- 281edd664cb63fae8328885ad2f2c3f3
|
49
|
+
X-Runtime:
|
50
|
+
- '0.119752'
|
51
|
+
X-UA-Compatible:
|
52
|
+
- IE=Edge,chrome=1
|
53
|
+
Content-Length:
|
54
|
+
- '408'
|
55
|
+
Connection:
|
56
|
+
- keep-alive
|
57
|
+
body:
|
58
|
+
encoding: UTF-8
|
59
|
+
string: '{"name":"Test Updated Topic","description":null,"position":2,"allow_questions":true,"in_support_center":null,"created_at":"2013-08-14T19:37:08Z","updated_at":"2013-08-19T23:53:31Z","_links":{"self":{"href":"/api/v2/topics/556402","class":"topic"},"articles":{"href":"/api/v2/topics/556402/articles","class":"article"},"translations":{"href":"/api/v2/topics/556402/translations","class":"topic_translation"}}}'
|
60
|
+
http_version:
|
61
|
+
recorded_at: Tue, 03 Sep 2013 02:04:32 GMT
|
62
|
+
recorded_with: VCR 2.5.0
|
@@ -0,0 +1,58 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://devel.desk.com/api/v2/topics
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: '{"name":"Test Topic"}'
|
9
|
+
headers:
|
10
|
+
Accept:
|
11
|
+
- application/json
|
12
|
+
User-Agent:
|
13
|
+
- desk.com Ruby Gem v0.1.1
|
14
|
+
Content-Type:
|
15
|
+
- application/json
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 201
|
19
|
+
message:
|
20
|
+
headers:
|
21
|
+
Accept-Ranges:
|
22
|
+
- bytes
|
23
|
+
Cache-Control:
|
24
|
+
- max-age=0, private, must-revalidate
|
25
|
+
Content-Type:
|
26
|
+
- application/json; charset=utf-8
|
27
|
+
Date:
|
28
|
+
- Tue, 03 Sep 2013 02:04:32 GMT
|
29
|
+
ETag:
|
30
|
+
- '"94aa10fb0bdaf6f3b7f7d3fe3d8eecb6"'
|
31
|
+
Location:
|
32
|
+
- https://devel.desk.com/api/v2/topics/563658
|
33
|
+
Status:
|
34
|
+
- 201 Created
|
35
|
+
Vary:
|
36
|
+
- X-AppVersion
|
37
|
+
X-AppVersion:
|
38
|
+
- '9.3'
|
39
|
+
X-Frame-Options:
|
40
|
+
- SAMEORIGIN
|
41
|
+
X-Rate-Limit-Limit:
|
42
|
+
- '60'
|
43
|
+
X-Rate-Limit-Remaining:
|
44
|
+
- '57'
|
45
|
+
X-Rate-Limit-Reset:
|
46
|
+
- '28'
|
47
|
+
X-Request-Id:
|
48
|
+
- 3cefaedc8bdab8fa49b4d7e717c6d2f7
|
49
|
+
Content-Length:
|
50
|
+
- '400'
|
51
|
+
Connection:
|
52
|
+
- keep-alive
|
53
|
+
body:
|
54
|
+
encoding: UTF-8
|
55
|
+
string: '{"name":"Test Topic","description":null,"position":5,"allow_questions":true,"in_support_center":null,"created_at":"2013-09-03T02:04:32Z","updated_at":"2013-09-03T02:04:32Z","_links":{"self":{"href":"/api/v2/topics/563658","class":"topic"},"articles":{"href":"/api/v2/topics/563658/articles","class":"article"},"translations":{"href":"/api/v2/topics/563658/translations","class":"topic_translation"}}}'
|
56
|
+
http_version:
|
57
|
+
recorded_at: Tue, 03 Sep 2013 02:04:32 GMT
|
58
|
+
recorded_with: VCR 2.5.0
|
@@ -0,0 +1,48 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: delete
|
5
|
+
uri: https://devel.desk.com/api/v2/articles/1285134
|
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.1
|
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
|
+
- Tue, 03 Sep 2013 02:20:19 GMT
|
25
|
+
Status:
|
26
|
+
- 204 No Content
|
27
|
+
Vary:
|
28
|
+
- X-AppVersion
|
29
|
+
X-AppVersion:
|
30
|
+
- '9.3'
|
31
|
+
X-Frame-Options:
|
32
|
+
- SAMEORIGIN
|
33
|
+
X-Rate-Limit-Limit:
|
34
|
+
- '60'
|
35
|
+
X-Rate-Limit-Remaining:
|
36
|
+
- '58'
|
37
|
+
X-Rate-Limit-Reset:
|
38
|
+
- '41'
|
39
|
+
X-Request-Id:
|
40
|
+
- a579a1b17fefdde589fd2b3af0dbcb9e
|
41
|
+
Connection:
|
42
|
+
- keep-alive
|
43
|
+
body:
|
44
|
+
encoding: UTF-8
|
45
|
+
string: ''
|
46
|
+
http_version:
|
47
|
+
recorded_at: Tue, 03 Sep 2013 02:20:19 GMT
|
48
|
+
recorded_with: VCR 2.5.0
|
@@ -0,0 +1,313 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://devel.desk.com/api/v2/articles/1213277
|
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.1
|
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
|
+
- Tue, 03 Sep 2013 02:17:51 GMT
|
27
|
+
ETag:
|
28
|
+
- '"9c195d070361a74830027d6597f70068"'
|
29
|
+
Status:
|
30
|
+
- 200 OK
|
31
|
+
Vary:
|
32
|
+
- X-AppVersion
|
33
|
+
X-AppVersion:
|
34
|
+
- '9.3'
|
35
|
+
X-Frame-Options:
|
36
|
+
- SAMEORIGIN
|
37
|
+
X-Rate-Limit-Limit:
|
38
|
+
- '60'
|
39
|
+
X-Rate-Limit-Remaining:
|
40
|
+
- '58'
|
41
|
+
X-Rate-Limit-Reset:
|
42
|
+
- '9'
|
43
|
+
X-Request-Id:
|
44
|
+
- 625479549c10e650e4f6ff0c775fc9d1
|
45
|
+
Content-Length:
|
46
|
+
- '20825'
|
47
|
+
Connection:
|
48
|
+
- keep-alive
|
49
|
+
body:
|
50
|
+
encoding: UTF-8
|
51
|
+
string: '{"subject":"asdf","body":"<div>\r\n<div class=\"lc\">\r\n<p><strong>Lorem
|
52
|
+
Ipsum</strong> is simply dummy text of the printing and typesetting industry.
|
53
|
+
Lorem Ipsum has been the industry's standard dummy text ever since the
|
54
|
+
1500s, when an unknown printer took a galley of type and scrambled it to make
|
55
|
+
a type specimen book. It has survived not only five centuries, but also the
|
56
|
+
leap into electronic typesetting, remaining essentially unchanged. It was
|
57
|
+
popularised in the 1960s with the release of Letraset sheets containing Lorem
|
58
|
+
Ipsum passages, and more recently with desktop publishing software like Aldus
|
59
|
+
PageMaker including versions of Lorem Ipsum.</p>\r\n</div>\r\n\r\n<div class=\"rc\">\r\n<h2
|
60
|
+
class=\"why\"> </h2>\r\n\r\n<p>It is a long established fact that a reader
|
61
|
+
will be distracted by the readable content of a page when looking at its layout.
|
62
|
+
The point of using Lorem Ipsum is that it has a more-or-less normal distribution
|
63
|
+
of letters, as opposed to using 'Content here, content here', making
|
64
|
+
it look like readable English. Many desktop publishing packages and web page
|
65
|
+
editors now use Lorem Ipsum as their default model text, and a search for
|
66
|
+
'lorem ipsum' will uncover many web sites still in their infancy.
|
67
|
+
Various versions have evolved over the years, sometimes by accident, sometimes
|
68
|
+
on purpose (injected humour and the like).</p>\r\n</div>\r\n</div>\r\n<span
|
69
|
+
style=\"color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans; font-size:
|
70
|
+
11px; line-height: normal; text-align: center;\"> </span>\r\n\r\n<div>\r\n<div
|
71
|
+
class=\"lc\">\r\n<h2 class=\"where\"> </h2>\r\n\r\n<p>Contrary to popular
|
72
|
+
belief, Lorem Ipsum is not simply random text. It has roots in a piece of
|
73
|
+
classical Latin literature from 45 BC, making it over 2000 years old. Richard
|
74
|
+
McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked
|
75
|
+
up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage,
|
76
|
+
and going through the cites of the word in classical literature, discovered
|
77
|
+
the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33
|
78
|
+
of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil)
|
79
|
+
by Cicero, written in 45 BC. This book is a treatise on the theory of ethics,
|
80
|
+
very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem
|
81
|
+
ipsum dolor sit amet..", comes from a line in section 1.10.32.</p>\r\n\r\n<p>The
|
82
|
+
standard chunk of Lorem Ipsum used since the 1500s is reproduced below for
|
83
|
+
those interested. Sections 1.10.32 and 1.10.33 from "de Finibus Bonorum
|
84
|
+
et Malorum" by Cicero are also reproduced in their exact original form,
|
85
|
+
accompanied by English versions from the 1914 translation by H. Rackham.</p>\r\n</div>\r\n\r\n<div
|
86
|
+
class=\"rc\">\r\n<h2 class=\"getsome\"> </h2>\r\n\r\n<p>There are many
|
87
|
+
variations of passages of Lorem Ipsum available, but the majority have suffered
|
88
|
+
alteration in some form, by injected humour, or randomised words which don't
|
89
|
+
look even slightly believable. If you are going to use a passage of Lorem
|
90
|
+
Ipsum, you need to be sure there isn't anything embarrassing hidden in
|
91
|
+
the middle of text. All the Lorem Ipsum generators on the Internet tend to
|
92
|
+
repeat predefined chunks as necessary, making this the first true generator
|
93
|
+
on the Internet. It uses a dictionary of over 200 Latin words, combined with
|
94
|
+
a handful of model sentence structures, to generate Lorem Ipsum which looks
|
95
|
+
reasonable. The generated Lorem Ipsum is therefore always free from repetition,
|
96
|
+
injected humour, or non-characteristic words etc.</p>\r\n</div>\r\n</div>\r\n","body_email":"Lorem
|
97
|
+
Ipsum is simply dummy text of the printing and typesetting industry. Lorem
|
98
|
+
Ipsum has been the industry''s standard dummy text ever since the 1500s, when
|
99
|
+
an unknown printer took a galley of type and scrambled it to make a type specimen
|
100
|
+
book. It has survived not only five centuries, but also the leap into electronic
|
101
|
+
typesetting, remaining essentially unchanged. It was popularised in the 1960s
|
102
|
+
with the release of Letraset sheets containing Lorem Ipsum passages, and more
|
103
|
+
recently with desktop publishing software like Aldus PageMaker including versions
|
104
|
+
of Lorem Ipsum. \r\n \r\n\r\n \r\n \r\n\r\n It is a long established fact
|
105
|
+
that a reader will be distracted by the readable content of a page when looking
|
106
|
+
at its layout. The point of using Lorem Ipsum is that it has a more-or-less
|
107
|
+
normal distribution of letters, as opposed to using ''Content here, content
|
108
|
+
here'', making it look like readable English. Many desktop publishing packages
|
109
|
+
and web page editors now use Lorem Ipsum as their default model text, and
|
110
|
+
a search for ''lorem ipsum'' will uncover many web sites still in their infancy.
|
111
|
+
Various versions have evolved over the years, sometimes by accident, sometimes
|
112
|
+
on purpose (injected humour and the like). \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n
|
113
|
+
Contrary to popular belief, Lorem Ipsum is not simply random text. It has
|
114
|
+
roots in a piece of classical Latin literature from 45 BC, making it over
|
115
|
+
2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College
|
116
|
+
in Virginia, looked up one of the more obscure Latin words, consectetur, from
|
117
|
+
a Lorem Ipsum passage, and going through the cites of the word in classical
|
118
|
+
literature, discovered the undoubtable source. Lorem Ipsum comes from sections
|
119
|
+
1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of
|
120
|
+
Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the
|
121
|
+
theory of ethics, very popular during the Renaissance. The first line of Lorem
|
122
|
+
Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.\n\nThe
|
123
|
+
standard chunk of Lorem Ipsum used since the 1500s is reproduced below for
|
124
|
+
those interested. Sections 1.10.32 and 1.10.33 from \"de Finibus Bonorum et
|
125
|
+
Malorum\" by Cicero are also reproduced in their exact original form, accompanied
|
126
|
+
by English versions from the 1914 translation by H. Rackham. \r\n \r\n\r\n
|
127
|
+
\r\n \r\n\r\n There are many variations of passages of Lorem Ipsum available,
|
128
|
+
but the majority have suffered alteration in some form, by injected humour,
|
129
|
+
or randomised words which don''t look even slightly believable. If you are
|
130
|
+
going to use a passage of Lorem Ipsum, you need to be sure there isn''t anything
|
131
|
+
embarrassing hidden in the middle of text. All the Lorem Ipsum generators
|
132
|
+
on the Internet tend to repeat predefined chunks as necessary, making this
|
133
|
+
the first true generator on the Internet. It uses a dictionary of over 200
|
134
|
+
Latin words, combined with a handful of model sentence structures, to generate
|
135
|
+
Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore
|
136
|
+
always free from repetition, injected humour, or non-characteristic words
|
137
|
+
etc.","body_email_auto":true,"body_chat":"Lorem Ipsum is simply dummy text
|
138
|
+
of the printing and typesetting industry. Lorem Ipsum has been the industry''s
|
139
|
+
standard dummy text ever since the 1500s, when an unknown printer took a galley
|
140
|
+
of type and scrambled it to make a type specimen book. It h... http://devel.desk.com/customer/portal/articles/1213277-asdf","body_chat_auto":true,"body_web_callback":"<div>\r\n<div
|
141
|
+
class=\"lc\">\r\n<p><strong>Lorem Ipsum</strong> is simply dummy text
|
142
|
+
of the printing and typesetting industry. Lorem Ipsum has been the industry's
|
143
|
+
standard dummy text ever since the 1500s, when an unknown printer took a galley
|
144
|
+
of type and scrambled it to make a type specimen book. It has survived not
|
145
|
+
only five centuries, but also the leap into electronic typesetting, remaining
|
146
|
+
essentially unchanged. It was popularised in the 1960s with the release of
|
147
|
+
Letraset sheets containing Lorem Ipsum passages, and more recently with desktop
|
148
|
+
publishing software like Aldus PageMaker including versions of Lorem Ipsum.</p>\r\n</div>\r\n\r\n<div
|
149
|
+
class=\"rc\">\r\n<h2 class=\"why\"> </h2>\r\n\r\n<p>It is a long established
|
150
|
+
fact that a reader will be distracted by the readable content of a page when
|
151
|
+
looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less
|
152
|
+
normal distribution of letters, as opposed to using 'Content here, content
|
153
|
+
here', making it look like readable English. Many desktop publishing packages
|
154
|
+
and web page editors now use Lorem Ipsum as their default model text, and
|
155
|
+
a search for 'lorem ipsum' will uncover many web sites still in their
|
156
|
+
infancy. Various versions have evolved over the years, sometimes by accident,
|
157
|
+
sometimes on purpose (injected humour and the like).</p>\r\n</div>\r\n</div>\r\n<span
|
158
|
+
style=\"color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans; font-size:
|
159
|
+
11px; line-height: normal; text-align: center;\"> </span>\r\n\r\n<div>\r\n<div
|
160
|
+
class=\"lc\">\r\n<h2 class=\"where\"> </h2>\r\n\r\n<p>Contrary to popular
|
161
|
+
belief, Lorem Ipsum is not simply random text. It has roots in a piece of
|
162
|
+
classical Latin literature from 45 BC, making it over 2000 years old. Richard
|
163
|
+
McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked
|
164
|
+
up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage,
|
165
|
+
and going through the cites of the word in classical literature, discovered
|
166
|
+
the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33
|
167
|
+
of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil)
|
168
|
+
by Cicero, written in 45 BC. This book is a treatise on the theory of ethics,
|
169
|
+
very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem
|
170
|
+
ipsum dolor sit amet..", comes from a line in section 1.10.32.</p>\r\n\r\n<p>The
|
171
|
+
standard chunk of Lorem Ipsum used since the 1500s is reproduced below for
|
172
|
+
those interested. Sections 1.10.32 and 1.10.33 from "de Finibus Bonorum
|
173
|
+
et Malorum" by Cicero are also reproduced in their exact original form,
|
174
|
+
accompanied by English versions from the 1914 translation by H. Rackham.</p>\r\n</div>\r\n\r\n<div
|
175
|
+
class=\"rc\">\r\n<h2 class=\"getsome\"> </h2>\r\n\r\n<p>There are many
|
176
|
+
variations of passages of Lorem Ipsum available, but the majority have suffered
|
177
|
+
alteration in some form, by injected humour, or randomised words which don't
|
178
|
+
look even slightly believable. If you are going to use a passage of Lorem
|
179
|
+
Ipsum, you need to be sure there isn't anything embarrassing hidden in
|
180
|
+
the middle of text. All the Lorem Ipsum generators on the Internet tend to
|
181
|
+
repeat predefined chunks as necessary, making this the first true generator
|
182
|
+
on the Internet. It uses a dictionary of over 200 Latin words, combined with
|
183
|
+
a handful of model sentence structures, to generate Lorem Ipsum which looks
|
184
|
+
reasonable. The generated Lorem Ipsum is therefore always free from repetition,
|
185
|
+
injected humour, or non-characteristic words etc.</p>\r\n</div>\r\n</div>\r\n","body_web_callback_auto":true,"body_twitter":"Lorem
|
186
|
+
Ipsum is simply dummy text of the printing and typesetting industry. Lorem
|
187
|
+
Ipsum has been the in... http://devel.desk.com/customer/portal/articles/1213277-asdf","body_twitter_auto":true,"body_qna":"Lorem
|
188
|
+
Ipsum is simply dummy text of the printing and typesetting industry. Lorem
|
189
|
+
Ipsum has been the industry''s standard dummy text ever since the 1500s, when
|
190
|
+
an unknown printer took a galley of type and scrambled it to make a type specimen
|
191
|
+
book. It has survived not only five centuries, but also the leap into electronic
|
192
|
+
typesetting, remaining essentially unchanged. It was popularised in the 1960s
|
193
|
+
with the release of Letraset sheets containing Lorem Ipsum passages, and more
|
194
|
+
recently with desktop publishing software like Aldus PageMaker including versions
|
195
|
+
of Lorem Ipsum. \r\n \r\n\r\n \r\n \r\n\r\n It is a long established fact
|
196
|
+
that a reader will be distracted by the readable content of a page when looking
|
197
|
+
at its layout. The point of using Lorem Ipsum is that it has a more-or-less
|
198
|
+
normal distribution of letters, as opposed to using ''Content here, content
|
199
|
+
here'', making it look like readable English. Many desktop publishing packages
|
200
|
+
and web page editors now use Lorem Ipsum as their default model text, and
|
201
|
+
a search for ''lorem ipsum'' will uncover many web sites still in their infancy.
|
202
|
+
Various versions have evolved over the years, sometimes by accident, sometimes
|
203
|
+
on purpose (injected humour and the like). \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n
|
204
|
+
Contrary to popular belief, Lorem Ipsum is not simply random text. It has
|
205
|
+
roots in a piece of classical Latin literature from 45 BC, making it over
|
206
|
+
2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College
|
207
|
+
in Virginia, looked up one of the more obscure Latin words, consectetur, from
|
208
|
+
a Lorem Ipsum passage, and going through the cites of the word in classical
|
209
|
+
literature, discovered the undoubtable source. Lorem Ipsum comes from sections
|
210
|
+
1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of
|
211
|
+
Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the
|
212
|
+
theory of ethics, very popular during the Renaissance. The first line of Lorem
|
213
|
+
Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.\n\nThe
|
214
|
+
standard chunk of Lorem Ipsum used since the 1500s is reproduced below for
|
215
|
+
those interested. Sections 1.10.32 and 1.10.33 from \"de Finibus Bonorum et
|
216
|
+
Malorum\" by Cicero are also reproduced in their exact original form, accompanied
|
217
|
+
by English versions from the 1914 translation by H. Rackham. \r\n \r\n\r\n
|
218
|
+
\r\n \r\n\r\n There are many variations of passages of Lorem Ipsum available,
|
219
|
+
but the majority have suffered alteration in some form, by injected humour,
|
220
|
+
or randomised words which don''t look even slightly believable. If you are
|
221
|
+
going to use a passage of Lorem Ipsum, you need to be sure there isn''t anything
|
222
|
+
embarrassing hidden in the middle of text. All the Lorem Ipsum generators
|
223
|
+
on the Internet tend to repeat predefined chunks as necessary, making this
|
224
|
+
the first true generator on the Internet. It uses a dictionary of over 200
|
225
|
+
Latin words, combined with a handful of model sentence structures, to generate
|
226
|
+
Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore
|
227
|
+
always free from repetition, injected humour, or non-characteristic words
|
228
|
+
etc.","body_qna_auto":true,"body_phone":"Lorem Ipsum is simply dummy text
|
229
|
+
of the printing and typesetting industry. Lorem Ipsum has been the industry''s
|
230
|
+
standard dummy text ever since the 1500s, when an unknown printer took a galley
|
231
|
+
of type and scrambled it to make a type specimen book. It has survived not
|
232
|
+
only five centuries, but also the leap into electronic typesetting, remaining
|
233
|
+
essentially unchanged. It was popularised in the 1960s with the release of
|
234
|
+
Letraset sheets containing Lorem Ipsum passages, and more recently with desktop
|
235
|
+
publishing software like Aldus PageMaker including versions of Lorem Ipsum.
|
236
|
+
\r\n \r\n\r\n \r\n \r\n\r\n It is a long established fact that a reader
|
237
|
+
will be distracted by the readable content of a page when looking at its layout.
|
238
|
+
The point of using Lorem Ipsum is that it has a more-or-less normal distribution
|
239
|
+
of letters, as opposed to using ''Content here, content here'', making it
|
240
|
+
look like readable English. Many desktop publishing packages and web page
|
241
|
+
editors now use Lorem Ipsum as their default model text, and a search for
|
242
|
+
''lorem ipsum'' will uncover many web sites still in their infancy. Various
|
243
|
+
versions have evolved over the years, sometimes by accident, sometimes on
|
244
|
+
purpose (injected humour and the like). \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n
|
245
|
+
Contrary to popular belief, Lorem Ipsum is not simply random text. It has
|
246
|
+
roots in a piece of classical Latin literature from 45 BC, making it over
|
247
|
+
2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College
|
248
|
+
in Virginia, looked up one of the more obscure Latin words, consectetur, from
|
249
|
+
a Lorem Ipsum passage, and going through the cites of the word in classical
|
250
|
+
literature, discovered the undoubtable source. Lorem Ipsum comes from sections
|
251
|
+
1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of
|
252
|
+
Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the
|
253
|
+
theory of ethics, very popular during the Renaissance. The first line of Lorem
|
254
|
+
Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.\n\nThe
|
255
|
+
standard chunk of Lorem Ipsum used since the 1500s is reproduced below for
|
256
|
+
those interested. Sections 1.10.32 and 1.10.33 from \"de Finibus Bonorum et
|
257
|
+
Malorum\" by Cicero are also reproduced in their exact original form, accompanied
|
258
|
+
by English versions from the 1914 translation by H. Rackham. \r\n \r\n\r\n
|
259
|
+
\r\n \r\n\r\n There are many variations of passages of Lorem Ipsum available,
|
260
|
+
but the majority have suffered alteration in some form, by injected humour,
|
261
|
+
or randomised words which don''t look even slightly believable. If you are
|
262
|
+
going to use a passage of Lorem Ipsum, you need to be sure there isn''t anything
|
263
|
+
embarrassing hidden in the middle of text. All the Lorem Ipsum generators
|
264
|
+
on the Internet tend to repeat predefined chunks as necessary, making this
|
265
|
+
the first true generator on the Internet. It uses a dictionary of over 200
|
266
|
+
Latin words, combined with a handful of model sentence structures, to generate
|
267
|
+
Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore
|
268
|
+
always free from repetition, injected humour, or non-characteristic words
|
269
|
+
etc.","body_phone_auto":true,"body_facebook":"Lorem Ipsum is simply dummy
|
270
|
+
text of the printing and typesetting industry. Lorem Ipsum has been the industry''s
|
271
|
+
standard dummy text ever since the 1500s, when an unknown printer took a galley
|
272
|
+
of type and scrambled it to make a type specimen book. It has survived not
|
273
|
+
only five centuries, but also the leap into electronic typesetting, remaining
|
274
|
+
essentially unchanged. It was popularised in the 1960s with the release of
|
275
|
+
Letraset sheets containing Lorem Ipsum passages, and more recently with desktop
|
276
|
+
publishing software like Aldus PageMaker including versions of Lorem Ipsum.
|
277
|
+
\r\n \r\n\r\n \r\n \r\n\r\n It is a long established fact that a reader
|
278
|
+
will be distracted by the readable content of a page when looking at its layout.
|
279
|
+
The point of using Lorem Ipsum is that it has a more-or-less normal distribution
|
280
|
+
of letters, as opposed to using ''Content here, content here'', making it
|
281
|
+
look like readable English. Many desktop publishing packages and web page
|
282
|
+
editors now use Lorem Ipsum as their default model text, and a search for
|
283
|
+
''lorem ipsum'' will uncover many web sites still in their infancy. Various
|
284
|
+
versions have evolved over the years, sometimes by accident, sometimes on
|
285
|
+
purpose (injected humour and the like). \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n
|
286
|
+
Contrary to popular belief, Lorem Ipsum is not simply random text. It has
|
287
|
+
roots in a piece of classical Latin literature from 45 BC, making it over
|
288
|
+
2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College
|
289
|
+
in Virginia, looked up one of the more obscure Latin words, consectetur, from
|
290
|
+
a Lorem Ipsum passage, and going through the cites of the word in classical
|
291
|
+
literature, discovered the undoubtable source. Lorem Ipsum comes from sections
|
292
|
+
1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of
|
293
|
+
Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the
|
294
|
+
theory of ethics, very popular during the Renaissance. The first line of Lorem
|
295
|
+
Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.\n\nThe
|
296
|
+
standard chunk of Lorem Ipsum used since the 1500s is reproduced below for
|
297
|
+
those interested. Sections 1.10.32 and 1.10.33 from \"de Finibus Bonorum et
|
298
|
+
Malorum\" by Cicero are also reproduced in their exact original form, accompanied
|
299
|
+
by English versions from the 1914 translation by H. Rackham. \r\n \r\n\r\n
|
300
|
+
\r\n \r\n\r\n There are many variations of passages of Lorem Ipsum available,
|
301
|
+
but the majority have suffered alteration in some form, by injected humour,
|
302
|
+
or randomised words which don''t look even slightly believable. If you are
|
303
|
+
going to use a passage of Lorem Ipsum, you need to be sure there isn''t anything
|
304
|
+
embarrassing hidden in the middle of text. All the Lorem Ipsum generators
|
305
|
+
on the Internet tend to repeat predefined chunks as necessary, making this
|
306
|
+
the first true generator on the Internet. It uses a dictionary of over 200
|
307
|
+
Latin words, combined with a handful of model sentence structures, to generate
|
308
|
+
Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore
|
309
|
+
always free from repetition, injected humour, or non-characteristic words
|
310
|
+
etc.","body_facebook_auto":true,"keywords":"","position":1,"quickcode":null,"in_support_center":true,"internal_notes":"","publish_at":"2013-08-05T01:13:36Z","created_at":"2013-07-05T15:45:25Z","updated_at":"2013-08-19T23:51:33Z","_links":{"self":{"href":"/api/v2/articles/1213277","class":"article"},"topic":{"href":"/api/v2/topics/498301","class":"topic"},"translations":{"href":"/api/v2/articles/1213277/translations","class":"article_translation"}}}'
|
311
|
+
http_version:
|
312
|
+
recorded_at: Tue, 03 Sep 2013 02:17:51 GMT
|
313
|
+
recorded_with: VCR 2.5.0
|
@@ -0,0 +1,66 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: patch
|
5
|
+
uri: https://devel.desk.com/api/v2/articles/1285134
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: '{"subject":"Testing Updated OAuth"}'
|
9
|
+
headers:
|
10
|
+
Accept:
|
11
|
+
- application/json
|
12
|
+
User-Agent:
|
13
|
+
- desk.com Ruby Gem v0.1.1
|
14
|
+
Content-Type:
|
15
|
+
- application/json
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message:
|
20
|
+
headers:
|
21
|
+
Cache-Control:
|
22
|
+
- max-age=0, private, must-revalidate
|
23
|
+
Content-Type:
|
24
|
+
- application/json; charset=utf-8
|
25
|
+
Date:
|
26
|
+
- Tue, 03 Sep 2013 02:20:19 GMT
|
27
|
+
ETag:
|
28
|
+
- '"1fd66bbba076c29ce1c35f0a3252ea63"'
|
29
|
+
Server:
|
30
|
+
- nginx
|
31
|
+
Status:
|
32
|
+
- 200 OK
|
33
|
+
Vary:
|
34
|
+
- X-AppVersion
|
35
|
+
X-AppVersion:
|
36
|
+
- '9.3'
|
37
|
+
X-Frame-Options:
|
38
|
+
- SAMEORIGIN
|
39
|
+
X-Rack-Cache:
|
40
|
+
- invalidate, pass
|
41
|
+
X-Rate-Limit-Limit:
|
42
|
+
- '60'
|
43
|
+
X-Rate-Limit-Remaining:
|
44
|
+
- '59'
|
45
|
+
X-Rate-Limit-Reset:
|
46
|
+
- '41'
|
47
|
+
X-Request-Id:
|
48
|
+
- 3724d323e7831c1f47bb6bef6cd45d8b
|
49
|
+
X-Runtime:
|
50
|
+
- '0.181512'
|
51
|
+
X-UA-Compatible:
|
52
|
+
- IE=Edge,chrome=1
|
53
|
+
Content-Length:
|
54
|
+
- '814'
|
55
|
+
Connection:
|
56
|
+
- keep-alive
|
57
|
+
body:
|
58
|
+
encoding: UTF-8
|
59
|
+
string: '{"subject":"Testing Updated OAuth","body":"Some Body","body_email":"Some
|
60
|
+
Body","body_email_auto":true,"body_chat":"Some Body","body_chat_auto":true,"body_web_callback":"Some
|
61
|
+
Body","body_web_callback_auto":true,"body_twitter":"Some Body","body_twitter_auto":true,"body_qna":"Some
|
62
|
+
Body","body_qna_auto":true,"body_phone":"Some Body","body_phone_auto":true,"body_facebook":"Some
|
63
|
+
Body","body_facebook_auto":true,"keywords":null,"position":2,"quickcode":null,"in_support_center":null,"internal_notes":null,"publish_at":null,"created_at":"2013-09-03T01:31:09Z","updated_at":"2013-09-03T02:20:19Z","_links":{"self":{"href":"/api/v2/articles/1285134","class":"article"},"topic":{"href":"/api/v2/topics/498301","class":"topic"},"translations":{"href":"/api/v2/articles/1285134/translations","class":"article_translation"}}}'
|
64
|
+
http_version:
|
65
|
+
recorded_at: Tue, 03 Sep 2013 02:20:19 GMT
|
66
|
+
recorded_with: VCR 2.5.0
|
@@ -0,0 +1,62 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://devel.desk.com/api/v2/articles
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: '{"subject":"Testing OAuth","body":"OAuth testing","_links":{"topic":{"href":"/api/v2/topics/498301"}}}'
|
9
|
+
headers:
|
10
|
+
Accept:
|
11
|
+
- application/json
|
12
|
+
User-Agent:
|
13
|
+
- desk.com Ruby Gem v0.1.1
|
14
|
+
Content-Type:
|
15
|
+
- application/json
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 201
|
19
|
+
message:
|
20
|
+
headers:
|
21
|
+
Accept-Ranges:
|
22
|
+
- bytes
|
23
|
+
Cache-Control:
|
24
|
+
- max-age=0, private, must-revalidate
|
25
|
+
Content-Type:
|
26
|
+
- application/json; charset=utf-8
|
27
|
+
Date:
|
28
|
+
- Tue, 03 Sep 2013 02:21:47 GMT
|
29
|
+
ETag:
|
30
|
+
- '"2559b1e5a8ab953a72d4927d7cb2a272"'
|
31
|
+
Location:
|
32
|
+
- https://devel.desk.com/api/v2/articles/1285155
|
33
|
+
Status:
|
34
|
+
- 201 Created
|
35
|
+
Vary:
|
36
|
+
- X-AppVersion
|
37
|
+
X-AppVersion:
|
38
|
+
- '9.3'
|
39
|
+
X-Frame-Options:
|
40
|
+
- SAMEORIGIN
|
41
|
+
X-Rate-Limit-Limit:
|
42
|
+
- '60'
|
43
|
+
X-Rate-Limit-Remaining:
|
44
|
+
- '58'
|
45
|
+
X-Rate-Limit-Reset:
|
46
|
+
- '13'
|
47
|
+
X-Request-Id:
|
48
|
+
- 0032dd903f22cd59f6183911e4a0e425
|
49
|
+
Content-Length:
|
50
|
+
- '838'
|
51
|
+
Connection:
|
52
|
+
- keep-alive
|
53
|
+
body:
|
54
|
+
encoding: UTF-8
|
55
|
+
string: '{"subject":"Testing OAuth","body":"OAuth testing","body_email":"OAuth
|
56
|
+
testing","body_email_auto":true,"body_chat":"OAuth testing","body_chat_auto":true,"body_web_callback":"OAuth
|
57
|
+
testing","body_web_callback_auto":true,"body_twitter":"OAuth testing","body_twitter_auto":true,"body_qna":"OAuth
|
58
|
+
testing","body_qna_auto":true,"body_phone":"OAuth testing","body_phone_auto":true,"body_facebook":"OAuth
|
59
|
+
testing","body_facebook_auto":true,"keywords":null,"position":2,"quickcode":null,"in_support_center":null,"internal_notes":null,"publish_at":null,"created_at":"2013-09-03T02:21:47Z","updated_at":"2013-09-03T02:21:47Z","_links":{"self":{"href":"/api/v2/articles/1285155","class":"article"},"topic":{"href":"/api/v2/topics/498301","class":"topic"},"translations":{"href":"/api/v2/articles/1285155/translations","class":"article_translation"}}}'
|
60
|
+
http_version:
|
61
|
+
recorded_at: Tue, 03 Sep 2013 02:21:47 GMT
|
62
|
+
recorded_with: VCR 2.5.0
|
@@ -82,29 +82,65 @@ describe DeskApi::Client do
|
|
82
82
|
end
|
83
83
|
end
|
84
84
|
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
85
|
+
context 'using Basic Authentication' do
|
86
|
+
describe '#get', :vcr do
|
87
|
+
it 'fetches resources' do
|
88
|
+
response = subject.get('/api/v2/cases/3014')
|
89
|
+
response.body.subject.should eq('Testing Quick Case')
|
90
|
+
end
|
89
91
|
end
|
90
|
-
end
|
91
92
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
93
|
+
describe '#post', :vcr do
|
94
|
+
it 'creates a resource' do
|
95
|
+
response = subject.post('/api/v2/topics', @topic_create_data)
|
96
|
+
response.body.name.should eq(@topic_create_data[:name])
|
97
|
+
end
|
96
98
|
end
|
97
|
-
end
|
98
99
|
|
99
|
-
|
100
|
-
|
101
|
-
|
100
|
+
describe '#patch', :vcr do
|
101
|
+
it 'updates a resource' do
|
102
|
+
subject.patch('/api/v2/topics/556402', @topic_update_data).body.name.should eq(@topic_update_data[:name])
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
describe '#delete', :vcr do
|
107
|
+
it 'deletes a resource' do
|
108
|
+
subject.delete('/api/v2/topics/558245').status.should eq(204)
|
109
|
+
end
|
102
110
|
end
|
103
111
|
end
|
104
112
|
|
105
|
-
|
106
|
-
|
107
|
-
|
113
|
+
context 'using OAuth' do
|
114
|
+
before do
|
115
|
+
@client = DeskApi::Client.new DeskApi::OAUTH_CONFIG
|
116
|
+
@article_create_data = { subject: 'Testing OAuth', body: 'OAuth testing', _links: { topic: { href: '/api/v2/topics/498301' } } }
|
117
|
+
@article_update_data = { subject: 'Testing Updated OAuth' }
|
118
|
+
end
|
119
|
+
|
120
|
+
describe '#get', :vcr do
|
121
|
+
it 'fetches resources' do
|
122
|
+
response = @client.get('/api/v2/articles/1213277')
|
123
|
+
response.body.subject.should eq('asdf')
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
describe '#post', :vcr do
|
128
|
+
it 'creates a resource' do
|
129
|
+
response = @client.post('/api/v2/articles', @article_create_data)
|
130
|
+
response.body.subject.should eq(@article_create_data[:subject])
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
describe '#patch', :vcr do
|
135
|
+
it 'updates a resource' do
|
136
|
+
@client.patch('/api/v2/articles/1285134', @article_update_data).body.subject.should eq(@article_update_data[:subject])
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
describe '#delete', :vcr do
|
141
|
+
it 'deletes a resource' do
|
142
|
+
@client.delete('/api/v2/articles/1285134').status.should eq(204)
|
143
|
+
end
|
108
144
|
end
|
109
145
|
end
|
110
146
|
|
@@ -49,6 +49,21 @@ describe DeskApi::Resource do
|
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
52
|
+
context '#get_self' do
|
53
|
+
it 'returns the hash for self' do
|
54
|
+
subject.articles.get_self.should eq({
|
55
|
+
"href" => "/api/v2/articles",
|
56
|
+
"class" => "page"
|
57
|
+
})
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
context '#get_href' do
|
62
|
+
it 'returns the href for self' do
|
63
|
+
subject.articles.get_href.should eq('/api/v2/articles')
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
52
67
|
context '#resource', :vcr do
|
53
68
|
it 'requires the specified resource' do
|
54
69
|
subject.send(:resource, 'article').should equal(DeskApi::Resource::Article)
|
data/spec/spec_helper.rb
CHANGED
@@ -23,6 +23,14 @@ rescue LoadError
|
|
23
23
|
password: '1234password',
|
24
24
|
subdomain: 'devel'
|
25
25
|
}
|
26
|
+
|
27
|
+
OAUTH_CONFIG = {
|
28
|
+
consumer_key: 'my_consumer_key',
|
29
|
+
consumer_secret: 'my_consumer_secret',
|
30
|
+
token: 'my_token',
|
31
|
+
token_secret: 'my_token_secret',
|
32
|
+
subdomain: 'devel'
|
33
|
+
}
|
26
34
|
end
|
27
35
|
end
|
28
36
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: desk_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
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-
|
11
|
+
date: 2013-09-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: multi_json
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: simple_oauth
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: typhoeus
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -188,6 +202,7 @@ extra_rdoc_files:
|
|
188
202
|
- README.md
|
189
203
|
files:
|
190
204
|
- .coveralls.yml
|
205
|
+
- .gitignore
|
191
206
|
- .rspec
|
192
207
|
- .travis.yml
|
193
208
|
- .yardopts
|
@@ -196,7 +211,6 @@ files:
|
|
196
211
|
- LICENSE
|
197
212
|
- README.md
|
198
213
|
- Rakefile
|
199
|
-
- config.rb
|
200
214
|
- desk_api.gemspec
|
201
215
|
- lib/desk.rb
|
202
216
|
- lib/desk_api.rb
|
@@ -259,6 +273,14 @@ files:
|
|
259
273
|
- spec/cassettes/DeskApi_Client/_get/fetches_resources.yml
|
260
274
|
- spec/cassettes/DeskApi_Client/_patch/updates_a_resource.yml
|
261
275
|
- spec/cassettes/DeskApi_Client/_post/creates_a_resource.yml
|
276
|
+
- spec/cassettes/DeskApi_Client/using_Basic_Authentication/_delete/deletes_a_resource.yml
|
277
|
+
- spec/cassettes/DeskApi_Client/using_Basic_Authentication/_get/fetches_resources.yml
|
278
|
+
- spec/cassettes/DeskApi_Client/using_Basic_Authentication/_patch/updates_a_resource.yml
|
279
|
+
- spec/cassettes/DeskApi_Client/using_Basic_Authentication/_post/creates_a_resource.yml
|
280
|
+
- spec/cassettes/DeskApi_Client/using_OAuth/_delete/deletes_a_resource.yml
|
281
|
+
- spec/cassettes/DeskApi_Client/using_OAuth/_get/fetches_resources.yml
|
282
|
+
- spec/cassettes/DeskApi_Client/using_OAuth/_patch/updates_a_resource.yml
|
283
|
+
- spec/cassettes/DeskApi_Client/using_OAuth/_post/creates_a_resource.yml
|
262
284
|
- spec/cassettes/DeskApi_Error/_from_response/can_be_created_from_a_faraday_response.yml
|
263
285
|
- spec/cassettes/DeskApi_Error/_from_response/uses_the_body_message_if_present.yml
|
264
286
|
- spec/cassettes/DeskApi_Resource/_by_url/finds_resources_by_url.yml
|
@@ -319,6 +341,14 @@ test_files:
|
|
319
341
|
- spec/cassettes/DeskApi_Client/_get/fetches_resources.yml
|
320
342
|
- spec/cassettes/DeskApi_Client/_patch/updates_a_resource.yml
|
321
343
|
- spec/cassettes/DeskApi_Client/_post/creates_a_resource.yml
|
344
|
+
- spec/cassettes/DeskApi_Client/using_Basic_Authentication/_delete/deletes_a_resource.yml
|
345
|
+
- spec/cassettes/DeskApi_Client/using_Basic_Authentication/_get/fetches_resources.yml
|
346
|
+
- spec/cassettes/DeskApi_Client/using_Basic_Authentication/_patch/updates_a_resource.yml
|
347
|
+
- spec/cassettes/DeskApi_Client/using_Basic_Authentication/_post/creates_a_resource.yml
|
348
|
+
- spec/cassettes/DeskApi_Client/using_OAuth/_delete/deletes_a_resource.yml
|
349
|
+
- spec/cassettes/DeskApi_Client/using_OAuth/_get/fetches_resources.yml
|
350
|
+
- spec/cassettes/DeskApi_Client/using_OAuth/_patch/updates_a_resource.yml
|
351
|
+
- spec/cassettes/DeskApi_Client/using_OAuth/_post/creates_a_resource.yml
|
322
352
|
- spec/cassettes/DeskApi_Error/_from_response/can_be_created_from_a_faraday_response.yml
|
323
353
|
- spec/cassettes/DeskApi_Error/_from_response/uses_the_body_message_if_present.yml
|
324
354
|
- spec/cassettes/DeskApi_Resource/_by_url/finds_resources_by_url.yml
|