parse-ruby-client 0.1.14 → 0.1.15

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 (67) hide show
  1. data/.travis.yml +3 -2
  2. data/Gemfile +12 -12
  3. data/Gemfile.lock +26 -12
  4. data/OLD_README.md +255 -0
  5. data/README.md +1038 -144
  6. data/Rakefile +2 -10
  7. data/VERSION +1 -1
  8. data/features.md +11 -11
  9. data/fixtures/vcr_cassettes/test_acls_arent_objects.yml +180 -0
  10. data/fixtures/vcr_cassettes/test_array_add.yml +20 -20
  11. data/fixtures/vcr_cassettes/test_array_add_pointerizing.yml +239 -0
  12. data/fixtures/vcr_cassettes/test_array_add_unique.yml +180 -0
  13. data/fixtures/vcr_cassettes/test_batch_create_object.yml +53 -80
  14. data/fixtures/vcr_cassettes/test_batch_delete_object.yml +303 -428
  15. data/fixtures/vcr_cassettes/test_batch_run.yml +53 -74
  16. data/fixtures/vcr_cassettes/test_batch_update_object.yml +303 -432
  17. data/fixtures/vcr_cassettes/test_circular_save.yml +121 -0
  18. data/fixtures/vcr_cassettes/test_created_at.yml +53 -74
  19. data/fixtures/vcr_cassettes/test_decrement.yml +121 -0
  20. data/fixtures/vcr_cassettes/test_deep_parse.yml +154 -218
  21. data/fixtures/vcr_cassettes/test_destroy.yml +104 -144
  22. data/fixtures/vcr_cassettes/test_eq_pointerize.yml +239 -0
  23. data/fixtures/vcr_cassettes/test_equality.yml +180 -0
  24. data/fixtures/vcr_cassettes/test_get.yml +104 -146
  25. data/fixtures/vcr_cassettes/test_get_missing.yml +60 -0
  26. data/fixtures/vcr_cassettes/test_include.yml +27 -27
  27. data/fixtures/vcr_cassettes/test_new_model.yml +53 -146
  28. data/fixtures/vcr_cassettes/test_new_object.yml +53 -74
  29. data/fixtures/vcr_cassettes/test_nils_delete_keys.yml +155 -216
  30. data/fixtures/vcr_cassettes/test_parse_delete.yml +204 -284
  31. data/fixtures/vcr_cassettes/test_pointer.yml +53 -74
  32. data/fixtures/vcr_cassettes/test_save_with_sub_objects.yml +298 -0
  33. data/fixtures/vcr_cassettes/test_saving_boolean_values.yml +121 -0
  34. data/fixtures/vcr_cassettes/test_server_update.yml +257 -358
  35. data/fixtures/vcr_cassettes/test_simple_save.yml +53 -74
  36. data/fixtures/vcr_cassettes/test_text_file_save.yml +53 -161
  37. data/fixtures/vcr_cassettes/test_update.yml +104 -144
  38. data/fixtures/vcr_cassettes/test_updated_at.yml +104 -144
  39. data/fixtures/vcr_cassettes/test_user_save.yml +10 -10
  40. data/lib/parse/client.rb +43 -6
  41. data/lib/parse/datatypes.rb +14 -35
  42. data/lib/parse/error.rb +8 -0
  43. data/lib/parse/object.rb +25 -20
  44. data/lib/parse/protocol.rb +3 -4
  45. data/lib/parse/query.rb +10 -9
  46. data/lib/parse/util.rb +36 -2
  47. data/parse-ruby-client.gemspec +22 -18
  48. data/test/helper.rb +33 -5
  49. data/test/test_batch.rb +1 -4
  50. data/test/test_client.rb +59 -7
  51. data/test/test_cloud.rb +3 -7
  52. data/test/test_datatypes.rb +6 -7
  53. data/test/test_file.rb +9 -10
  54. data/test/test_model.rb +1 -4
  55. data/test/test_object.rb +148 -6
  56. data/test/test_push.rb +1 -5
  57. data/test/test_query.rb +13 -3
  58. data/test/test_throttle.rb +1 -3
  59. data/test/test_user.rb +1 -5
  60. metadata +23 -19
  61. data/fixtures/vcr_cassettes/test_array_add_relation.yml +0 -321
  62. data/fixtures/vcr_cassettes/test_cloud_function.yml +0 -81
  63. data/fixtures/vcr_cassettes/test_file_save.yml +0 -87
  64. data/fixtures/vcr_cassettes/test_image_file_associate_with_object.yml +0 -2034
  65. data/fixtures/vcr_cassettes/test_image_file_save.yml +0 -1957
  66. data/fixtures/vcr_cassettes/test_object_id.yml +0 -83
  67. data/fixtures/vcr_cassettes/test_request_batch.yml +0 -62
