cloudapp 2.0.0.beta.3 → 2.0.0.beta.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. data/cloudapp.gemspec +3 -16
  2. data/lib/cloudapp/drop.rb +9 -4
  3. data/lib/cloudapp/drop_collection.rb +18 -3
  4. data/lib/cloudapp/service.rb +31 -9
  5. data/lib/cloudapp.rb +1 -3
  6. data/spec/cassettes/account_token.yml +88 -0
  7. data/spec/cassettes/create_bookmark.yml +75 -198
  8. data/spec/cassettes/create_bookmark_with_name.yml +76 -209
  9. data/spec/cassettes/create_bookmark_with_privacy.yml +76 -220
  10. data/spec/cassettes/list_drops.yml +49 -101
  11. data/spec/cassettes/list_drops_with_bad_token.yml +25 -37
  12. data/spec/cassettes/list_drops_with_filter.yml +73 -153
  13. data/spec/cassettes/list_drops_with_limit.yml +73 -155
  14. data/spec/cassettes/purge_drops.yml +259 -896
  15. data/spec/cassettes/setup_drops.yml +318 -666
  16. data/spec/cassettes/token_for_account.yml +53 -92
  17. data/spec/cassettes/token_for_account_with_bad_credentials.yml +51 -80
  18. data/spec/cassettes/upload_file.yml +119 -313
  19. data/spec/cassettes/upload_file_with_name.yml +121 -327
  20. data/spec/cassettes/upload_file_with_privacy.yml +120 -338
  21. data/spec/cassettes/view_drop.yml +26 -54
  22. data/spec/cloudapp/drop_collection_spec.rb +86 -22
  23. data/spec/cloudapp/drop_spec.rb +24 -1
  24. data/spec/cloudapp/service_spec.rb +183 -205
  25. data/spec/integration_spec.rb +43 -75
  26. data/spec/support/vcr.rb +1 -1
  27. metadata +3 -16
  28. data/lib/cloudapp/account.rb +0 -111
  29. data/lib/cloudapp/token.rb +0 -27
  30. data/spec/cassettes/delete_drop.yml +0 -383
  31. data/spec/cassettes/list_drops_with_href.yml +0 -287
  32. data/spec/cassettes/list_drops_with_href_and_filter.yml +0 -287
  33. data/spec/cassettes/list_drops_with_href_and_limit.yml +0 -287
  34. data/spec/cassettes/list_drops_with_nil_href.yml +0 -139
  35. data/spec/cassettes/recover_drop.yml +0 -628
  36. data/spec/cassettes/rename_drop.yml +0 -367
  37. data/spec/cassettes/trash_drop.yml +0 -478
  38. data/spec/cassettes/update_drop_bookmark_url.yml +0 -379
  39. data/spec/cassettes/update_file.yml +0 -573
  40. data/spec/cloudapp/account_spec.rb +0 -166
  41. data/spec/cloudapp/token_spec.rb +0 -33
data/cloudapp.gemspec CHANGED
@@ -13,8 +13,8 @@ Gem::Specification.new do |s|
13
13
  ## If your rubyforge_project name is different, then edit it and comment out
14
14
  ## the sub! line in the Rakefile
15
15
  s.name = 'cloudapp'
16
- s.version = '2.0.0.beta.3'
17
- s.date = '2012-08-21'
16
+ s.version = '2.0.0.beta.4'
17
+ s.date = '2012-08-25'
18
18
  s.rubyforge_project = 'cloudapp'
19
19
 
20
20
  ## Make sure your summary is short. The description may be as long
@@ -66,7 +66,6 @@ Gem::Specification.new do |s|
66
66
  Rakefile
67
67
  cloudapp.gemspec
68
68
  lib/cloudapp.rb
69
- lib/cloudapp/account.rb
70
69
  lib/cloudapp/authorized_representation.rb
71
70
  lib/cloudapp/collection_json.rb
72
71
  lib/cloudapp/collection_json/item.rb
@@ -76,33 +75,22 @@ Gem::Specification.new do |s|
76
75
  lib/cloudapp/drop.rb
77
76
  lib/cloudapp/drop_collection.rb
78
77
  lib/cloudapp/service.rb
79
- lib/cloudapp/token.rb
78
+ spec/cassettes/account_token.yml
80
79
  spec/cassettes/create_bookmark.yml
81
80
  spec/cassettes/create_bookmark_with_name.yml
82
81
  spec/cassettes/create_bookmark_with_privacy.yml
83
- spec/cassettes/delete_drop.yml
84
82
  spec/cassettes/list_drops.yml
85
83
  spec/cassettes/list_drops_with_bad_token.yml
86
84
  spec/cassettes/list_drops_with_filter.yml
87
- spec/cassettes/list_drops_with_href.yml
88
- spec/cassettes/list_drops_with_href_and_filter.yml
89
- spec/cassettes/list_drops_with_href_and_limit.yml
90
85
  spec/cassettes/list_drops_with_limit.yml
91
- spec/cassettes/list_drops_with_nil_href.yml
92
86
  spec/cassettes/purge_drops.yml
93
- spec/cassettes/recover_drop.yml
94
- spec/cassettes/rename_drop.yml
95
87
  spec/cassettes/setup_drops.yml
96
88
  spec/cassettes/token_for_account.yml
97
89
  spec/cassettes/token_for_account_with_bad_credentials.yml
98
- spec/cassettes/trash_drop.yml
99
- spec/cassettes/update_drop_bookmark_url.yml
100
- spec/cassettes/update_file.yml
101
90
  spec/cassettes/upload_file.yml
102
91
  spec/cassettes/upload_file_with_name.yml
