parse-ruby-client 0.2.0 → 0.3.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.
- checksums.yaml +15 -0
- data/.travis.yml +2 -1
- data/Gemfile +4 -6
- data/Gemfile.lock +18 -18
- data/README.md +1 -1
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/example.rb +2 -1
- data/fixtures/vcr_cassettes/test_batch_update_nils_delete_keys.yml +57 -0
- data/fixtures/vcr_cassettes/test_empty_response.yml +72 -0
- data/fixtures/vcr_cassettes/test_get_missing.yml +95 -38
- data/fixtures/vcr_cassettes/test_image_file_associate_with_object.yml +2089 -0
- data/fixtures/vcr_cassettes/test_image_file_save.yml +1928 -0
- data/fixtures/vcr_cassettes/test_object_id.yml +56 -0
- data/fixtures/vcr_cassettes/test_reset_password.yml +109 -0
- data/fixtures/vcr_cassettes/test_retries.yml +357 -0
- data/fixtures/vcr_cassettes/test_retries_404.yml +72 -0
- data/fixtures/vcr_cassettes/test_retries_404_correct.yml +72 -0
- data/fixtures/vcr_cassettes/test_retries_json_error.yml +357 -0
- data/fixtures/vcr_cassettes/test_retries_server_error.yml +357 -0
- data/fixtures/vcr_cassettes/test_server_update.yml +248 -191
- data/fixtures/vcr_cassettes/test_user_login.yml +276 -0
- data/fixtures/vcr_cassettes/test_xget.yml +280 -0
- data/lib/faraday/better_retry.rb +94 -0
- data/lib/faraday/extended_parse_json.rb +39 -0
- data/lib/faraday/get_method_override.rb +32 -0
- data/lib/parse-ruby-client.rb +9 -9
- data/lib/parse/batch.rb +2 -3
- data/lib/parse/client.rb +72 -161
- data/lib/parse/cloud.rb +2 -1
- data/lib/parse/datatypes.rb +6 -1
- data/lib/parse/error.rb +7 -3
- data/lib/parse/installation.rb +18 -0
- data/lib/parse/model.rb +2 -1
- data/lib/parse/object.rb +7 -1
- data/lib/parse/protocol.rb +10 -0
- data/lib/parse/push.rb +3 -0
- data/lib/parse/query.rb +5 -2
- data/lib/parse/user.rb +1 -0
- data/lib/parse/util.rb +2 -0
- data/parse-ruby-client.gemspec +35 -15
- data/test/helper.rb +55 -1
- data/test/middleware/better_retry_test.rb +57 -0
- data/test/middleware/extend_parse_json_test.rb +55 -0
- data/test/test_client.rb +78 -28
- data/test/test_datatypes.rb +14 -0
- data/test/test_object.rb +16 -0
- metadata +39 -34
- data/lib/parse/http_client.rb +0 -84
data/test/test_client.rb
CHANGED
@@ -2,63 +2,113 @@ require 'helper'
|
|
2
2
|
|
3
3
|
class TestClient < ParseTestCase
|
4
4
|
|
5
|
+
def stubbed_client(&block)
|
6
|
+
stubs = Faraday::Adapter::Test::Stubs.new do |stub|
|
7
|
+
yield(stub)
|
8
|
+
end
|
9
|
+
|
10
|
+
client = Parse.init(
|
11
|
+
:logger => Logger.new(STDERR).tap {
|
12
|
+
|l| l.level = Logger::ERROR
|
13
|
+
}
|
14
|
+
) do |b|
|
15
|
+
b.adapter :test, stubs
|
16
|
+
end
|
17
|
+
|
18
|
+
[stubs, client]
|
19
|
+
end
|
20
|
+
|
5
21
|
def test_retries
|
6
22
|
VCR.use_cassette('test_retries', :record => :new_episodes) do
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
23
|
+
|
24
|
+
stubs, client = stubbed_client do |stub|
|
25
|
+
(@client.max_retries + 1).times do
|
26
|
+
stub.get('/') {[ 500, {}, {
|
27
|
+
'code' => Parse::Protocol::ERROR_TIMEOUT}.to_json
|
28
|
+
]}
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
11
32
|
assert_raise do
|
12
|
-
|
33
|
+
client.request('/')
|
13
34
|
end
|
35
|
+
|
36
|
+
stubs.verify_stubbed_calls
|
14
37
|
end
|
15
38
|
end
|
16
39
|
|
17
40
|
def test_retries_json_error
|
18
41
|
VCR.use_cassette('test_retries_json_error', :record => :new_episodes) do
|
19
|
-
|
20
|
-
|
21
|
-
|
42
|
+
stubs, client = stubbed_client do |stub|
|
43
|
+
stub.get('/') {[ 500, {}, '<HTML>this is not json</HTML>' ]}
|
44
|
+
stub.get('/') {[ 200, {}, '{"foo":100}' ]}
|
45
|
+
end
|
22
46
|
|
23
|
-
|
24
|
-
good_response.stubs(:body).returns('{"foo":100}')
|
25
|
-
good_response.stubs(:status).returns(200)
|
26
|
-
@client.session.expects(:request).twice.returns(bad_response, good_response)
|
47
|
+
assert_equal({ "foo" => 100 }, client.request('/'))
|
27
48
|
|
28
|
-
|
49
|
+
stubs.verify_stubbed_calls
|
29
50
|
end
|
30
51
|
end
|
31
52
|
|
32
53
|
def test_retries_server_error
|
33
54
|
VCR.use_cassette('test_retries_server_error', :record => :new_episodes) do
|
34
|
-
bad_response = mock()
|
35
|
-
bad_response.stubs(:body).returns("{}")
|
36
|
-
bad_response.stubs(:status).returns(500)
|
37
55
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
56
|
+
stubs, client = stubbed_client do |stub|
|
57
|
+
stub.get('/') {[ 500, {}, '{}' ]}
|
58
|
+
stub.get('/') {[ 200, {}, '{"foo":100}' ]}
|
59
|
+
end
|
60
|
+
|
61
|
+
assert_equal({ "foo" => 100 }, client.request('/'))
|
42
62
|
|
43
|
-
|
63
|
+
stubs.verify_stubbed_calls
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_not_retries_404
|
68
|
+
VCR.use_cassette('test_retries_404', :record => :new_episodes) do
|
69
|
+
|
70
|
+
stubs, client = stubbed_client do |stub|
|
71
|
+
stub.get('/') {[ 404, {}, 'Not found' ]}
|
72
|
+
stub.get('/') {[ 200, {}, '{"foo":100}' ]}
|
73
|
+
end
|
74
|
+
|
75
|
+
assert_raise do
|
76
|
+
client.request('/')
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_not_retries_404_with_correct_json
|
82
|
+
VCR.use_cassette('test_retries_404_correct', :record => :new_episodes) do
|
83
|
+
|
84
|
+
stubs, client = stubbed_client do |stub|
|
85
|
+
stub.get('/') {[ 404, {}, '{"foo":100}' ]}
|
86
|
+
stub.get('/') {[ 200, {}, '{"foo":100}' ]}
|
87
|
+
end
|
88
|
+
|
89
|
+
assert_raise do
|
90
|
+
client.request('/')
|
91
|
+
end
|
44
92
|
end
|
45
93
|
end
|
46
94
|
|
47
95
|
def test_empty_response
|
48
96
|
VCR.use_cassette('test_empty_response', :record => :new_episodes) do
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
bad_response.stubs(:status).returns(403)
|
97
|
+
stubs, client = stubbed_client do |stub|
|
98
|
+
stub.get('/') {[ 403, {}, 'nonparseable' ]}
|
99
|
+
end
|
53
100
|
|
54
|
-
|
101
|
+
# some json parsers return nil instead of raising
|
102
|
+
JSON.stubs(:parse).returns(nil)
|
55
103
|
|
56
104
|
begin
|
57
|
-
|
105
|
+
client.request('/')
|
58
106
|
raise "client error response should have raised"
|
59
107
|
rescue Parse::ParseProtocolError => e
|
60
|
-
assert_equal "HTTP Status 403 Body ", e.error
|
108
|
+
assert_equal "HTTP Status 403 Body nonparseable", e.error
|
61
109
|
end
|
110
|
+
|
111
|
+
stubs.verify_stubbed_calls
|
62
112
|
end
|
63
113
|
end
|
64
114
|
|
data/test/test_datatypes.rb
CHANGED
@@ -36,6 +36,20 @@ class TestDatatypes < Test::Unit::TestCase
|
|
36
36
|
assert_equal parse_date.to_time.utc.to_datetime.iso8601(3), q["time"].to_time.utc.to_datetime.iso8601(3)
|
37
37
|
end
|
38
38
|
|
39
|
+
def test_date_with_bad_data
|
40
|
+
assert_raise do
|
41
|
+
Parse::Date.new(2014)
|
42
|
+
end
|
43
|
+
assert_raise do
|
44
|
+
Parse::Date.new(nil)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_date_with_time
|
49
|
+
time = Time.parse("01/01/2012 23:59:59")
|
50
|
+
assert_equal time, Parse::Date.new(time).to_time
|
51
|
+
end
|
52
|
+
|
39
53
|
def test_bytes
|
40
54
|
data = {
|
41
55
|
"base64" => Base64.encode64("testing bytes!")
|
data/test/test_object.rb
CHANGED
@@ -124,6 +124,13 @@ class TestObject < ParseTestCase
|
|
124
124
|
end
|
125
125
|
end
|
126
126
|
|
127
|
+
def test_to_json_uses_rest_api_hash
|
128
|
+
post = Parse::Object.new "Post"
|
129
|
+
hash = { 'post' => [post] }
|
130
|
+
parsed = JSON.parse(hash.to_json)
|
131
|
+
assert_equal "Post", parsed['post'][0][Parse::Protocol::KEY_CLASS_NAME]
|
132
|
+
end
|
133
|
+
|
127
134
|
def test_deep_as_json
|
128
135
|
VCR.use_cassette('test_deep_as_json', :record => :new_episodes) do
|
129
136
|
other = Parse::Object.new "Post"
|
@@ -132,6 +139,15 @@ class TestObject < ParseTestCase
|
|
132
139
|
end
|
133
140
|
end
|
134
141
|
|
142
|
+
def test_deep_as_json_with_array
|
143
|
+
VCR.use_cassette('test_deep_as_json', :record => :new_episodes) do
|
144
|
+
other = Parse::Object.new "Post"
|
145
|
+
other['date'] = Parse::Date.new(DateTime.now)
|
146
|
+
other['array'] = [1, 2]
|
147
|
+
assert other.as_json['date']['iso']
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
135
151
|
def test_nils_delete_keys
|
136
152
|
VCR.use_cassette('test_nils_delete_keys', :record => :new_episodes) do
|
137
153
|
post = Parse::Object.new "Post"
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: parse-ruby-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.3.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Alan deLevie
|
@@ -10,12 +9,11 @@ authors:
|
|
10
9
|
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date:
|
12
|
+
date: 2014-07-31 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
15
|
+
name: faraday
|
17
16
|
requirement: !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
19
17
|
requirements:
|
20
18
|
- - ! '>='
|
21
19
|
- !ruby/object:Gem::Version
|
@@ -23,15 +21,13 @@ dependencies:
|
|
23
21
|
type: :runtime
|
24
22
|
prerelease: false
|
25
23
|
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
none: false
|
27
24
|
requirements:
|
28
25
|
- - ! '>='
|
29
26
|
- !ruby/object:Gem::Version
|
30
27
|
version: '0'
|
31
28
|
- !ruby/object:Gem::Dependency
|
32
|
-
name:
|
29
|
+
name: faraday_middleware
|
33
30
|
requirement: !ruby/object:Gem::Requirement
|
34
|
-
none: false
|
35
31
|
requirements:
|
36
32
|
- - ! '>='
|
37
33
|
- !ruby/object:Gem::Version
|
@@ -39,7 +35,6 @@ dependencies:
|
|
39
35
|
type: :runtime
|
40
36
|
prerelease: false
|
41
37
|
version_requirements: !ruby/object:Gem::Requirement
|
42
|
-
none: false
|
43
38
|
requirements:
|
44
39
|
- - ! '>='
|
45
40
|
- !ruby/object:Gem::Version
|
@@ -47,7 +42,6 @@ dependencies:
|
|
47
42
|
- !ruby/object:Gem::Dependency
|
48
43
|
name: bundler
|
49
44
|
requirement: !ruby/object:Gem::Requirement
|
50
|
-
none: false
|
51
45
|
requirements:
|
52
46
|
- - ! '>='
|
53
47
|
- !ruby/object:Gem::Version
|
@@ -55,7 +49,6 @@ dependencies:
|
|
55
49
|
type: :development
|
56
50
|
prerelease: false
|
57
51
|
version_requirements: !ruby/object:Gem::Requirement
|
58
|
-
none: false
|
59
52
|
requirements:
|
60
53
|
- - ! '>='
|
61
54
|
- !ruby/object:Gem::Version
|
@@ -63,7 +56,6 @@ dependencies:
|
|
63
56
|
- !ruby/object:Gem::Dependency
|
64
57
|
name: shoulda
|
65
58
|
requirement: !ruby/object:Gem::Requirement
|
66
|
-
none: false
|
67
59
|
requirements:
|
68
60
|
- - ! '>='
|
69
61
|
- !ruby/object:Gem::Version
|
@@ -71,7 +63,6 @@ dependencies:
|
|
71
63
|
type: :development
|
72
64
|
prerelease: false
|
73
65
|
version_requirements: !ruby/object:Gem::Requirement
|
74
|
-
none: false
|
75
66
|
requirements:
|
76
67
|
- - ! '>='
|
77
68
|
- !ruby/object:Gem::Version
|
@@ -79,7 +70,6 @@ dependencies:
|
|
79
70
|
- !ruby/object:Gem::Dependency
|
80
71
|
name: test-unit
|
81
72
|
requirement: !ruby/object:Gem::Requirement
|
82
|
-
none: false
|
83
73
|
requirements:
|
84
74
|
- - '='
|
85
75
|
- !ruby/object:Gem::Version
|
@@ -87,7 +77,6 @@ dependencies:
|
|
87
77
|
type: :development
|
88
78
|
prerelease: false
|
89
79
|
version_requirements: !ruby/object:Gem::Requirement
|
90
|
-
none: false
|
91
80
|
requirements:
|
92
81
|
- - '='
|
93
82
|
- !ruby/object:Gem::Version
|
@@ -95,7 +84,6 @@ dependencies:
|
|
95
84
|
- !ruby/object:Gem::Dependency
|
96
85
|
name: mocha
|
97
86
|
requirement: !ruby/object:Gem::Requirement
|
98
|
-
none: false
|
99
87
|
requirements:
|
100
88
|
- - '='
|
101
89
|
- !ruby/object:Gem::Version
|
@@ -103,7 +91,6 @@ dependencies:
|
|
103
91
|
type: :development
|
104
92
|
prerelease: false
|
105
93
|
version_requirements: !ruby/object:Gem::Requirement
|
106
|
-
none: false
|
107
94
|
requirements:
|
108
95
|
- - '='
|
109
96
|
- !ruby/object:Gem::Version
|
@@ -111,7 +98,6 @@ dependencies:
|
|
111
98
|
- !ruby/object:Gem::Dependency
|
112
99
|
name: jeweler
|
113
100
|
requirement: !ruby/object:Gem::Requirement
|
114
|
-
none: false
|
115
101
|
requirements:
|
116
102
|
- - ~>
|
117
103
|
- !ruby/object:Gem::Version
|
@@ -119,7 +105,6 @@ dependencies:
|
|
119
105
|
type: :development
|
120
106
|
prerelease: false
|
121
107
|
version_requirements: !ruby/object:Gem::Requirement
|
122
|
-
none: false
|
123
108
|
requirements:
|
124
109
|
- - ~>
|
125
110
|
- !ruby/object:Gem::Version
|
@@ -127,7 +112,6 @@ dependencies:
|
|
127
112
|
- !ruby/object:Gem::Dependency
|
128
113
|
name: simplecov
|
129
114
|
requirement: !ruby/object:Gem::Requirement
|
130
|
-
none: false
|
131
115
|
requirements:
|
132
116
|
- - ! '>='
|
133
117
|
- !ruby/object:Gem::Version
|
@@ -135,7 +119,6 @@ dependencies:
|
|
135
119
|
type: :development
|
136
120
|
prerelease: false
|
137
121
|
version_requirements: !ruby/object:Gem::Requirement
|
138
|
-
none: false
|
139
122
|
requirements:
|
140
123
|
- - ! '>='
|
141
124
|
- !ruby/object:Gem::Version
|
@@ -143,7 +126,20 @@ dependencies:
|
|
143
126
|
- !ruby/object:Gem::Dependency
|
144
127
|
name: webmock
|
145
128
|
requirement: !ruby/object:Gem::Requirement
|
146
|
-
|
129
|
+
requirements:
|
130
|
+
- - ~>
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: 1.9.0
|
133
|
+
type: :development
|
134
|
+
prerelease: false
|
135
|
+
version_requirements: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - ~>
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: 1.9.0
|
140
|
+
- !ruby/object:Gem::Dependency
|
141
|
+
name: vcr
|
142
|
+
requirement: !ruby/object:Gem::Requirement
|
147
143
|
requirements:
|
148
144
|
- - ! '>='
|
149
145
|
- !ruby/object:Gem::Version
|
@@ -151,15 +147,13 @@ dependencies:
|
|
151
147
|
type: :development
|
152
148
|
prerelease: false
|
153
149
|
version_requirements: !ruby/object:Gem::Requirement
|
154
|
-
none: false
|
155
150
|
requirements:
|
156
151
|
- - ! '>='
|
157
152
|
- !ruby/object:Gem::Version
|
158
153
|
version: '0'
|
159
154
|
- !ruby/object:Gem::Dependency
|
160
|
-
name:
|
155
|
+
name: pry
|
161
156
|
requirement: !ruby/object:Gem::Requirement
|
162
|
-
none: false
|
163
157
|
requirements:
|
164
158
|
- - ! '>='
|
165
159
|
- !ruby/object:Gem::Version
|
@@ -167,7 +161,6 @@ dependencies:
|
|
167
161
|
type: :development
|
168
162
|
prerelease: false
|
169
163
|
version_requirements: !ruby/object:Gem::Requirement
|
170
|
-
none: false
|
171
164
|
requirements:
|
172
165
|
- - ! '>='
|
173
166
|
- !ruby/object:Gem::Version
|
@@ -203,16 +196,26 @@ files:
|
|
203
196
|
- fixtures/vcr_cassettes/test_decrement.yml
|
204
197
|
- fixtures/vcr_cassettes/test_deep_parse.yml
|
205
198
|
- fixtures/vcr_cassettes/test_destroy.yml
|
199
|
+
- fixtures/vcr_cassettes/test_empty_response.yml
|
206
200
|
- fixtures/vcr_cassettes/test_eq_pointerize.yml
|
207
201
|
- fixtures/vcr_cassettes/test_equality.yml
|
208
202
|
- fixtures/vcr_cassettes/test_get.yml
|
209
203
|
- fixtures/vcr_cassettes/test_get_missing.yml
|
204
|
+
- fixtures/vcr_cassettes/test_image_file_associate_with_object.yml
|
205
|
+
- fixtures/vcr_cassettes/test_image_file_save.yml
|
210
206
|
- fixtures/vcr_cassettes/test_include.yml
|
211
207
|
- fixtures/vcr_cassettes/test_new_model.yml
|
212
208
|
- fixtures/vcr_cassettes/test_new_object.yml
|
213
209
|
- fixtures/vcr_cassettes/test_nils_delete_keys.yml
|
210
|
+
- fixtures/vcr_cassettes/test_object_id.yml
|
214
211
|
- fixtures/vcr_cassettes/test_parse_delete.yml
|
215
212
|
- fixtures/vcr_cassettes/test_pointer.yml
|
213
|
+
- fixtures/vcr_cassettes/test_reset_password.yml
|
214
|
+
- fixtures/vcr_cassettes/test_retries.yml
|
215
|
+
- fixtures/vcr_cassettes/test_retries_404.yml
|
216
|
+
- fixtures/vcr_cassettes/test_retries_404_correct.yml
|
217
|
+
- fixtures/vcr_cassettes/test_retries_json_error.yml
|
218
|
+
- fixtures/vcr_cassettes/test_retries_server_error.yml
|
216
219
|
- fixtures/vcr_cassettes/test_save_with_sub_objects.yml
|
217
220
|
- fixtures/vcr_cassettes/test_saving_boolean_values.yml
|
218
221
|
- fixtures/vcr_cassettes/test_saving_nested_objects.yml
|
@@ -221,15 +224,19 @@ files:
|
|
221
224
|
- fixtures/vcr_cassettes/test_text_file_save.yml
|
222
225
|
- fixtures/vcr_cassettes/test_update.yml
|
223
226
|
- fixtures/vcr_cassettes/test_updated_at.yml
|
227
|
+
- fixtures/vcr_cassettes/test_user_login.yml
|
224
228
|
- fixtures/vcr_cassettes/test_user_save.yml
|
225
229
|
- fixtures/vcr_cassettes/test_xget.yml
|
230
|
+
- lib/faraday/better_retry.rb
|
231
|
+
- lib/faraday/extended_parse_json.rb
|
232
|
+
- lib/faraday/get_method_override.rb
|
226
233
|
- lib/parse-ruby-client.rb
|
227
234
|
- lib/parse/batch.rb
|
228
235
|
- lib/parse/client.rb
|
229
236
|
- lib/parse/cloud.rb
|
230
237
|
- lib/parse/datatypes.rb
|
231
238
|
- lib/parse/error.rb
|
232
|
-
- lib/parse/
|
239
|
+
- lib/parse/installation.rb
|
233
240
|
- lib/parse/model.rb
|
234
241
|
- lib/parse/object.rb
|
235
242
|
- lib/parse/protocol.rb
|
@@ -241,6 +248,8 @@ files:
|
|
241
248
|
- test/cloud_functions/MyCloudCode/cloud/main.js
|
242
249
|
- test/config/global.json
|
243
250
|
- test/helper.rb
|
251
|
+
- test/middleware/better_retry_test.rb
|
252
|
+
- test/middleware/extend_parse_json_test.rb
|
244
253
|
- test/parsers.jpg
|
245
254
|
- test/test_batch.rb
|
246
255
|
- test/test_client.rb
|
@@ -258,29 +267,25 @@ files:
|
|
258
267
|
homepage: http://github.com/adelevie/parse-ruby-client
|
259
268
|
licenses:
|
260
269
|
- MIT
|
270
|
+
metadata: {}
|
261
271
|
post_install_message:
|
262
272
|
rdoc_options: []
|
263
273
|
require_paths:
|
264
274
|
- lib
|
265
275
|
required_ruby_version: !ruby/object:Gem::Requirement
|
266
|
-
none: false
|
267
276
|
requirements:
|
268
277
|
- - ! '>='
|
269
278
|
- !ruby/object:Gem::Version
|
270
279
|
version: '0'
|
271
|
-
segments:
|
272
|
-
- 0
|
273
|
-
hash: -2719138252462662058
|
274
280
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
275
|
-
none: false
|
276
281
|
requirements:
|
277
282
|
- - ! '>='
|
278
283
|
- !ruby/object:Gem::Version
|
279
284
|
version: '0'
|
280
285
|
requirements: []
|
281
286
|
rubyforge_project:
|
282
|
-
rubygems_version:
|
287
|
+
rubygems_version: 2.2.2
|
283
288
|
signing_key:
|
284
|
-
specification_version:
|
289
|
+
specification_version: 4
|
285
290
|
summary: A simple Ruby client for the parse.com REST API
|
286
291
|
test_files: []
|