leancloud-ruby-client 0.1.0

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 (99) hide show
  1. checksums.yaml +7 -0
  2. data/.travis.yml +9 -0
  3. data/Gemfile +16 -0
  4. data/Gemfile.lock +86 -0
  5. data/LICENSE.txt +20 -0
  6. data/README.md +1177 -0
  7. data/Rakefile +45 -0
  8. data/VERSION +1 -0
  9. data/example.rb +35 -0
  10. data/features.md +1111 -0
  11. data/fixtures/vcr_cassettes/test_acls_arent_objects.yml +274 -0
  12. data/fixtures/vcr_cassettes/test_array_add.yml +213 -0
  13. data/fixtures/vcr_cassettes/test_array_add_pointerizing.yml +380 -0
  14. data/fixtures/vcr_cassettes/test_array_add_unique.yml +319 -0
  15. data/fixtures/vcr_cassettes/test_batch_create_object.yml +107 -0
  16. data/fixtures/vcr_cassettes/test_batch_delete_object.yml +637 -0
  17. data/fixtures/vcr_cassettes/test_batch_run.yml +109 -0
  18. data/fixtures/vcr_cassettes/test_batch_update_nils_delete_keys.yml +435 -0
  19. data/fixtures/vcr_cassettes/test_batch_update_object.yml +637 -0
  20. data/fixtures/vcr_cassettes/test_contains_all.yml +1143 -0
  21. data/fixtures/vcr_cassettes/test_cql.yml +99 -0
  22. data/fixtures/vcr_cassettes/test_created_at.yml +109 -0
  23. data/fixtures/vcr_cassettes/test_decrement.yml +213 -0
  24. data/fixtures/vcr_cassettes/test_deep_parse.yml +321 -0
  25. data/fixtures/vcr_cassettes/test_destroy.yml +213 -0
  26. data/fixtures/vcr_cassettes/test_empty_response.yml +1026 -0
  27. data/fixtures/vcr_cassettes/test_eq_pointerize.yml +427 -0
  28. data/fixtures/vcr_cassettes/test_equality.yml +321 -0
  29. data/fixtures/vcr_cassettes/test_get.yml +215 -0
  30. data/fixtures/vcr_cassettes/test_get_installation.yml +58 -0
  31. data/fixtures/vcr_cassettes/test_get_missing.yml +160 -0
  32. data/fixtures/vcr_cassettes/test_image_file_associate_with_object.yml +2089 -0
  33. data/fixtures/vcr_cassettes/test_image_file_save.yml +1928 -0
  34. data/fixtures/vcr_cassettes/test_include.yml +321 -0
  35. data/fixtures/vcr_cassettes/test_new_model.yml +109 -0
  36. data/fixtures/vcr_cassettes/test_new_object.yml +109 -0
  37. data/fixtures/vcr_cassettes/test_nils_delete_keys.yml +319 -0
  38. data/fixtures/vcr_cassettes/test_object_id.yml +56 -0
  39. data/fixtures/vcr_cassettes/test_parse_delete.yml +421 -0
  40. data/fixtures/vcr_cassettes/test_pointer.yml +109 -0
  41. data/fixtures/vcr_cassettes/test_request_sms.yml +48 -0
  42. data/fixtures/vcr_cassettes/test_reset_password.yml +109 -0
  43. data/fixtures/vcr_cassettes/test_retries.yml +4173 -0
  44. data/fixtures/vcr_cassettes/test_retries_404.yml +1026 -0
  45. data/fixtures/vcr_cassettes/test_retries_404_correct.yml +1026 -0
  46. data/fixtures/vcr_cassettes/test_retries_json_error.yml +2265 -0
  47. data/fixtures/vcr_cassettes/test_retries_server_error.yml +2265 -0
  48. data/fixtures/vcr_cassettes/test_save_installation.yml +58 -0
  49. data/fixtures/vcr_cassettes/test_save_with_sub_objects.yml +484 -0
  50. data/fixtures/vcr_cassettes/test_saving_boolean_values.yml +215 -0
  51. data/fixtures/vcr_cassettes/test_saving_nested_objects.yml +62 -0
  52. data/fixtures/vcr_cassettes/test_server_update.yml +586 -0
  53. data/fixtures/vcr_cassettes/test_simple_save.yml +109 -0
  54. data/fixtures/vcr_cassettes/test_text_file_save.yml +109 -0
  55. data/fixtures/vcr_cassettes/test_update.yml +213 -0
  56. data/fixtures/vcr_cassettes/test_updated_at.yml +213 -0
  57. data/fixtures/vcr_cassettes/test_user_login.yml +276 -0
  58. data/fixtures/vcr_cassettes/test_user_save.yml +109 -0
  59. data/fixtures/vcr_cassettes/test_xget.yml +603 -0
  60. data/leancloud-ruby-client.gemspec +166 -0
  61. data/lib/faraday/better_retry.rb +94 -0
  62. data/lib/faraday/extended_parse_json.rb +39 -0
  63. data/lib/faraday/get_method_override.rb +32 -0
  64. data/lib/leancloud-ruby-client.rb +34 -0
  65. data/lib/leancloud/application.rb +7 -0
  66. data/lib/leancloud/batch.rb +53 -0
  67. data/lib/leancloud/client.rb +149 -0
  68. data/lib/leancloud/cloud.rb +28 -0
  69. data/lib/leancloud/datatypes.rb +355 -0
  70. data/lib/leancloud/error.rb +42 -0
  71. data/lib/leancloud/installation.rb +57 -0
  72. data/lib/leancloud/model.rb +14 -0
  73. data/lib/leancloud/object.rb +252 -0
  74. data/lib/leancloud/protocol.rb +193 -0
  75. data/lib/leancloud/push.rb +48 -0
  76. data/lib/leancloud/query.rb +194 -0
  77. data/lib/leancloud/user.rb +38 -0
  78. data/lib/leancloud/util.rb +93 -0
  79. data/test/cloud_functions/MyCloudCode/cloud/main.js +4 -0
  80. data/test/config/global.json +14 -0
  81. data/test/helper.rb +108 -0
  82. data/test/middleware/better_retry_test.rb +57 -0
  83. data/test/middleware/extend_parse_json_test.rb +55 -0
  84. data/test/parsers.jpg +0 -0
  85. data/test/test_batch.rb +132 -0
  86. data/test/test_client.rb +183 -0
  87. data/test/test_cloud.rb +31 -0
  88. data/test/test_datatypes.rb +105 -0
  89. data/test/test_file.rb +67 -0
  90. data/test/test_init.rb +23 -0
  91. data/test/test_init_from_cloud_code.rb +8 -0
  92. data/test/test_installation.rb +49 -0
  93. data/test/test_model.rb +22 -0
  94. data/test/test_object.rb +295 -0
  95. data/test/test_push.rb +45 -0
  96. data/test/test_query.rb +198 -0
  97. data/test/test_throttle.rb +5 -0
  98. data/test/test_user.rb +60 -0
  99. metadata +298 -0