@@ -0,0 +1,180 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://api.parse.com/1/classes/Foo
6
+ body:
7
+ encoding: UTF-8
8
+ string: "{}"
9
+ headers:
10
+ Content-Type:
11
+ - application/json
12
+ Accept:
13
+ - application/json
14
+ User-Agent:
15
+ - Parse for Ruby, 0.0
16
+ X-Parse-Master-Key:
17
+ - ""
18
+ X-Parse-Rest-Api-Key:
19
+ - <X-Parse-REST-API-Key>
20
+ X-Parse-Application-Id:
21
+ - <X-Parse-Application-Id>
22
+ X-Parse-Session-Token:
23
+ - ""
24
+ Expect:
25
+ - ""
26
+ response:
27
+ status:
28
+ code: 201
29
+ message: Created
30
+ headers:
31
+ Access-Control-Allow-Origin:
32
+ - "*"
33
+ Access-Control-Request-Method:
34
+ - "*"
35
+ Cache-Control:
36
+ - no-cache
37
+ Content-Type:
38
+ - application/json; charset=utf-8
39
+ Date:
40
+ - Mon, 22 Apr 2013 16:03:18 GMT
41
+ Location:
42
+ - https://api.parse.com/1/classes/Foo/kYSRJkUXxC
43
+ Server:
44
+ - nginx/1.2.2
45
+ Set-Cookie:
46
+ - <COOKIE-KEY>
47
+ Status:
48
+ - 201 Created
49
+ X-Runtime:
50
+ - "0.169917"
51
+ X-Ua-Compatible:
52
+ - IE=Edge,chrome=1
53
+ Content-Length:
54
+ - "64"
55
+ Connection:
56
+ - keep-alive
57
+ body:
58
+ encoding: ASCII-8BIT
59
+ string: "{\"createdAt\":\"2013-04-22T16:03:18.215Z\",\"objectId\":\"kYSRJkUXxC\"}"
60
+ http_version:
61
+ recorded_at: Mon, 22 Apr 2013 16:03:18 GMT
62
+ - request:
63
+ method: post
64
+ uri: https://api.parse.com/1/classes/Foo
65
+ body:
66
+ encoding: UTF-8
67
+ string: "{}"
68
+ headers:
69
+ Content-Type:
70
+ - application/json
71
+ Accept:
72
+ - application/json
73
+ User-Agent:
74
+ - Parse for Ruby, 0.0
75
+ X-Parse-Master-Key:
76
+ - ""
77
+ X-Parse-Rest-Api-Key:
78
+ - <X-Parse-REST-API-Key>
79
+ X-Parse-Application-Id:
80
+ - <X-Parse-Application-Id>
81
+ X-Parse-Session-Token:
82
+ - ""
83
+ Expect:
84
+ - ""
85
+ response:
86
+ status:
87
+ code: 201
88
+ message: Created
89
+ headers:
90
+ Access-Control-Allow-Origin:
91
+ - "*"
92
+ Access-Control-Request-Method:
93
+ - "*"
94
+ Cache-Control:
95
+ - no-cache
96
+ Content-Type:
97
+ - application/json; charset=utf-8
98
+ Date:
99
+ - Mon, 22 Apr 2013 16:03:19 GMT
100
+ Location:
101
+ - https://api.parse.com/1/classes/Foo/aPu8CQwSib
102
+ Server:
103
+ - nginx/1.2.2
104
+ Set-Cookie:
105
+ - <COOKIE-KEY>
106
+ Status:
107
+ - 201 Created
108
+ X-Runtime:
109
+ - "0.704921"
110
+ X-Ua-Compatible:
111
+ - IE=Edge,chrome=1
112
+ Content-Length:
113
+ - "64"
114
+ Connection:
115
+ - keep-alive
116
+ body:
117
+ encoding: ASCII-8BIT
118
+ string: "{\"createdAt\":\"2013-04-22T16:03:18.367Z\",\"objectId\":\"aPu8CQwSib\"}"
119
+ http_version:
120
+ recorded_at: Mon, 22 Apr 2013 16:03:19 GMT
121
+ - request:
122
+ method: get
123
+ uri: https://api.parse.com/1/classes/Foo/kYSRJkUXxC
124
+ body:
125
+ encoding: US-ASCII
126
+ string: ""
127
+ headers:
128
+ Content-Type:
129
+ - application/json
130
+ Accept:
131
+ - application/json
132
+ User-Agent:
133
+ - Parse for Ruby, 0.0
134
+ X-Parse-Master-Key:
135
+ - ""
136
+ X-Parse-Rest-Api-Key:
137
+ - <X-Parse-REST-API-Key>
138
+ X-Parse-Application-Id:
139
+ - <X-Parse-Application-Id>
140
+ X-Parse-Session-Token:
141
+ - ""
142
+ Expect:
143
+ - ""
144
+ response:
145
+ status:
146
+ code: 200
147
+ message: OK
148
+ headers:
149
+ Access-Control-Allow-Origin:
150
+ - "*"
151
+ Access-Control-Request-Method:
152
+ - "*"
153
+ Cache-Control:
154
+ - max-age=0, private, must-revalidate
155
+ Content-Type:
156
+ - application/json; charset=utf-8
157
+ Date:
158
+ - Mon, 22 Apr 2013 16:03:19 GMT
159
+ Etag:
160
+ - "\"aaa365c13f25dbcbd787acc7edffbd31\""
161
+ Server:
162
+ - nginx/1.2.2
163
+ Set-Cookie:
164
+ - <COOKIE-KEY>
165
+ Status:
166
+ - 200 OK
167
+ X-Runtime:
168
+ - "0.047616"
169
+ X-Ua-Compatible:
170
+ - IE=Edge,chrome=1
171
+ Content-Length:
172
+ - "103"
173
+ Connection:
174
+ - keep-alive
175
+ body:
176
+ encoding: ASCII-8BIT
177
+ string: "{\"createdAt\":\"2013-04-22T16:03:18.215Z\",\"updatedAt\":\"2013-04-22T16:03:18.215Z\",\"objectId\":\"kYSRJkUXxC\"}"
178
+ http_version:
179
+ recorded_at: Mon, 22 Apr 2013 16:03:19 GMT
180
+ recorded_with: VCR 2.4.0
@@ -1,163 +1,121 @@
1
- ---
2
- http_interactions:
3
- - request:
1
+ ---
2
+ http_interactions:
3
+ - request:
4
4
  method: post