103
92
  spec/cassettes/upload_file_with_privacy.yml
104
93
  spec/cassettes/view_drop.yml
105
- spec/cloudapp/account_spec.rb
106
94
  spec/cloudapp/authorized_representation_spec.rb
107
95
  spec/cloudapp/collection_json/item_spec.rb
108
96
  spec/cloudapp/collection_json/representation_spec.rb
@@ -110,7 +98,6 @@ Gem::Specification.new do |s|
110
98
  spec/cloudapp/drop_collection_spec.rb
111
99
  spec/cloudapp/drop_spec.rb
112
100
  spec/cloudapp/service_spec.rb
113
- spec/cloudapp/token_spec.rb
114
101
  spec/helper.rb
115
102
  spec/integration_spec.rb
116
103
  spec/support/files/favicon.ico
data/lib/cloudapp/drop.rb CHANGED
@@ -5,10 +5,11 @@ module CloudApp
5
5
  class Drop < OpenStruct
6
6
  attr_accessor :href, :data
7
7
 
8
- def initialize(collection_item)
9
- @href = collection_item.href
10
- @links = collection_item.links
11
- @data = collection_item.data
8
+ def initialize(collection_item, collection)
9
+ @href = collection_item.href
10
+ @links = collection_item.links
11
+ @data = collection_item.data
12
+ @collection = collection
12
13
  super @data
13
14
  end
14
15
 
@@ -22,6 +23,10 @@ module CloudApp
22
23
  def embed_url() link_for_relation('embed') end
23
24
  def download_url() link_for_relation('download') end
24
25
 
26
+ def trash() @collection.trash(self) end
27
+ def recover() @collection.recover(self) end
28
+ def delete() @collection.delete(self) end
29
+
25
30
  protected
26
31
 
27
32
  def link_for_relation(relation)
@@ -4,19 +4,34 @@ require 'forwardable'
4
4
  module CloudApp
5
5
  class DropCollection < SimpleDelegator
6
6
  extend Forwardable
7
- def_delegators :@representation, :authorized?, :unauthorized?, :link, :links
7
+ def_delegators :representation, :authorized?, :unauthorized?#, :link, :links
8
8
 
9
- def initialize(representation, drop_class = Drop)
9
+ attr_reader :representation, :drop_class
10
+
11
+ def initialize(representation, service, drop_class = Drop)
10
12
  @representation = representation
13
+ @service = service
11
14
  @drop_class = drop_class
12
15
  super drops
13
16
  end
14
17
 
18
+ def follow(relation)
19
+ self.class.new representation.link(relation).follow, nil, drop_class
20
+ end
21
+
22
+ def has_link?(relation)
23
+ !representation.link(relation) { nil }.nil?
24
+ end
25
+
26
+ def trash(drop) @service.trash_drop drop.href end
27
+ def recover(drop) @service.recover_drop drop.href end
28
+ def delete(drop) @service.delete_drop drop.href end
29
+
15
30
  protected
16
31
 
17
32
  def drops
18
33
  return [] if unauthorized?
19
- @drops ||= @representation.items.map {|drop| @drop_class.new(drop) }
34
+ @drops ||= representation.items.map {|drop| drop_class.new(drop, self) }
20
35
  end
21
36
  end
22
37
  end
@@ -3,6 +3,8 @@ require 'typhoeus'
3
3
  require 'cloudapp/authorized_representation'
4
4
  require 'cloudapp/collection_json'
5
5
  require 'cloudapp/collection_json/tint'
6
+ require 'cloudapp/drop'
7
+ require 'cloudapp/drop_collection'
6
8
 
7
9
  module CloudApp
8
10
  class Service
@@ -18,6 +20,7 @@ module CloudApp
18
20
 
19
21
  def initialize
20
22
  super
23
+ # logger.level = Logger::INFO
21
24
  logger.level = Logger::WARN
22
25
  end
23
26
 
@@ -31,7 +34,14 @@ module CloudApp
31
34
  end
32
35
  end
33
36
 
34
- def token_for_account(email, password)
37
+ def self.token_for_account(email, password)
38
+ representation = new.account_token email, password
39
+ return if representation.unauthorized?
40
+
41
+ representation.items.first.data['token']
42
+ end
43
+
44
+ def account_token(email, password)
35
45
  authenticate_response = root
36
46
  data = authenticate_response.template.
37
47
  fill('email' => email, 'password' => password)
@@ -41,15 +51,27 @@ module CloudApp
41
51
  end
42
52
  end
43
53
 
44
- def drops(options = {})
45
- href = options[:href] || :root
46
- params = options.has_key?(:href) ? {} : options
54
+ def drops(params = {})
55
+ params = params.each_with_object({}) {|(key, value), params|
56
+ params[key.to_s] = value
57
+ }
47
58
 
48
- drops_at href, params
59
+ get('/') do |response|
60
+ return DropCollection.new(response, self) if response.unauthorized?
61
+
62
+ drops = response.link('drops').follow
63
+ return DropCollection.new(drops, self) if params.empty?
64
+
65
+ drops_query = drops.query 'drops-list'
66
+ href = Addressable::URI.parse drops_query.href
67
+ href.query_values = drops_query.fill params
68
+
69
+ get(href) do |response| return DropCollection.new(response, self) end
70
+ end
49
71
  end
50
72
 
51
- def drop_at(href)
52
- drops_at href
73
+ def drop(href)
74
+ DropCollection.new drops_at(href), self
53
75
  end
54
76
 
55
77
  def update(href, options = {})
@@ -74,7 +96,7 @@ module CloudApp
74
96
  data = collection.template.fill(attributes)
75
97
 