@@ -0,0 +1,274 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://api.parse.com/1/classes/Post
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"ACL":{"*":{"read":true}}}'
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
+ - Tue, 21 May 2013 14:21:15 GMT
41
+ Location:
42
+ - https://api.parse.com/1/classes/Post/OHGnBvPDXq
43
+ Server:
44
+ - nginx/1.2.2
45
+ Set-Cookie:
46
+ - <COOKIE-KEY>
47
+ Status:
48
+ - 201 Created
49
+ X-Runtime:
50
+ - '0.078743'
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-05-21T14:21:15.405Z","objectId":"OHGnBvPDXq"}'
60
+ http_version:
61
+ recorded_at: Tue, 21 May 2013 14:21:15 GMT
62
+ - request:
63
+ method: get
64
+ uri: https://api.parse.com/1/classes/Post/OHGnBvPDXq
65
+ body:
66
+ encoding: US-ASCII
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: 200
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
+ - Tue, 21 May 2013 14:21:38 GMT
100
+ Etag:
101
+ - '"3e2ff5392c54b720e94d94f7a4a418fa"'
102
+ Server:
103
+ - nginx/1.2.2
104
+ Set-Cookie:
105
+ - <COOKIE-KEY>
106
+ Status:
107
+ - 200 OK
108
+ X-Runtime:
109
+ - '0.028265'
110
+ X-Ua-Compatible:
111
+ - IE=Edge,chrome=1
112
+ Content-Length:
113
+ - '129'
114
+ Connection:
115
+ - keep-alive
116
+ body:
117
+ encoding: ASCII-8BIT
118
+ string: '{"createdAt":"2013-05-21T14:21:15.405Z","updatedAt":"2013-05-21T14:21:15.405Z","objectId":"OHGnBvPDXq","ACL":{"*":{"read":true}}}'
119
+ http_version:
120
+ recorded_at: Tue, 21 May 2013 14:21:38 GMT
121
+ - request:
122
+ method: get
123
+ uri: https://api.parse.com/1/classes/Post/OHGnBvPDXq
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
+ - Tue, 21 May 2013 14:21:38 GMT
159
+ Etag:
160
+ - '"3e2ff5392c54b720e94d94f7a4a418fa"'
161
+ Server:
162
+ - nginx/1.2.2
163
+ Set-Cookie:
164
+ - <COOKIE-KEY>
165
+ Status:
166
+ - 200 OK
167
+ X-Runtime:
168
+ - '0.023049'
169
+ X-Ua-Compatible:
170
+ - IE=Edge,chrome=1
171
+ Content-Length:
172
+ - '129'
173
+ Connection:
174
+ - keep-alive
175
+ body:
176
+ encoding: ASCII-8BIT
177
+ string: '{"createdAt":"2013-05-21T14:21:15.405Z","updatedAt":"2013-05-21T14:21:15.405Z","objectId":"OHGnBvPDXq","ACL":{"*":{"read":true}}}'
178
+ http_version:
179
+ recorded_at: Tue, 21 May 2013 14:21:38 GMT
180
+ - request:
181
+ method: post
182
+ uri: https://api.leancloud.cn/1.1/classes/Post
183
+ body:
184
+ encoding: UTF-8
185
+ string: '{"ACL":{"*":{"read":true}}}'
186
+ headers:
187
+ User-Agent:
188
+ - Parse for Ruby, 0.0
189
+ Content-Type:
190
+ - application/json
191
+ X-Avoscloud-Application-Id:
192
+ - <X-AVOSCloud-Application-Id>
193
+ X-Avoscloud-Application-Key:
194
+ - <X-AVOSCloud-Application-Key>
195
+ Accept-Encoding:
196
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
197
+ Accept:
198
+ - '*/*'
199
+ response:
200
+ status:
201
+ code: 201
202
+ message: Created
203
+ headers:
204
+ Server:
205
+ - Tengine
206
+ Date:
207
+ - Fri, 10 Apr 2015 09:10:45 GMT
208
+ Content-Type:
209
+ - application/json;charset=utf-8
210
+ Content-Length:
211
+ - '78'
212
+ Connection:
213
+ - keep-alive
214
+ Location:
215
+ - /1.1/classes/Post/55279395e4b0da2c5defa1ab
216
+ Cache-Control:
217
+ - no-cache,no-store
218
+ Pragma:
219
+ - no-cache
220
+ Strict-Transport-Security:
221
+ - max-age=31536000
222
+ body:
223
+ encoding: UTF-8
224
+ string: '{"createdAt":"2015-04-10T09:10:45.299Z","objectId":"55279395e4b0da2c5defa1ab"}'
225
+ http_version:
226
+ recorded_at: Fri, 10 Apr 2015 09:10:45 GMT
227
+ - request:
228
+ method: get
229
+ uri: https://api.leancloud.cn/1.1/classes/Post/55279395e4b0da2c5defa1ab
230
+ body:
231
+ encoding: US-ASCII
232
+ string: ''
233
+ headers:
234
+ User-Agent:
235
+ - Parse for Ruby, 0.0
236
+ Content-Type:
237
+ - application/json
238
+ X-Avoscloud-Application-Id:
239
+ - <X-AVOSCloud-Application-Id>
240
+ X-Avoscloud-Application-Key:
241
+ - <X-AVOSCloud-Application-Key>
242
+ Accept-Encoding:
243
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
244
+ Accept:
245
+ - '*/*'
246
+ response:
247
+ status:
248
+ code: 200
249
+ message: OK
250
+ headers:
251
+ Server:
252
+ - Tengine
253
+ Date:
254
+ - Fri, 10 Apr 2015 09:10:45 GMT
255
+ Content-Type:
256
+ - application/json;charset=utf-8
257
+ Content-Length:
258
+ - '117'
259
+ Connection:
260
+ - keep-alive
261
+ Last-Modified:
262
+ - Fri, 10 Apr 2015 09:10:45.299 GMT
263
+ Cache-Control:
264
+ - no-cache,no-store
265
+ Pragma:
266
+ - no-cache
267
+ Strict-Transport-Security:
268
+ - max-age=31536000
269
+ body:
270
+ encoding: UTF-8
271
+ string: '{"createdAt":"2015-04-10T09:10:45.299Z","updatedAt":"2015-04-10T09:10:45.299Z","objectId":"55279395e4b0da2c5defa1ab"}'
272
+ http_version:
273
+ recorded_at: Fri, 10 Apr 2015 09:10:45 GMT
274
+ recorded_with: VCR 2.4.0
@@ -0,0 +1,213 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://api.parse.com/1/classes/Post
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"chapters":["hello"]}'
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:17 GMT
41
+ Location:
42
+ - https://api.parse.com/1/classes/Post/NXqztkxx68
43
+ Server:
44
+ - nginx/1.2.2
45
+ Set-Cookie:
46
+ - <COOKIE-KEY>
47
+ Status:
48
+ - 201 Created
49
+ X-Runtime:
50
+ - '0.038992'
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:17.004Z","objectId":"NXqztkxx68"}'
60
+ http_version:
61
+ recorded_at: Mon, 22 Apr 2013 16:03:17 GMT
62
+ - request:
63
+ method: put
64
+ uri: https://api.parse.com/1/classes/Post/NXqztkxx68
65
+ body:
66
+ encoding: UTF-8
67
+ string: '{"chapters":{"__op":"Add","objects":["goodbye"]}}'
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: 200
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:17 GMT
100
+ Etag:
101
+ - '"828730200fb880f8d7602dae59972493"'
102
+ Server:
103
+ - nginx/1.2.2
104
+ Set-Cookie:
105
+ - <COOKIE-KEY>
106
+ Status:
107
+ - 200 OK
108
+ X-Runtime:
109
+ - '0.026445'
110
+ X-Ua-Compatible:
111
+ - IE=Edge,chrome=1
112
+ Content-Length:
113
+ - '71'
114
+ Connection:
115
+ - keep-alive
116
+ body:
117
+ encoding: ASCII-8BIT
118
+ string: '{"chapters":["hello","goodbye"],"updatedAt":"2013-04-22T16:03:17.059Z"}'
119
+ http_version:
120
+ recorded_at: Mon, 22 Apr 2013 16:03:17 GMT
121
+ - request:
122
+ method: post
123
+ uri: https://api.leancloud.cn/1.1/classes/Post
124
+ body:
125
+ encoding: UTF-8
126
+ string: '{"chapters":["hello"]}'
127
+ headers:
128
+ User-Agent:
129
+ - Parse for Ruby, 0.0
130
+ Content-Type:
131
+ - application/json
132
+ X-Avoscloud-Application-Id:
133
+ - <X-AVOSCloud-Application-Id>
134
+ X-Avoscloud-Application-Key:
135
+ - <X-AVOSCloud-Application-Key>
136
+ Accept-Encoding:
137
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
138
+ Accept:
139
+ - '*/*'
140
+ response:
141
+ status:
142
+ code: 201
143
+ message: Created
144
+ headers:
145
+ Server:
146
+ - Tengine
147
+ Date:
148
+ - Fri, 10 Apr 2015 09:10:45 GMT
149
+ Content-Type:
150
+ - application/json;charset=utf-8
151
+ Content-Length:
152
+ - '78'
153
+ Connection:
154
+ - keep-alive
155
+ Location:
156
+ - /1.1/classes/Post/55279395e4b0da2c5defa1b6
157
+ Cache-Control:
158
+ - no-cache,no-store
159
+ Pragma:
160
+ - no-cache
161
+ Strict-Transport-Security:
162
+ - max-age=31536000
163
+ body:
164
+ encoding: UTF-8
165
+ string: '{"createdAt":"2015-04-10T09:10:45.914Z","objectId":"55279395e4b0da2c5defa1b6"}'
166
+ http_version:
167
+ recorded_at: Fri, 10 Apr 2015 09:10:45 GMT
168
+ - request:
169
+ method: put
170
+ uri: https://api.leancloud.cn/1.1/classes/Post/55279395e4b0da2c5defa1b6?new=true
171
+ body:
172
+ encoding: UTF-8
173
+ string: '{"chapters":{"__op":"Add","objects":["goodbye"]}}'
174
+ headers:
175
+ User-Agent:
176
+ - Parse for Ruby, 0.0
177
+ Content-Type:
178
+ - application/json
179
+ X-Avoscloud-Application-Id:
180
+ - <X-AVOSCloud-Application-Id>
181
+ X-Avoscloud-Application-Key:
182
+ - <X-AVOSCloud-Application-Key>
183
+ Accept-Encoding:
184
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
185
+ Accept:
186
+ - '*/*'
187
+ response:
188
+ status:
189
+ code: 200
190
+ message: OK
191
+ headers:
192
+ Server:
193
+ - Tengine
194
+ Date:
195
+ - Fri, 10 Apr 2015 09:10:46 GMT
196
+ Content-Type:
197
+ - application/json;charset=utf-8
198
+ Content-Length:
199
+ - '109'
200
+ Connection:
201
+ - keep-alive
202
+ Cache-Control:
203
+ - no-cache,no-store
204
+ Pragma:
205
+ - no-cache
206
+ Strict-Transport-Security:
207
+ - max-age=31536000
208
+ body:
209
+ encoding: UTF-8
210
+ string: '{"objectId":"55279395e4b0da2c5defa1b6","chapters":["hello","goodbye"],"updatedAt":"2015-04-10T09:10:46.201Z"}'
211
+ http_version:
212
+ recorded_at: Fri, 10 Apr 2015 09:10:46 GMT
213
+ recorded_with: VCR 2.4.0