parse-stack 1.0.5 → 1.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Changes.md +13 -1
- data/Gemfile.lock +1 -1
- data/lib/parse/client.rb +8 -0
- data/lib/parse/model/associations/collection_proxy.rb +4 -0
- data/lib/parse/model/core/actions.rb +6 -3
- data/lib/parse/model/core/properties.rb +22 -7
- data/lib/parse/stack/version.rb +1 -1
- data/lib/parse/webhooks.rb +7 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f726df2468ce8619a3b0a3f85a256394f0a80563
|
4
|
+
data.tar.gz: 9834d706f674c86f05ab893601c48eef4a7dfebb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c3fb7521b9c7d48429672421aedbfb421315e4e0b735926d9c808460a26ed6cff002297bf4a8160aa532b0f0f78c0b09c51b9345f60bfb43f97b11de18480c6d
|
7
|
+
data.tar.gz: db348ac32092c177321a8aba58979db324390bd748cbdb75a80ef2184cc9d789c0514d8d800cf282175340b284c6fd3e3cef13fd3aa7cf4d32b3a72953e80af0
|
data/Changes.md
CHANGED
@@ -1,5 +1,17 @@
|
|
1
1
|
# Parse-Stack Changes
|
2
2
|
|
3
|
+
1.0.6
|
4
|
+
-----------
|
5
|
+
- Fixes issue when making batch requests with special prefix url.
|
6
|
+
- Adds Parse::ConnectionError custom exception type.
|
7
|
+
- You can call locally registered cloud functions with
|
8
|
+
Parse::Webhooks.run_function(:functionName, params) without going through the
|
9
|
+
entire Parse API network stack.
|
10
|
+
- `:symbolize => true` now works for `:array` data types. All items in the collection
|
11
|
+
will be symbolized - useful for array of strings.
|
12
|
+
- Prevent ACLs from causing an autofetch.
|
13
|
+
- Empty strings, arrays and `false` are now working with `:default` option in properties.
|
14
|
+
|
3
15
|
1.0.5
|
4
16
|
-----------
|
5
17
|
- Defaults are applied on object instantiation.
|
@@ -10,7 +22,7 @@
|
|
10
22
|
- Fixes minor issue when storing and retrieving objects from the cache.
|
11
23
|
- Support for providing :server_url as a connection option for those migrating hosting
|
12
24
|
their own parse-server.
|
13
|
-
|
25
|
+
|
14
26
|
1.0.3
|
15
27
|
-----------
|
16
28
|
- Fixes minor issue when passing `nil` to the class `find` method.
|
data/Gemfile.lock
CHANGED
data/lib/parse/client.rb
CHANGED
@@ -8,6 +8,10 @@ require_relative "client/caching"
|
|
8
8
|
require_relative "api/all"
|
9
9
|
|
10
10
|
module Parse
|
11
|
+
|
12
|
+
# This is an exception that is thrown if there is a client connectivity issue
|
13
|
+
class ConnectionError < Exception; end;
|
14
|
+
|
11
15
|
# Main class for the client. The client class is based on a Faraday stack.
|
12
16
|
# The Faraday stack is similar to a Rack-style application in which you can define middlewares
|
13
17
|
# that will be called for each request going out and coming back in. We use this in order to setup
|
@@ -111,6 +115,10 @@ module Parse
|
|
111
115
|
self
|
112
116
|
end
|
113
117
|
|
118
|
+
def url_prefix
|
119
|
+
@session.url_prefix
|
120
|
+
end
|
121
|
+
|
114
122
|
def clear_cache!
|
115
123
|
self.cache.clear if self.cache.present?
|
116
124
|
end
|
@@ -190,12 +190,15 @@ module Parse
|
|
190
190
|
# This creates a destroy_request for the current object.
|
191
191
|
def destroy_request
|
192
192
|
return nil unless @id.present?
|
193
|
-
uri =
|
193
|
+
uri = self.uri_path
|
194
194
|
r = Request.new( :delete, uri )
|
195
195
|
r.tag = object_id
|
196
196
|
r
|
197
197
|
end
|
198
198
|
|
199
|
+
def uri_path
|
200
|
+
self.client.url_prefix.path + Client.uri_path(self)
|
201
|
+
end
|
199
202
|
# Creates an array of all possible PUT operations that need to be performed
|
200
203
|
# on this local object. The reason it is a list is because attribute operations,
|
201
204
|
# relational add operations and relational remove operations are treated as separate
|
@@ -203,7 +206,7 @@ module Parse
|
|
203
206
|
def change_requests(force = false)
|
204
207
|
requests = []
|
205
208
|
# get the URI path for this object.
|
206
|
-
uri =
|
209
|
+
uri = self.uri_path
|
207
210
|
|
208
211
|
# generate the request to update the object (PUT)
|
209
212
|
if attribute_changes? || force
|
@@ -436,7 +439,7 @@ module Parse
|
|
436
439
|
def autofetch!(key)
|
437
440
|
key = key.to_sym
|
438
441
|
@fetch_lock ||= false
|
439
|
-
if @fetch_lock != true && pointer? && Parse::Properties::BASE_KEYS.include?(key) == false && respond_to?(:fetch)
|
442
|
+
if @fetch_lock != true && pointer? && key != :acl && Parse::Properties::BASE_KEYS.include?(key) == false && respond_to?(:fetch)
|
440
443
|
@fetch_lock = true
|
441
444
|
send :fetch
|
442
445
|
@fetch_lock = false
|
@@ -133,8 +133,8 @@ module Parse
|
|
133
133
|
symbolize_value = opts[:symbolize]
|
134
134
|
|
135
135
|
#only support symbolization of string data types
|
136
|
-
if symbolize_value && data_type
|
137
|
-
raise 'Symbolization is only supported on :string data types.'
|
136
|
+
if symbolize_value && (data_type == :string || data_type == :array) == false
|
137
|
+
raise 'Symbolization is only supported on :string or :array data types.'
|
138
138
|
end
|
139
139
|
|
140
140
|
# Here is the where the 'magic' begins. For each property defined, we will
|
@@ -142,7 +142,7 @@ module Parse
|
|
142
142
|
# helpers.
|
143
143
|
# get the default value if provided (or Proc)
|
144
144
|
default_value = opts[:default]
|
145
|
-
|
145
|
+
unless default_value.nil?
|
146
146
|
defaults_list.push(key) if default_value.present?
|
147
147
|
|
148
148
|
define_method("#{key}_default") do
|
@@ -189,7 +189,16 @@ module Parse
|
|
189
189
|
send "#{key}_will_change!"
|
190
190
|
end
|
191
191
|
# finally return the value
|
192
|
-
symbolize_value
|
192
|
+
if symbolize_value
|
193
|
+
if data_type == :string
|
194
|
+
return value.respond_to?(:to_sym) ? value.to_sym : value
|
195
|
+
elsif data_type == :array && value.is_a?(Array)
|
196
|
+
# value.map(&:to_sym)
|
197
|
+
return value.compact.map { |m| m.respond_to?(:to_sym) ? m.to_sym : m }
|
198
|
+
end
|
199
|
+
end
|
200
|
+
|
201
|
+
value
|
193
202
|
end
|
194
203
|
|
195
204
|
# The second method to be defined is a setter method. This is done by
|
@@ -215,9 +224,15 @@ module Parse
|
|
215
224
|
if track == true
|
216
225
|
send :"#{key}_will_change!" unless val == instance_variable_get( :"@#{key}" )
|
217
226
|
end
|
218
|
-
|
219
|
-
|
220
|
-
|
227
|
+
|
228
|
+
if symbolize_value
|
229
|
+
if data_type == :string
|
230
|
+
val = nil if val.blank?
|
231
|
+
val = val.to_sym if val.respond_to?(:to_sym)
|
232
|
+
elsif val.is_a?(Parse::CollectionProxy)
|
233
|
+
items = val.collection.map { |m| m.respond_to?(:to_sym) ? m.to_sym : m }
|
234
|
+
val.set_collection! items
|
235
|
+
end
|
221
236
|
end
|
222
237
|
# now set the instance value
|
223
238
|
instance_variable_set :"@#{key}", val
|
data/lib/parse/stack/version.rb
CHANGED
data/lib/parse/webhooks.rb
CHANGED
@@ -121,6 +121,13 @@ module Parse
|
|
121
121
|
#puts "Webhook: #{type} -> #{className}..."
|
122
122
|
end
|
123
123
|
|
124
|
+
def run_function(name, params)
|
125
|
+
payload = Payload.new
|
126
|
+
payload.function_name = name
|
127
|
+
payload.params = params
|
128
|
+
call_route(:function, name, payload)
|
129
|
+
end
|
130
|
+
|
124
131
|
def call_route(type, className, payload = nil)
|
125
132
|
type = type.to_s.underscore.to_sym #support camelcase
|
126
133
|
className = className.parse_class if className.respond_to?(:parse_class)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: parse-stack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anthony Persaud
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-02-
|
12
|
+
date: 2016-02-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activemodel
|