parse-stack 1.0.5 → 1.0.6
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 +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
|