5
5
  uri: https://api.parse.com/1/classes/Post
6
- body:
6
+ body:
7
7
  encoding: UTF-8
8
- string: ! '{"title":"foo"}'
9
- headers:
10
- Content-Type:
8
+ string: "{\"title\":\"foo\"}"
9
+ headers:
10
+ Content-Type:
11
11
  - application/json
12
- Accept:
12
+ Accept:
13
13
  - application/json
14
- User-Agent:
14
+ User-Agent:
15
15
  - Parse for Ruby, 0.0
16
- X-Parse-Master-Key:
17
- - ''
18
- X-Parse-Rest-Api-Key:
19
- - D3Y8jNCQk6kpkKhpRGnWLYTrFGQ7j8dtDVnWZRnZ
20
- X-Parse-Application-Id:
21
- - PPVk6L5M9R1R8GVk8Ye9jT8f5SQNBIeoJUDJLmkT
22
- X-Parse-Session-Token:
23
- - ''
24
- Expect:
25
- - ''
26
- response:
27
- status:
16
+ X-Parse-Master-Key:
17
+ - ""
18
+ X-Parse-Rest-Api-Key:
19
+ - <X-Parse-REST-API-Key>
20
+ X-Parse-Application-Id:
21
+ - <X-Parse-Application-Id>
22
+ X-Parse-Session-Token:
23
+ - ""
24
+ Expect:
25
+ - ""
26
+ response:
27
+ status:
28
28
  code: 201
