parse-ruby-client 0.1.14 → 0.1.15

Sign up to get free protection for your applications and to get access to all the features.
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