76
98
  post(collection.href, data) do |response|
77
- return response
99
+ return DropCollection.new response, self
78
100
  end
79
101
  end
80
102
 
@@ -84,7 +106,7 @@ module CloudApp
84
106
  data = collection.template.fill(attributes)
85
107
 
86
108
  post(collection.href, data) do |collection|
87
- return upload_file(path, collection)
109
+ return DropCollection.new upload_file(path, collection), self
88
110
  end
89
111
  end
90
112
 
data/lib/cloudapp.rb CHANGED
@@ -1,7 +1,5 @@
1
- require 'cloudapp/account'
2
1
  require 'cloudapp/service'
3
- require 'cloudapp/token'
4
2
 
5
3
  module CloudApp
6
- VERSION = '2.0.0.beta.3'
4
+ VERSION = '2.0.0.beta.4'
7
5
  end
@@ -0,0 +1,88 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.getcloudapp.com/
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - application/json, text/x-yaml, application/xml, application/xhtml+xml, text/html,
12
+ text/plain
13
+ Accept-Encoding:
14
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
15
+ User-Agent:
16
+ - Ruby
17
+ response:
18
+ status:
19
+ code: 401
20
+ message: Unauthorized
21
+ headers:
22
+ Cache-Control:
23
+ - no-cache
24
+ Content-Type:
25
+ - application/vnd.collection+json; charset=utf-8
26
+ Server:
27
+ - thin 1.4.1 codename Chromeo
28
+ Www-Authenticate:
29
+ - Token realm="CloudApp"
30
+ X-Runtime:
31
+ - '0.003172'
32
+ X-Ua-Compatible:
33
+ - IE=Edge,chrome=1
34
+ Content-Length:
35
+ - '231'
36
+ Connection:
37
+ - keep-alive
38
+ body:
39
+ encoding: US-ASCII
40
+ string: ! '{"collection":{"version":"1.0","href":"https://api.getcloudapp.com/account/token","links":[{"rel":"root","href":"https://api.getcloudapp.com/"}],"template":{"data":[{"name":"email","value":null},{"name":"password","value":null}]}}}'
41
+ http_version:
42
+ recorded_at: Fri, 24 Aug 2012 20:43:21 GMT
43
+ - request:
44
+ method: post
45
+ uri: https://api.getcloudapp.com/account/token
46
+ body:
47
+ encoding: UTF-8
48
+ string: ! '{"email":"arthur@dent.com","password":"towel"}'
49
+ headers:
50
+ Content-Type:
51
+ - application/json
52
+ Accept:
53
+ - application/json, text/x-yaml, application/xml, application/xhtml+xml, text/html,
54
+ text/plain
55
+ User-Agent:
56
+ - Ruby
57
+ response:
58
+ status:
59
+ code: 201
60
+ message: Created
61
+ headers:
62
+ Cache-Control:
63
+ - max-age=0, private, must-revalidate
64
+ Content-Type:
65
+ - application/vnd.collection+json; charset=utf-8
66
+ Etag:
67
+ - ! '"4438a3f4f703a01c251b7ecc1feab772"'
68
+ Server:
69
+ - thin 1.4.1 codename Chromeo
70
+ Set-Cookie:
71
+ - _engine_session=BAh7CEkiFXVzZXJfY3JlZGVudGlhbHMGOgZFRkkiAYBhOGUwNDBkMDY3YWJkMTEyZGM1NTJhOTlkMjYyNmU1NzU0Y2FmZjc3MDEzZTc0ZDU5NTFjMTI2M2QxYTEyMGQxNThjZjI3ZDgzNmVmN2QyMmEwZjQzN2RlMjg3NGE3OWQwMWM4NWViOWFmYTVmMzQ1ZGFjZjQyZDAxNjlkMTY4MwY7AFRJIhh1c2VyX2NyZWRlbnRpYWxzX2lkBjsARmkDp4EBSSIPc2Vzc2lvbl9pZAY7AEZJIiVjM2VhMzliN2MzZDMzMjEyYWZiOGU2ZWQzNTM5MTIxZAY7AFQ%3D--3c536cf8834d3f78bbb164613a405dc6b4c4bf66;
72
+ path=/; HttpOnly
73
+ - user_credentials=a8e040d067abd112dc552a99d2626e5754caff77013e74d5951c1263d1a120d158cf27d836ef7d22a0f437de2874a79d01c85eb9afa5f345dacf42d0169d1683%3A%3A98727;
74
+ path=/; expires=Sat, 24-Nov-2012 20:43:21 GMT
75
+ X-Runtime:
76
+ - '0.015032'
77
+ X-Ua-Compatible:
78
+ - IE=Edge,chrome=1
79
+ Transfer-Encoding:
80
+ - chunked
81
+ Connection:
82
+ - keep-alive
83
+ body:
84
+ encoding: US-ASCII
85
+ string: ! '{"collection":{"version":"1.0","href":"https://api.getcloudapp.com/account/token","links":[{"rel":"root","href":"https://api.getcloudapp.com/"}],"items":[{"href":"https://api.getcloudapp.com/account/token","data":[{"name":"token","value":"abc123"}]}]}}'
86
+ http_version:
87
+ recorded_at: Fri, 24 Aug 2012 20:43:21 GMT
88
+ recorded_with: VCR 2.0.1
@@ -12,46 +12,36 @@ http_interactions:
12
12
  Accept:
13
13
  - application/json, text/x-yaml, application/xml, application/xhtml+xml, text/html,
14
14
  text/plain
15
+ Accept-Encoding:
16
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
17
+ User-Agent:
18
+ - Ruby
15
19
  response:
16
20
  status:
17
21
  code: 200
18
- message: !binary |-
19
- T0s=
22
+ message: OK
20
23
  headers:
21
- !binary "Q2FjaGUtQ29udHJvbA==":
22
- - !binary |-
23
- bWF4LWFnZT0wLCBwcml2YXRlLCBtdXN0LXJldmFsaWRhdGU=
24
- !binary "Q29udGVudC1UeXBl":
25
- - !binary |-
26
- YXBwbGljYXRpb24vdm5kLmNvbGxlY3Rpb24ranNvbjsgY2hhcnNldD11dGYt
27
- OA==
28
- !binary "RXRhZw==":
29
- - !binary |-
30
- IjQ0ZThlMDAzZTBmMWI1ZTM4ZjdjYTkxNmZmNDQ5N2Q3Ig==
31
- !binary "U2VydmVy":
32
- - !binary |-
33
- dGhpbiAxLjQuMSBjb2RlbmFtZSBDaHJvbWVv
34
- !binary "WC1SdW50aW1l":
35
- - !binary |-
36
- MC4wMTE1NDk=
37
- !binary "WC1VYS1Db21wYXRpYmxl":
38
- - !binary |-
39
- SUU9RWRnZSxjaHJvbWU9MQ==
40
- !binary "VHJhbnNmZXItRW5jb2Rpbmc=":
41
- - !binary |-
42
- Y2h1bmtlZA==
43
- !binary "Q29ubmVjdGlvbg==":
44
- - !binary |-
45
- a2VlcC1hbGl2ZQ==
24
+ Cache-Control:
25
+ - max-age=0, private, must-revalidate
26
+ Content-Type:
27
+ - application/vnd.collection+json; charset=utf-8
28
+ Etag:
29
+ - ! '"44e8e003e0f1b5e38f7ca916ff4497d7"'
30
+ Server:
31
+ - thin 1.4.1 codename Chromeo
32
+ X-Runtime:
33
+ - '0.009253'
34
+ X-Ua-Compatible:
35
+ - IE=Edge,chrome=1
36
+ Content-Length:
37
+ - '139'
38
+ Connection:
39
+ - keep-alive
46
40
  body:
47
- encoding: ASCII-8BIT
48
- string: !binary |-
49
- eyJjb2xsZWN0aW9uIjp7InZlcnNpb24iOiIxLjAiLCJocmVmIjoiaHR0cHM6
50
- Ly9hcGkuZ2V0Y2xvdWRhcHAuY29tLyIsImxpbmtzIjpbeyJyZWwiOiJkcm9w
51
- cyIsImhyZWYiOiJodHRwczovL2FwaS5nZXRjbG91ZGFwcC5jb20vZHJvcHMi
52
- fV19fQ==
41
+ encoding: US-ASCII
42
+ string: ! '{"collection":{"version":"1.0","href":"https://api.getcloudapp.com/","links":[{"rel":"drops","href":"https://api.getcloudapp.com/drops"}]}}'
53
43
  http_version:
54
- recorded_at: Fri, 17 Aug 2012 18:11:48 GMT
44
+ recorded_at: Fri, 24 Aug 2012 20:43:33 GMT
55
45
  - request:
56
46
  method: get
57
47
  uri: https://api.getcloudapp.com/drops
@@ -64,115 +54,36 @@ http_interactions:
64
54
  Accept:
65
55
  - application/json, text/x-yaml, application/xml, application/xhtml+xml, text/html,
66
56
  text/plain
57
+ Accept-Encoding:
58
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
59
+ User-Agent:
60
+ - Ruby
67
61
  response:
68
62
  status:
69
63
  code: 200
70
- message: !binary |-
71
- T0s=
64
+ message: OK
72
65
  headers:
73
- !binary "Q2FjaGUtQ29udHJvbA==":
74
- - !binary |-
75
- bWF4LWFnZT0wLCBwcml2YXRlLCBtdXN0LXJldmFsaWRhdGU=
76
- !binary "Q29udGVudC1UeXBl":
77
- - !binary |-
78
- YXBwbGljYXRpb24vdm5kLmNvbGxlY3Rpb24ranNvbjsgY2hhcnNldD11dGYt
79
- OA==
80
- !binary "RXRhZw==":
81
- - !binary |-
82
- ImE1ZjU0NTU2NGI0NjNiN2I0ZDI5YTlmOTJlNDA3MDU1Ig==
83
- !binary "U2VydmVy":
84
- - !binary |-
85
- dGhpbiAxLjQuMSBjb2RlbmFtZSBDaHJvbWVv
86
- !binary "WC1SdW50aW1l":
87
- - !binary |-
88
- MC4wMzkzOTE=
89
- !binary "WC1VYS1Db21wYXRpYmxl":
90
- - !binary |-
91
- SUU9RWRnZSxjaHJvbWU9MQ==
92
- !binary "VHJhbnNmZXItRW5jb2Rpbmc=":
93
- - !binary |-
94
- Y2h1bmtlZA==
95
- !binary "Q29ubmVjdGlvbg==":
96
- - !binary |-
97
- a2VlcC1hbGl2ZQ==
66
+ Cache-Control:
67
+ - max-age=0, private, must-revalidate
68
+ Content-Type:
69
+ - application/vnd.collection+json; charset=utf-8
70
+ Etag:
71
+ - ! '"47b61ccba7fbae8a22e1be29f6eb50b8"'
72
+ Server:
73
+ - thin 1.4.1 codename Chromeo
74
+ X-Runtime:
75
+ - '0.120766'
76
+ X-Ua-Compatible:
77
+ - IE=Edge,chrome=1
78
+ Transfer-Encoding:
79
+ - chunked
80
+ Connection:
81
+ - keep-alive
98
82
  body:
99
- encoding: ASCII-8BIT
100
- string: !binary |-
101
- eyJjb2xsZWN0aW9uIjp7InZlcnNpb24iOiIxLjAiLCJocmVmIjoiaHR0cHM6
102
- Ly9hcGkuZ2V0Y2xvdWRhcHAuY29tL2Ryb3BzIiwibGlua3MiOlt7InJlbCI6
103
- ImRyb3BzLXN0cmVhbSIsImhyZWYiOiJodHRwczovL2FwaS5nZXRjbG91ZGFw
104
- cC5jb20vZHJvcHMvc3RyZWFtIn1dLCJxdWVyaWVzIjpbeyJocmVmIjoiaHR0
105
- cHM6Ly9hcGkuZ2V0Y2xvdWRhcHAuY29tL2Ryb3BzIiwicmVsIjoiZHJvcHMt
106
- bGlzdCIsImRhdGEiOlt7Im5hbWUiOiJmaWx0ZXIiLCJ2YWx1ZSI6ImFjdGl2
107
- ZSJ9LHsibmFtZSI6ImxpbWl0IiwidmFsdWUiOjIwfV19XSwidGVtcGxhdGUi
108
- OnsiZGF0YSI6W3sibmFtZSI6Im5hbWUiLCJ2YWx1ZSI6bnVsbH0seyJuYW1l
109
- IjoicHJpdmF0ZSIsInZhbHVlIjp0cnVlfSx7Im5hbWUiOiJ0cmFzaCIsInZh
110
- bHVlIjpmYWxzZX0seyJuYW1lIjoiYm9va21hcmtfdXJsIiwidmFsdWUiOm51
111
- bGx9LHsibmFtZSI6ImZpbGVfc2l6ZSIsInZhbHVlIjpudWxsfV19LCJpdGVt
112
- cyI6W3siaHJlZiI6Imh0dHBzOi8vYXBpLmdldGNsb3VkYXBwLmNvbS9kcm9w
113
- cy8yMTE4NTg5NyIsImxpbmtzIjpbeyJyZWwiOiJjb2xsZWN0aW9uIiwiaHJl
114
- ZiI6Imh0dHBzOi8vYXBpLmdldGNsb3VkYXBwLmNvbS9kcm9wcyJ9LHsicmVs
115
- IjoiY2Fub25pY2FsIiwiaHJlZiI6Imh0dHA6Ly9jbC5seS9pbWFnZS8ydTNY
116
- M28yajFpMlAifSx7InJlbCI6Imljb24iLCJocmVmIjoiaHR0cHM6Ly90aHVt
117
- YnMuZ2V0Y2xvdWRhcHAuY29tLzJ1M1gzbzJqMWkyUCJ9LHsicmVsIjoiZW1i
118
- ZWQiLCJocmVmIjoiaHR0cDovL2NsLmx5L2ltYWdlLzJ1M1gzbzJqMWkyUC9m
119
- YXZpY29uLmljbyJ9LHsicmVsIjoiZG93bmxvYWQiLCJocmVmIjoiaHR0cDov
120
- L2NsLmx5L2ltYWdlLzJ1M1gzbzJqMWkyUC9kb3dubG9hZC9mYXZpY29uLmlj
121
- byJ9XSwiZGF0YSI6W3sibmFtZSI6ImlkIiwidmFsdWUiOjIxMTg1ODk3fSx7
122
- Im5hbWUiOiJuYW1lIiwidmFsdWUiOiJodHRwOi8vZ2V0Y2xvdWRhcHAuY29t
123
- In0seyJuYW1lIjoicHJpdmF0ZSIsInZhbHVlIjp0cnVlfSx7Im5hbWUiOiJ0
124
- cmFzaCIsInZhbHVlIjpmYWxzZX0seyJuYW1lIjoidmlld3MiLCJ2YWx1ZSI6
125
- MH0seyJuYW1lIjoiY3JlYXRlZCIsInZhbHVlIjoiMjAxMi0wOC0xN1QxODox
126
- MTo0N1oifV19LHsiaHJlZiI6Imh0dHBzOi8vYXBpLmdldGNsb3VkYXBwLmNv
127
- bS9kcm9wcy8yMTE4NTg5NiIsImxpbmtzIjpbeyJyZWwiOiJjb2xsZWN0aW9u
128
- IiwiaHJlZiI6Imh0dHBzOi8vYXBpLmdldGNsb3VkYXBwLmNvbS9kcm9wcyJ9
129
- LHsicmVsIjoiY2Fub25pY2FsIiwiaHJlZiI6Imh0dHA6Ly9jbC5seS8yZzFT
130
- MXkzZzNiMk8ifSx7InJlbCI6Imljb24iLCJocmVmIjoiaHR0cHM6Ly9kOXlh
131
- YzEzNnUwNDh6LmNsb3VkZnJvbnQubmV0L2ltYWdlcy90aHVtYm5haWxzL2Jv
132
- b2ttYXJrLnBuZyJ9XSwiZGF0YSI6W3sibmFtZSI6ImlkIiwidmFsdWUiOjIx
133
- MTg1ODk2fSx7Im5hbWUiOiJuYW1lIiwidmFsdWUiOiJodHRwOi8vZ2V0Y2xv
134
- dWRhcHAuY29tIn0seyJuYW1lIjoicHJpdmF0ZSIsInZhbHVlIjp0cnVlfSx7
135
- Im5hbWUiOiJ0cmFzaCIsInZhbHVlIjpmYWxzZX0seyJuYW1lIjoidmlld3Mi
136
- LCJ2YWx1ZSI6MH0seyJuYW1lIjoiY3JlYXRlZCIsInZhbHVlIjoiMjAxMi0w
137
- OC0xN1QxODoxMTo0NVoifV19LHsiaHJlZiI6Imh0dHBzOi8vYXBpLmdldGNs
138
- b3VkYXBwLmNvbS9kcm9wcy8yMTE4NTg5NSIsImxpbmtzIjpbeyJyZWwiOiJj
139
- b2xsZWN0aW9uIiwiaHJlZiI6Imh0dHBzOi8vYXBpLmdldGNsb3VkYXBwLmNv
140
- bS9kcm9wcyJ9LHsicmVsIjoiY2Fub25pY2FsIiwiaHJlZiI6Imh0dHA6Ly9j
141
- bC5seS9JcGZjIn0seyJyZWwiOiJpY29uIiwiaHJlZiI6Imh0dHBzOi8vZDl5
142
- YWMxMzZ1MDQ4ei5jbG91ZGZyb250Lm5ldC9pbWFnZXMvdGh1bWJuYWlscy9i
143
- b29rbWFyay5wbmcifV0sImRhdGEiOlt7Im5hbWUiOiJpZCIsInZhbHVlIjoy
144
- MTE4NTg5NX0seyJuYW1lIjoibmFtZSIsInZhbHVlIjoiTmV3IERyb3AgTmFt
145
- ZSJ9LHsibmFtZSI6InByaXZhdGUiLCJ2YWx1ZSI6ZmFsc2V9LHsibmFtZSI6
146
- InRyYXNoIiwidmFsdWUiOmZhbHNlfSx7Im5hbWUiOiJ2aWV3cyIsInZhbHVl
147
- IjowfSx7Im5hbWUiOiJjcmVhdGVkIiwidmFsdWUiOiIyMDEyLTA4LTE3VDE4
148
- OjExOjQ0WiJ9XX0seyJocmVmIjoiaHR0cHM6Ly9hcGkuZ2V0Y2xvdWRhcHAu
149
- Y29tL2Ryb3BzLzIxMTg1ODkwIiwibGlua3MiOlt7InJlbCI6ImNvbGxlY3Rp
150
- b24iLCJocmVmIjoiaHR0cHM6Ly9hcGkuZ2V0Y2xvdWRhcHAuY29tL2Ryb3Bz
151
- In0seyJyZWwiOiJjYW5vbmljYWwiLCJocmVmIjoiaHR0cDovL2NsLmx5L0lw
152
- ODUifSx7InJlbCI6Imljb24iLCJocmVmIjoiaHR0cHM6Ly9kOXlhYzEzNnUw
153
- NDh6LmNsb3VkZnJvbnQubmV0L2ltYWdlcy90aHVtYm5haWxzL2Jvb2ttYXJr
154
- LnBuZyJ9XSwiZGF0YSI6W3sibmFtZSI6ImlkIiwidmFsdWUiOjIxMTg1ODkw
155
- fSx7Im5hbWUiOiJuYW1lIiwidmFsdWUiOiJodHRwOi8vY2wubHkifSx7Im5h
156
- bWUiOiJwcml2YXRlIiwidmFsdWUiOmZhbHNlfSx7Im5hbWUiOiJ0cmFzaCIs
157
- InZhbHVlIjpmYWxzZX0seyJuYW1lIjoidmlld3MiLCJ2YWx1ZSI6MH0seyJu
158
- YW1lIjoiY3JlYXRlZCIsInZhbHVlIjoiMjAxMi0wOC0xN1QxODoxMTozOVoi
159
- fV19LHsiaHJlZiI6Imh0dHBzOi8vYXBpLmdldGNsb3VkYXBwLmNvbS9kcm9w
160
- cy8yMTE4NTg4OSIsImxpbmtzIjpbeyJyZWwiOiJjb2xsZWN0aW9uIiwiaHJl
161
- ZiI6Imh0dHBzOi8vYXBpLmdldGNsb3VkYXBwLmNvbS9kcm9wcyJ9LHsicmVs
162
- IjoiY2Fub25pY2FsIiwiaHJlZiI6Imh0dHA6Ly9jbC5seS9pbWFnZS8xYTBW
163
- M2EyajBCMjgifSx7InJlbCI6Imljb24iLCJocmVmIjoiaHR0cHM6Ly90aHVt
164
- YnMuZ2V0Y2xvdWRhcHAuY29tLzFhMFYzYTJqMEIyOCJ9LHsicmVsIjoiZW1i
165
- ZWQiLCJocmVmIjoiaHR0cDovL2NsLmx5L2ltYWdlLzFhMFYzYTJqMEIyOC9m
166
- YXZpY29uLmljbyJ9LHsicmVsIjoiZG93bmxvYWQiLCJocmVmIjoiaHR0cDov
167
- L2NsLmx5L2ltYWdlLzFhMFYzYTJqMEIyOC9kb3dubG9hZC9mYXZpY29uLmlj
168
- byJ9XSwiZGF0YSI6W3sibmFtZSI6ImlkIiwidmFsdWUiOjIxMTg1ODg5fSx7
169
- Im5hbWUiOiJuYW1lIiwidmFsdWUiOiJmYXZpY29uLmljbyJ9LHsibmFtZSI6
170
- InByaXZhdGUiLCJ2YWx1ZSI6dHJ1ZX0seyJuYW1lIjoidHJhc2giLCJ2YWx1
171
- ZSI6ZmFsc2V9LHsibmFtZSI6InZpZXdzIiwidmFsdWUiOjB9LHsibmFtZSI6
172
- ImNyZWF0ZWQiLCJ2YWx1ZSI6IjIwMTItMDgtMTdUMTg6MTE6MzlaIn1dfV19
173
- fQ==
83
+ encoding: US-ASCII
84
+ string: ! '{"collection":{"version":"1.0","href":"https://api.getcloudapp.com/drops","links":[{"rel":"drops-stream","href":"https://api.getcloudapp.com/drops/stream"}],"queries":[{"href":"https://api.getcloudapp.com/drops","rel":"drops-list","data":[{"name":"filter","value":"active"},{"name":"limit","value":20}]}],"template":{"data":[{"name":"name","value":null},{"name":"private","value":true},{"name":"trash","value":false},{"name":"bookmark_url","value":null},{"name":"file_size","value":null}]},"items":[{"href":"https://api.getcloudapp.com/drops/21399180","links":[{"rel":"collection","href":"https://api.getcloudapp.com/drops"},{"rel":"canonical","href":"http://cl.ly/IzhX"},{"rel":"icon","href":"https://d9yac136u048z.cloudfront.net/images/thumbnails/bookmark.png"}],"data":[{"name":"id","value":21399180},{"name":"name","value":"http://cl.ly"},{"name":"private","value":false},{"name":"trash","value":false},{"name":"views","value":0},{"name":"created","value":"2012-08-24T20:43:24Z"}]},{"href":"https://api.getcloudapp.com/drops/21399179","links":[{"rel":"collection","href":"https://api.getcloudapp.com/drops"},{"rel":"canonical","href":"http://cl.ly/image/2D0r2k0z2u2E"},{"rel":"icon","href":"https://thumbs.getcloudapp.com/2D0r2k0z2u2E"},{"rel":"embed","href":"http://cl.ly/image/2D0r2k0z2u2E/favicon.ico"},{"rel":"download","href":"http://cl.ly/image/2D0r2k0z2u2E/download/favicon.ico"}],"data":[{"name":"id","value":21399179},{"name":"name","value":"favicon.ico"},{"name":"private","value":true},{"name":"trash","value":false},{"name":"views","value":0},{"name":"created","value":"2012-08-24T20:43:22Z"}]}]}}'
174
85
  http_version:
175
- recorded_at: Fri, 17 Aug 2012 18:11:48 GMT
86
+ recorded_at: Fri, 24 Aug 2012 20:43:33 GMT
176
87
  - request:
177
88
  method: post
178
89
  uri: https://api.getcloudapp.com/drops
@@ -182,74 +93,40 @@ http_interactions:
182
93
  headers:
183
94
  Authorization:
184
95
  - Token token="abc123"
185
- !binary "Q29udGVudC1UeXBl":
96
+ Content-Type:
186
97
  - application/json
187
98
  Accept:
188
99
  - application/json, text/x-yaml, application/xml, application/xhtml+xml, text/html,
189
100
  text/plain
101
+ User-Agent:
102
+ - Ruby
190
103
  response:
191
104
  status:
192
105
  code: 201
193
- message: !binary |-
194
- Q3JlYXRlZA==
106
+ message: Created
195
107
  headers:
196
- !binary "Q2FjaGUtQ29udHJvbA==":
197
- - !binary |-
198
- bWF4LWFnZT0wLCBwcml2YXRlLCBtdXN0LXJldmFsaWRhdGU=
199
- !binary "Q29udGVudC1UeXBl":
200
- - !binary |-
201
- YXBwbGljYXRpb24vdm5kLmNvbGxlY3Rpb24ranNvbjsgY2hhcnNldD11dGYt
202
- OA==
203
- !binary "RXRhZw==":
204
- - !binary |-
205
- IjUwOTA0MTRiMDEzZTk3OWFmZTYxOTQzMGYxMjgwNmYxIg==
206
- !binary "U2VydmVy":
207
- - !binary |-
208
- dGhpbiAxLjQuMSBjb2RlbmFtZSBDaHJvbWVv
209
- !binary "U2V0LUNvb2tpZQ==":
210
- - !binary |-
211
- X2VuZ2luZV9zZXNzaW9uPUJBaDdCa2tpRDNObGMzTnBiMjVmYVdRR09nWkZS
212
- a2tpSlRRMlpUSTBOVE01T0RBek5UUTVZemczWldVME9URTNNalV5T1dFMU9U
213
- VmlCanNBVkElM0QlM0QtLTg5ZWY5MjFiZGY0NDJlOTc5NjQzZmZiM2QxMGY0
214
- YjdmZjc3ZGIzYmU7IHBhdGg9LzsgSHR0cE9ubHk=
215
- !binary "WC1SdW50aW1l":
216
- - !binary |-
217
- MC4wNjc2MDU=
218
- !binary "WC1VYS1Db21wYXRpYmxl":
219
- - !binary |-
220
- SUU9RWRnZSxjaHJvbWU9MQ==
221
- !binary "VHJhbnNmZXItRW5jb2Rpbmc=":
222
- - !binary |-
223
- Y2h1bmtlZA==
224
- !binary "Q29ubmVjdGlvbg==":
225
- - !binary |-
226
- a2VlcC1hbGl2ZQ==
108
+ Cache-Control:
109
+ - max-age=0, private, must-revalidate
110
+ Content-Type:
111
+ - application/vnd.collection+json; charset=utf-8
112
+ Etag:
113
+ - ! '"62043352a419fa740e0cc79766384e51"'
114
+ Server:
115
+ - thin 1.4.1 codename Chromeo
116
+ Set-Cookie:
117
+ - _engine_session=BAh7BkkiD3Nlc3Npb25faWQGOgZFRkkiJTIxNWEwZDdjYzQ4YzhmNjNkNjNkYzA3ZjhkYjI4Yzg3BjsAVA%3D%3D--25497c79703f55d2ba0bd061e86b103a0f636c08;
118
+ path=/; HttpOnly
119
+ X-Runtime:
120
+ - '0.035032'
121
+ X-Ua-Compatible:
122
+ - IE=Edge,chrome=1
123
+ Content-Length:
124
+ - '1005'
125
+ Connection:
126
+ - keep-alive
227
127
  body:
228
- encoding: ASCII-8BIT
229
- string: !binary |-
230
- eyJjb2xsZWN0aW9uIjp7InZlcnNpb24iOiIxLjAiLCJocmVmIjoiaHR0cHM6
231
- Ly9hcGkuZ2V0Y2xvdWRhcHAuY29tL2Ryb3BzIiwibGlua3MiOlt7InJlbCI6
232
- ImRyb3BzLXN0cmVhbSIsImhyZWYiOiJodHRwczovL2FwaS5nZXRjbG91ZGFw
233
- cC5jb20vZHJvcHMvc3RyZWFtIn1dLCJxdWVyaWVzIjpbeyJocmVmIjoiaHR0
234
- cHM6Ly9hcGkuZ2V0Y2xvdWRhcHAuY29tL2Ryb3BzIiwicmVsIjoiZHJvcHMt
235
- bGlzdCIsImRhdGEiOlt7Im5hbWUiOiJmaWx0ZXIiLCJ2YWx1ZSI6ImFjdGl2
236
- ZSJ9LHsibmFtZSI6ImxpbWl0IiwidmFsdWUiOjIwfV19XSwidGVtcGxhdGUi
237
- OnsiZGF0YSI6W3sibmFtZSI6Im5hbWUiLCJ2YWx1ZSI6bnVsbH0seyJuYW1l
238
- IjoicHJpdmF0ZSIsInZhbHVlIjp0cnVlfSx7Im5hbWUiOiJ0cmFzaCIsInZh
239
- bHVlIjpmYWxzZX0seyJuYW1lIjoiYm9va21hcmtfdXJsIiwidmFsdWUiOm51
240
- bGx9LHsibmFtZSI6ImZpbGVfc2l6ZSIsInZhbHVlIjpudWxsfV19LCJpdGVt
241
- cyI6W3siaHJlZiI6Imh0dHBzOi8vYXBpLmdldGNsb3VkYXBwLmNvbS9kcm9w
242
- cy8yMTE4NTg5OSIsImxpbmtzIjpbeyJyZWwiOiJjb2xsZWN0aW9uIiwiaHJl
243
- ZiI6Imh0dHBzOi8vYXBpLmdldGNsb3VkYXBwLmNvbS9kcm9wcyJ9LHsicmVs
244
- IjoiY2Fub25pY2FsIiwiaHJlZiI6Imh0dHA6Ly9jbC5seS8wTjB3MUMxZjFi
245
- MjMifSx7InJlbCI6Imljb24iLCJocmVmIjoiaHR0cHM6Ly9kOXlhYzEzNnUw
246
- NDh6LmNsb3VkZnJvbnQubmV0L2ltYWdlcy90aHVtYm5haWxzL2Jvb2ttYXJr
247
- LnBuZyJ9XSwiZGF0YSI6W3sibmFtZSI6ImlkIiwidmFsdWUiOjIxMTg1ODk5
248
- fSx7Im5hbWUiOiJuYW1lIiwidmFsdWUiOiJodHRwOi8vZ2V0Y2xvdWRhcHAu
249
- Y29tIn0seyJuYW1lIjoicHJpdmF0ZSIsInZhbHVlIjp0cnVlfSx7Im5hbWUi
250
- OiJ0cmFzaCIsInZhbHVlIjpmYWxzZX0seyJuYW1lIjoidmlld3MiLCJ2YWx1
251
- ZSI6MH0seyJuYW1lIjoiY3JlYXRlZCIsInZhbHVlIjoiMjAxMi0wOC0xN1Qx
252
- ODoxMTo0OFoifV19XX19
128
+ encoding: US-ASCII
129
+ string: ! '{"collection":{"version":"1.0","href":"https://api.getcloudapp.com/drops","links":[{"rel":"drops-stream","href":"https://api.getcloudapp.com/drops/stream"}],"queries":[{"href":"https://api.getcloudapp.com/drops","rel":"drops-list","data":[{"name":"filter","value":"active"},{"name":"limit","value":20}]}],"template":{"data":[{"name":"name","value":null},{"name":"private","value":true},{"name":"trash","value":false},{"name":"bookmark_url","value":null},{"name":"file_size","value":null}]},"items":[{"href":"https://api.getcloudapp.com/drops/21399186","links":[{"rel":"collection","href":"https://api.getcloudapp.com/drops"},{"rel":"canonical","href":"http://cl.ly/182Y3i0P0h03"},{"rel":"icon","href":"https://d9yac136u048z.cloudfront.net/images/thumbnails/bookmark.png"}],"data":[{"name":"id","value":21399186},{"name":"name","value":"http://getcloudapp.com"},{"name":"private","value":true},{"name":"trash","value":false},{"name":"views","value":0},{"name":"created","value":"2012-08-24T20:43:34Z"}]}]}}'
253
130
  http_version:
254
- recorded_at: Fri, 17 Aug 2012 18:11:48 GMT
255
- recorded_with: VCR 2.0.0
131
+ recorded_at: Fri, 24 Aug 2012 20:43:34 GMT
132
+ recorded_with: VCR 2.0.1