29
- message: !binary |-
30
- Q3JlYXRlZA==
31
- headers:
32
- !binary "QWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2lu":
33
- - !binary |-
34
- Kg==
35
- !binary "QWNjZXNzLUNvbnRyb2wtUmVxdWVzdC1NZXRob2Q=":
36
- - !binary |-
37
- Kg==
38
- !binary "Q2FjaGUtQ29udHJvbA==":
39
- - !binary |-
40
- bm8tY2FjaGU=
41
- !binary "Q29udGVudC1UeXBl":
42
- - !binary |-
43
- YXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOA==
44
- !binary "RGF0ZQ==":
45
- - !binary |-
46
- VHVlLCAwOSBPY3QgMjAxMiAyMTo0NTozMiBHTVQ=
47
- !binary "TG9jYXRpb24=":
48
- - !binary |-
49
- aHR0cHM6Ly9hcGkucGFyc2UuY29tLzEvY2xhc3Nlcy9Qb3N0L0VEUHEyZmhE
50
- UjQ=
51
- !binary "U2VydmVy":
52
- - !binary |-
53
- bmdpbngvMS4yLjI=
54
- !binary "U2V0LUNvb2tpZQ==":
55
- - !binary |-
56
- X3BhcnNlX3Nlc3Npb249QkFoN0Jra2lEM05sYzNOcGIyNWZhV1FHT2daRlJp
57
- SWxZemMwTTJGbU9EZGtaakJrTVRZNE9UbGpOR1poTVRZMFlUTTVaRFE1WlRZ
58
- JTNELS1mZmQ1OGVmYzAwZGMwYmMzZTEwOTE1NmQyNDllOTMwYzRhMjgzZDBj
59
- OyBkb21haW49LnBhcnNlLmNvbTsgcGF0aD0vOyBleHBpcmVzPVN1biwgMDkt
60
- T2N0LTIwMjIgMjE6NDU6MzIgR01UOyBzZWN1cmU7IEh0dHBPbmx5
61
- !binary "U3RhdHVz":
62
- - !binary |-
63
- MjAxIENyZWF0ZWQ=
64
- !binary "WC1SdW50aW1l":
65
- - !binary |-
66
- MC4wMTM2NTU=
67
- !binary "WC1VYS1Db21wYXRpYmxl":
68
- - !binary |-
69
- SUU9RWRnZSxjaHJvbWU9MQ==
70
- !binary "Q29udGVudC1MZW5ndGg=":
71
- - !binary |-
72
- NjQ=
73
- !binary "Q29ubmVjdGlvbg==":
74
- - !binary |-
75
- a2VlcC1hbGl2ZQ==
76
- body:
29
+ message: Created
30
+ headers:
31
+ Access-Control-Allow-Origin:
32
+ - "*"
33
+ Access-Control-Request-Method:
34
+ - "*"
35
+ Cache-Control:
36
+ - no-cache
37
+ Content-Type:
38
+ - application/json; charset=utf-8
39
+ Date:
40
+ - Mon, 22 Apr 2013 16:03:24 GMT
41
+ Location:
42
+ - https://api.parse.com/1/classes/Post/jpI8JVVkbM
43
+ Server:
44
+ - nginx/1.2.2
45
+ Set-Cookie:
46
+ - <COOKIE-KEY>
47
+ Status:
48
+ - 201 Created
49
+ X-Runtime:
50
+ - "0.037711"
51
+ X-Ua-Compatible:
52
+ - IE=Edge,chrome=1
53
+ Content-Length:
54
+ - "64"
55
+ Connection:
56
+ - keep-alive
57
+ body:
77
58
  encoding: ASCII-8BIT
78
- string: !binary |-
79
- eyJjcmVhdGVkQXQiOiIyMDEyLTEwLTA5VDIxOjQ1OjMyLjcxNloiLCJvYmpl
80
- Y3RJZCI6IkVEUHEyZmhEUjQifQ==
59
+ string: "{\"createdAt\":\"2013-04-22T16:03:24.147Z\",\"objectId\":\"jpI8JVVkbM\"}"
81
60
  http_version:
82
- recorded_at: Tue, 09 Oct 2012 21:45:32 GMT
83
- - request:
61
+ recorded_at: Mon, 22 Apr 2013 16:03:24 GMT
62
+ - request:
84
63
  method: get
85
- uri: https://api.parse.com/1/classes/Post/EDPq2fhDR4
86
- body:
64
+ uri: https://api.parse.com/1/classes/Post/jpI8JVVkbM
65
+ body:
87
66
  encoding: US-ASCII
88
- string: ''
89
- headers:
90
- Content-Type:
67
+ string: ""
68
+ headers:
69
+ Content-Type:
91
70
  - application/json
92
- Accept:
71
+ Accept:
93
72
  - application/json
94
- User-Agent:
73
+ User-Agent:
95
74
  - Parse for Ruby, 0.0
96
- X-Parse-Master-Key:
97
- - ''
98
- X-Parse-Rest-Api-Key:
99
- - D3Y8jNCQk6kpkKhpRGnWLYTrFGQ7j8dtDVnWZRnZ
100
- X-Parse-Application-Id:
101
- - PPVk6L5M9R1R8GVk8Ye9jT8f5SQNBIeoJUDJLmkT
102
- X-Parse-Session-Token:
103
- - ''
104
- Expect:
105
- - ''
106
- response:
107
- status:
75
+ X-Parse-Master-Key:
76
+ - ""
77
+ X-Parse-Rest-Api-Key:
78
+ - <X-Parse-REST-API-Key>
79
+ X-Parse-Application-Id:
80
+ - <X-Parse-Application-Id>
81
+ X-Parse-Session-Token:
82
+ - ""
83
+ Expect:
84
+ - ""
85
+ response:
86
+ status:
108
87
  code: 200
109
- message: !binary |-
110
- T0s=
111
- headers:
112
- !binary "QWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2lu":
113
- - !binary |-
114
- Kg==
115
- !binary "QWNjZXNzLUNvbnRyb2wtUmVxdWVzdC1NZXRob2Q=":
116
- - !binary |-
117
- Kg==
118
- !binary "Q2FjaGUtQ29udHJvbA==":
119
- - !binary |-
120
- bWF4LWFnZT0wLCBwcml2YXRlLCBtdXN0LXJldmFsaWRhdGU=
121
- !binary "Q29udGVudC1UeXBl":
122
- - !binary |-
123
- YXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOA==
124
- !binary "RGF0ZQ==":
125
- - !binary |-
126
- VHVlLCAwOSBPY3QgMjAxMiAyMTo0NTozMiBHTVQ=
127
- !binary "RXRhZw==":
128
- - !binary |-
129
- IjU2YzU5MTZlZDdiOTlhMzhkZmFhNzVkZGNmNWI1YTNmIg==
130
- !binary "U2VydmVy":
131
- - !binary |-
132
- bmdpbngvMS4yLjI=
133
- !binary "U2V0LUNvb2tpZQ==":
134
- - !binary |-
135
- X3BhcnNlX3Nlc3Npb249QkFoN0Jra2lEM05sYzNOcGIyNWZhV1FHT2daRlJp
136
- SWxaVFEwWlRobE5tSTNZVFpoWm1JMU1UUTJPV0kyWXpZNVpqaGhOMk00T0dF
137
- JTNELS01NjMwYjQ3N2RkZjQ1ZTFkZjJlODVjMDk2ZDhhYjk2YjNiYWY5OTgw
138
- OyBkb21haW49LnBhcnNlLmNvbTsgcGF0aD0vOyBleHBpcmVzPVN1biwgMDkt
139
- T2N0LTIwMjIgMjE6NDU6MzIgR01UOyBzZWN1cmU7IEh0dHBPbmx5
140
- !binary "U3RhdHVz":
141
- - !binary |-
142
- MjAwIE9L
143
- !binary "WC1SdW50aW1l":
144
- - !binary |-
145
- MC4wMzQ1NjY=
146
- !binary "WC1VYS1Db21wYXRpYmxl":
147
- - !binary |-
148
- SUU9RWRnZSxjaHJvbWU9MQ==
149
- !binary "Q29udGVudC1MZW5ndGg=":
150
- - !binary |-
151
- MTE3
152
- !binary "Q29ubmVjdGlvbg==":
153
- - !binary |-
154
- a2VlcC1hbGl2ZQ==
155
- body:
88
+ message: OK
89
+ headers:
90
+ Access-Control-Allow-Origin:
91
+ - "*"
92
+ Access-Control-Request-Method:
93
+ - "*"
94
+ Cache-Control:
95
+ - max-age=0, private, must-revalidate
96
+ Content-Type:
97
+ - application/json; charset=utf-8
98
+ Date:
99
+ - Mon, 22 Apr 2013 16:03:24 GMT
100
+ Etag:
101
+ - "\"4b15e6b6503c74074161848474b33fcb\""
102
+ Server:
103
+ - nginx/1.2.2
104
+ Set-Cookie:
105
+ - <COOKIE-KEY>
106
+ Status:
107
+ - 200 OK
108
+ X-Runtime:
109
+ - "0.029416"
110
+ X-Ua-Compatible:
111
+ - IE=Edge,chrome=1
112
+ Content-Length:
113
+ - "117"
114
+ Connection:
115
+ - keep-alive
116
+ body:
156
117
  encoding: ASCII-8BIT
