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

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 (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