157
- string: !binary |-
158
- eyJ0aXRsZSI6ImZvbyIsImNyZWF0ZWRBdCI6IjIwMTItMTAtMDlUMjE6NDU6
159
- MzIuNzE2WiIsInVwZGF0ZWRBdCI6IjIwMTItMTAtMDlUMjE6NDU6MzIuNzE2
160
- WiIsIm9iamVjdElkIjoiRURQcTJmaERSNCJ9
118
+ string: "{\"title\":\"foo\",\"createdAt\":\"2013-04-22T16:03:24.147Z\",\"updatedAt\":\"2013-04-22T16:03:24.147Z\",\"objectId\":\"jpI8JVVkbM\"}"
161
119
  http_version:
162
- recorded_at: Tue, 09 Oct 2012 21:45:33 GMT
163
- recorded_with: VCR 2.0.1
120
+ recorded_at: Mon, 22 Apr 2013 16:03:24 GMT
121
+ recorded_with: VCR 2.4.0
@@ -0,0 +1,60 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.parse.com/1/classes/SomeClass/someIdThatDoesNotExist
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ""
9
+ headers:
10
+ Content-Type:
11
+ - application/json
12
+ Accept:
13
+ - application/json
14
+ User-Agent:
15
+ - Parse for Ruby, 0.0
16
+ X-Parse-Master-Key:
17
+ - ""
18
+ X-Parse-Rest-Api-Key:
19
+ - <X-Parse-REST-API-Key>
20
+ X-Parse-Application-Id:
21
+ - <X-Parse-Application-Id>
22
+ X-Parse-Session-Token:
23
+ - ""
24
+ Expect:
25
+ - ""
26
+ response:
27
+ status:
28
+ code: 404
29
+ message: Not Found
30
+ headers:
31
+ Access-Control-Allow-Origin:
32
+ - "*"
33
+ Access-Control-Request-Method:
34
+ - "*"
35
+ Cache-Control:
36
+ - no-cache
37
+ Content-Type:
38
+ - application/json; charset=utf-8
39
+ Date:
40
+ - Mon, 22 Apr 2013 16:03:14 GMT
41
+ Server:
42
+ - nginx/1.2.2
43
+ Set-Cookie:
44
+ - <COOKIE-KEY>
45
+ Status:
46
+ - 404 Not Found
47
+ X-Runtime:
48
+ - "0.050654"
49
+ X-Ua-Compatible:
50
+ - IE=Edge,chrome=1
51
+ Content-Length:
52
+ - "47"
53
+ Connection:
54
+ - keep-alive
55
+ body:
56
+ encoding: ASCII-8BIT
57
+ string: "{\"code\":101,\"error\":\"object not found for get\"}"
58
+ http_version:
59
+ recorded_at: Mon, 22 Apr 2013 16:03:14 GMT
60
+ recorded_with: VCR 2.4.0