parse-stack 1.5.3 → 1.6.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 +4 -4
- data/.github/parse-ruby-sdk.png +0 -0
- data/Changes.md +25 -1
- data/Gemfile.lock +4 -4
- data/README.md +37 -31
- data/bin/console +3 -0
- data/lib/parse/api/all.rb +2 -1
- data/lib/parse/api/apps.rb +12 -0
- data/lib/parse/api/config.rb +5 -1
- data/lib/parse/api/files.rb +1 -0
- data/lib/parse/api/hooks.rb +1 -0
- data/lib/parse/api/objects.rb +4 -1
- data/lib/parse/api/push.rb +1 -0
- data/lib/parse/api/{schemas.rb → schema.rb} +7 -0
- data/lib/parse/api/server.rb +44 -0
- data/lib/parse/api/sessions.rb +1 -0
- data/lib/parse/api/users.rb +4 -1
- data/lib/parse/client.rb +109 -73
- data/lib/parse/client/authentication.rb +2 -1
- data/lib/parse/client/batch.rb +9 -1
- data/lib/parse/client/body_builder.rb +16 -1
- data/lib/parse/client/caching.rb +15 -13
- data/lib/parse/client/protocol.rb +27 -15
- data/lib/parse/client/response.rb +26 -8
- data/lib/parse/model/acl.rb +1 -1
- data/lib/parse/model/associations/belongs_to.rb +18 -19
- data/lib/parse/model/associations/collection_proxy.rb +6 -0
- data/lib/parse/model/associations/has_many.rb +5 -6
- data/lib/parse/model/bytes.rb +4 -1
- data/lib/parse/model/classes/user.rb +46 -44
- data/lib/parse/model/core/actions.rb +508 -460
- data/lib/parse/model/core/builder.rb +75 -0
- data/lib/parse/model/core/errors.rb +9 -0
- data/lib/parse/model/core/fetching.rb +42 -38
- data/lib/parse/model/core/properties.rb +46 -27
- data/lib/parse/model/core/querying.rb +231 -228
- data/lib/parse/model/core/schema.rb +76 -74
- data/lib/parse/model/date.rb +10 -2
- data/lib/parse/model/file.rb +16 -2
- data/lib/parse/model/geopoint.rb +9 -2
- data/lib/parse/model/model.rb +38 -7
- data/lib/parse/model/object.rb +60 -19
- data/lib/parse/model/pointer.rb +22 -1
- data/lib/parse/model/push.rb +6 -2
- data/lib/parse/query.rb +57 -11
- data/lib/parse/query/constraint.rb +5 -2
- data/lib/parse/query/constraints.rb +588 -589
- data/lib/parse/query/ordering.rb +2 -2
- data/lib/parse/stack.rb +1 -0
- data/lib/parse/stack/version.rb +1 -1
- data/lib/parse/webhooks.rb +30 -29
- data/lib/parse/webhooks/payload.rb +181 -168
- data/lib/parse/webhooks/registration.rb +1 -1
- data/parse-stack.gemspec +9 -9
- metadata +9 -12
data/lib/parse/query/ordering.rb
CHANGED
@@ -24,7 +24,7 @@ module Parse
|
|
24
24
|
# @!attribute [rw] field
|
25
25
|
# @return [Symbol] the name of the field
|
26
26
|
attr_accessor :field
|
27
|
-
|
27
|
+
|
28
28
|
# @!attribute [rw] direction
|
29
29
|
# The direction of the sorting. This is either `:asc` or `:desc`.
|
30
30
|
# @return [Symbol]
|
@@ -59,7 +59,7 @@ module Parse
|
|
59
59
|
|
60
60
|
end
|
61
61
|
|
62
|
-
#
|
62
|
+
# Extension to add all the operator instance methods to the Symbol classe
|
63
63
|
class Symbol
|
64
64
|
Parse::Order::ORDERING.keys.each do |sym|
|
65
65
|
define_method(sym) do
|
data/lib/parse/stack.rb
CHANGED
data/lib/parse/stack/version.rb
CHANGED
data/lib/parse/webhooks.rb
CHANGED
@@ -51,7 +51,7 @@ module Parse
|
|
51
51
|
#
|
52
52
|
# end
|
53
53
|
# @param type (see Parse::Webhooks.route)
|
54
|
-
# @yield the body of the function to be evaluated in the scope of a {Parse::Payload} instance.
|
54
|
+
# @yield the body of the function to be evaluated in the scope of a {Parse::Webhooks::Payload} instance.
|
55
55
|
# @param block [Symbol] the name of the method to call, if no block is passed.
|
56
56
|
# @return (see Parse::Webhooks.route)
|
57
57
|
def self.webhook(type, block = nil)
|
@@ -75,28 +75,20 @@ module Parse
|
|
75
75
|
|
76
76
|
end
|
77
77
|
|
78
|
-
class Payload
|
79
|
-
# This method will intentionally raise a {WebhookErrorResponse}, which when used inside
|
80
|
-
# of a registered cloud code webhook function or trigger, will halt processing
|
81
|
-
# and return the proper error response code back to the Parse server.
|
82
|
-
# @param msg [String] the error message
|
83
|
-
# @raise WebhookErrorResponse
|
84
|
-
# @return [WebhookErrorResponse]
|
85
|
-
def error!(msg = "")
|
86
|
-
raise WebhookErrorResponse, msg
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
# The error to be raised in registered trigger or function webhook blocks that
|
91
|
-
# will trigger the Parse::Webhooks application to return the proper error response.
|
92
|
-
class WebhookErrorResponse < StandardError; end;
|
93
78
|
# A Rack-based application middlware to handle incoming Parse cloud code webhook
|
94
79
|
# requests.
|
95
80
|
class Webhooks
|
81
|
+
# The error to be raised in registered trigger or function webhook blocks that
|
82
|
+
# will trigger the Parse::Webhooks application to return the proper error response.
|
83
|
+
class ResponseError < StandardError; end;
|
84
|
+
|
96
85
|
include Client::Connectable
|
97
|
-
extend
|
86
|
+
extend Parse::Webhooks::Registration
|
87
|
+
# The name of the incoming env containing the webhook key.
|
98
88
|
HTTP_PARSE_WEBHOOK = "HTTP_X_PARSE_WEBHOOK_KEY"
|
89
|
+
# The name of the incoming env containing the application id key.
|
99
90
|
HTTP_PARSE_APPLICATION_ID = "HTTP_X_PARSE_APPLICATION_ID"
|
91
|
+
# The content type that needs to be sent back to Parse server.
|
100
92
|
CONTENT_TYPE = "application/json"
|
101
93
|
|
102
94
|
# @!attribute key
|
@@ -173,7 +165,7 @@ module Parse
|
|
173
165
|
# This method is usually called when an incoming request from Parse Server is received.
|
174
166
|
# @param type (see route)
|
175
167
|
# @param className (see route)
|
176
|
-
# @param payload [Parse::Payload] the payload object received from the server.
|
168
|
+
# @param payload [Parse::Webhooks::Payload] the payload object received from the server.
|
177
169
|
# @return [Object] the result of the trigger or function.
|
178
170
|
def call_route(type, className, payload = nil)
|
179
171
|
type = type.to_s.underscore.to_sym #support camelcase
|
@@ -219,6 +211,9 @@ module Parse
|
|
219
211
|
{ error: data }.to_json
|
220
212
|
end
|
221
213
|
|
214
|
+
# Returns the configured webhook key if available. By default it will use
|
215
|
+
# the value of ENV['PARSE_WEBHOOK_KEY'] if not configured.
|
216
|
+
# @return [String]
|
222
217
|
def key
|
223
218
|
@key ||= ENV['PARSE_WEBHOOK_KEY']
|
224
219
|
end
|
@@ -226,12 +221,18 @@ module Parse
|
|
226
221
|
# Standard Rack call method. This method processes an incoming cloud code
|
227
222
|
# webhook request from Parse Server, validates it and executes any registered handlers for it.
|
228
223
|
# The result of the handler for the matching webhook request is sent back to
|
229
|
-
# Parse Server. If the handler raises a {Parse::
|
224
|
+
# Parse Server. If the handler raises a {Parse::Webhooks::ResponseError},
|
230
225
|
# it will return the proper error response.
|
226
|
+
# @raise Parse::Webhooks::ResponseError whenever {Parse::Object}, ActiveModel::ValidationError
|
231
227
|
# @param env [Hash] the environment hash in a Rack request.
|
232
|
-
# @return [
|
233
|
-
# @todo Create a call! method that takes a dup of this env.
|
228
|
+
# @return [Array] the value of calling `finish` on the {http://www.rubydoc.info/github/rack/rack/Rack/Response Rack::Response} object.
|
234
229
|
def call(env)
|
230
|
+
# Thraed safety
|
231
|
+
dup.call!(env)
|
232
|
+
end
|
233
|
+
|
234
|
+
# @!visibility private
|
235
|
+
def call!(env)
|
235
236
|
|
236
237
|
request = Rack::Request.new env
|
237
238
|
response = Rack::Response.new
|
@@ -248,7 +249,7 @@ module Parse
|
|
248
249
|
|
249
250
|
request.body.rewind
|
250
251
|
begin
|
251
|
-
payload = Parse::Payload.new request.body.read
|
252
|
+
payload = Parse::Webhooks::Payload.new request.body.read
|
252
253
|
rescue => e
|
253
254
|
warn "Invalid webhook payload format: #{e}"
|
254
255
|
response.write error("Invalid payload format. Should be valid JSON.")
|
@@ -257,12 +258,12 @@ module Parse
|
|
257
258
|
|
258
259
|
if self.logging.present?
|
259
260
|
if payload.trigger?
|
260
|
-
puts "[
|
261
|
+
puts "[Webhooks::Request] --> #{payload.trigger_name} #{payload.parse_class}:#{payload.parse_id}"
|
261
262
|
elsif payload.function?
|
262
263
|
puts "[ParseWebhooks Request] --> Function #{payload.function_name}"
|
263
264
|
end
|
264
265
|
if self.logging == :debug
|
265
|
-
puts "[
|
266
|
+
puts "[Webhooks::Payload] ----------------------------"
|
266
267
|
puts payload.as_json
|
267
268
|
puts "----------------------------------------------------\n"
|
268
269
|
end
|
@@ -280,22 +281,22 @@ module Parse
|
|
280
281
|
generic_result = Parse::Webhooks.call_route(payload.trigger_name, "*", payload)
|
281
282
|
result = generic_result if generic_result.present? && result.nil?
|
282
283
|
else
|
283
|
-
puts "[
|
284
|
+
puts "[Webhooks] --> Could not find mapping route for #{payload.to_json}"
|
284
285
|
end
|
285
286
|
|
286
287
|
result = true if result.nil?
|
287
288
|
if self.logging.present?
|
288
|
-
puts "[
|
289
|
+
puts "[Webhooks::Response] ----------------------------"
|
289
290
|
puts success(result)
|
290
291
|
puts "----------------------------------------------------\n"
|
291
292
|
end
|
292
293
|
response.write success(result)
|
293
294
|
return response.finish
|
294
|
-
rescue Parse::
|
295
|
+
rescue Parse::Webhooks::ResponseError, ActiveModel::ValidationError => e
|
295
296
|
if payload.trigger?
|
296
|
-
puts "[
|
297
|
+
puts "[Webhooks::ResponseError] >> #{payload.trigger_name} #{payload.parse_class}:#{payload.parse_id}: #{e}"
|
297
298
|
elsif payload.function?
|
298
|
-
puts "[
|
299
|
+
puts "[Webhooks::ResponseError] >> #{payload.function_name}: #{e}"
|
299
300
|
end
|
300
301
|
response.write error( e.to_s )
|
301
302
|
return response.finish
|
@@ -10,178 +10,191 @@ require 'active_support/core_ext'
|
|
10
10
|
require 'active_model_serializers'
|
11
11
|
|
12
12
|
module Parse
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
hash =
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
ATTRIBUTES
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
return
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
return
|
96
|
-
|
97
|
-
|
13
|
+
class Webhooks
|
14
|
+
# Represents the data structure that Parse server sends to a registered webhook.
|
15
|
+
# Parse Parse allows you to receive Cloud Code webhooks on your own hosted
|
16
|
+
# server. The `Parse::Webhooks` class is a lightweight Rack application that
|
17
|
+
# routes incoming Cloud Code webhook requests and payloads to locally
|
18
|
+
# registered handlers. The payloads are {Parse::Webhooks::Payload} type of objects that
|
19
|
+
# represent that data that Parse sends webhook handlers.
|
20
|
+
class Payload
|
21
|
+
# The set of keys that can be contained in a Parse hash payload for a webhook.
|
22
|
+
ATTRIBUTES = { master: nil, user: nil,
|
23
|
+
installationId: nil, params: nil,
|
24
|
+
functionName: nil, object: nil,
|
25
|
+
original: nil, update: nil,
|
26
|
+
triggerName: nil }.freeze
|
27
|
+
include ::ActiveModel::Serializers::JSON
|
28
|
+
# @!attribute [rw] master
|
29
|
+
# @return [Boolean] whether the master key was used for this request.
|
30
|
+
# @!attribute [rw] user
|
31
|
+
# @return [Parse::User] the user who performed this request or action.
|
32
|
+
# @!attribute [rw] installation_id
|
33
|
+
# @return [String] The identifier of the device that submitted the request.
|
34
|
+
# @!attribute [rw] params
|
35
|
+
# @return [Hash] The list of function arguments submitted for a function request.
|
36
|
+
# @!attribute [rw] function_name
|
37
|
+
# @return [String] the name of the function.
|
38
|
+
# @!attribute [rw] object
|
39
|
+
# In a beforeSave, this attribute is the final object that will be persisted.
|
40
|
+
# @return [Hash] the object hash related to a webhook trigger request.
|
41
|
+
# @see #parse_object
|
42
|
+
# @!attribute [rw] trigger_name
|
43
|
+
# @return [String] the name of the trigger (ex. beforeSave, afterSave, etc.)
|
44
|
+
# @!attribute [rw] original
|
45
|
+
# In a beforeSave, for previously saved objects, this attribute is the Parse::Object
|
46
|
+
# that was previously in the persistent store.
|
47
|
+
# @return [Hash] the object hash related to a webhook trigger request.
|
48
|
+
# @see #parse_object
|
49
|
+
# @!attribute [rw] raw
|
50
|
+
# @return [Hash] the raw payload from Parse server.
|
51
|
+
# @!attribute [rw] update
|
52
|
+
# @return [Hash] the update payload in the request.
|
53
|
+
attr_accessor :master, :user, :installation_id, :params, :function_name, :object, :trigger_name
|
54
|
+
|
55
|
+
attr_accessor :original, :update, :raw
|
56
|
+
alias_method :installationId, :installation_id
|
57
|
+
alias_method :functionName, :function_name
|
58
|
+
alias_method :triggerName, :trigger_name
|
59
|
+
|
60
|
+
# You would normally never create a {Parse::Webhooks::Payload} object since it is automatically
|
61
|
+
# provided to you when using Parse::Webhooks.
|
62
|
+
# @see Parse::Webhooks
|
63
|
+
def initialize(hash = {})
|
64
|
+
hash = JSON.parse(hash) if hash.is_a?(String)
|
65
|
+
hash = Hash[hash.map{ |k, v| [k.to_s.underscore.to_sym, v] }]
|
66
|
+
@raw = hash
|
67
|
+
@master = hash[:master]
|
68
|
+
@user = Parse::User.new hash[:user] if hash[:user].present?
|
69
|
+
@installation_id = hash[:installation_id]
|
70
|
+
@params = hash[:params]
|
71
|
+
@params = @params.with_indifferent_access if @params.is_a?(Hash)
|
72
|
+
@function_name = hash[:function_name]
|
73
|
+
@object = hash[:object]
|
74
|
+
@trigger_name = hash[:trigger_name]
|
75
|
+
@original = hash[:original]
|
76
|
+
@update = hash[:update] || {} #it comes as an update hash
|
77
|
+
end
|
78
|
+
|
79
|
+
# @return [ATTRIBUTES]
|
80
|
+
def attributes
|
81
|
+
ATTRIBUTES
|
82
|
+
end
|
83
|
+
|
84
|
+
# true if this is a webhook function request.
|
85
|
+
def function?
|
86
|
+
@function_name.present?
|
87
|
+
end
|
88
|
+
|
89
|
+
# @return [String] the name of the Parse class for this request.
|
90
|
+
def parse_class
|
91
|
+
return nil unless @object.present?
|
92
|
+
@object[Parse::Model::KEY_CLASS_NAME] || @object[:className]
|
93
|
+
end
|
94
|
+
|
95
|
+
# @return [String] the objectId in this request.
|
96
|
+
def parse_id
|
97
|
+
return nil unless @object.present?
|
98
|
+
@object[Parse::Model::OBJECT_ID] || @object[:objectId]
|
99
|
+
end; alias_method :objectId, :parse_id
|
100
|
+
|
101
|
+
# true if this is a webhook trigger request.
|
102
|
+
def trigger?
|
103
|
+
@trigger_name.present?
|
104
|
+
end
|
105
|
+
|
106
|
+
# true if this is a beforeSave or beforeDelete webhook trigger request.
|
107
|
+
def before_trigger?
|
108
|
+
before_save? || before_delete?
|
109
|
+
end
|
110
|
+
|
111
|
+
# true if this is a afterSave or afterDelete webhook trigger request.
|
112
|
+
def after_trigger?
|
113
|
+
after_save? || after_delete?
|
114
|
+
end
|
115
|
+
|
116
|
+
# true if this is a beforeSave webhook trigger request.
|
117
|
+
def before_save?
|
118
|
+
trigger? && @trigger_name.to_sym == :beforeSave
|
119
|
+
end
|
120
|
+
|
121
|
+
# true if this is a afterSave webhook trigger request.
|
122
|
+
def after_save?
|
123
|
+
trigger? && @trigger_name.to_sym == :afterSave
|
124
|
+
end
|
125
|
+
|
126
|
+
# true if this is a beforeDelete webhook trigger request.
|
127
|
+
def before_delete?
|
128
|
+
trigger? && @trigger_name.to_sym == :beforeDelete
|
129
|
+
end
|
130
|
+
|
131
|
+
# true if this is a afterDelete webhook trigger request.
|
132
|
+
def after_delete?
|
133
|
+
trigger? && @trigger_name.to_sym == :afterDelete
|
134
|
+
end
|
135
|
+
|
136
|
+
# true if this request is a trigger that contains an object.
|
137
|
+
def object?
|
138
|
+
trigger? && @object.present?
|
139
|
+
end
|
140
|
+
|
141
|
+
# @return [Parse::Object] a Parse::Object from the original object
|
142
|
+
def original_parse_object
|
143
|
+
return nil unless @original.is_a?(Hash)
|
144
|
+
Parse::Object.build(@original)
|
145
|
+
end
|
146
|
+
|
147
|
+
# This method returns a Parse::Object by combining the original object, if was provided,
|
148
|
+
# with the final object. This will return a dirty tracked Parse::Object subclass,
|
149
|
+
# that will have information on which fields have changed between the previous state
|
150
|
+
# in the persistent store and the one about to be saved.
|
151
|
+
# @param pristine [Boolean] whether the object should be returned without dirty tracking.
|
152
|
+
# @return [Parse::Object] a dirty tracked Parse::Object subclass instance
|
153
|
+
def parse_object(pristine = false)
|
154
|
+
return nil unless object?
|
155
|
+
return Parse::Object.build(@object) if pristine
|
156
|
+
# if its a before trigger, then we build the original object and apply the updates
|
157
|
+
# in order to create a Parse::Object that has the dirty tracking information
|
158
|
+
# if no original is nil, then it means this is a brand new object, so we create
|
159
|
+
# one from the className
|
160
|
+
if before_trigger?
|
161
|
+
# if original is present, then this is a modified object
|
162
|
+
if @original.present? && @original.is_a?(Hash)
|
163
|
+
o = Parse::Object.build @original
|
164
|
+
o.apply_attributes! @object, dirty_track: true
|
98
165
|
|
99
|
-
# true if this is a webhook trigger request.
|
100
|
-
def trigger?
|
101
|
-
@trigger_name.present?
|
102
|
-
end
|
103
|
-
|
104
|
-
# true if this is a beforeSave or beforeDelete webhook trigger request.
|
105
|
-
def before_trigger?
|
106
|
-
before_save? || before_delete?
|
107
|
-
end
|
108
|
-
|
109
|
-
# true if this is a afterSave or afterDelete webhook trigger request.
|
110
|
-
def after_trigger?
|
111
|
-
after_save? || after_delete?
|
112
|
-
end
|
113
|
-
|
114
|
-
# true if this is a beforeSave webhook trigger request.
|
115
|
-
def before_save?
|
116
|
-
trigger? && @trigger_name.to_sym == :beforeSave
|
117
|
-
end
|
118
|
-
|
119
|
-
# true if this is a afterSave webhook trigger request.
|
120
|
-
def after_save?
|
121
|
-
trigger? && @trigger_name.to_sym == :afterSave
|
122
|
-
end
|
123
|
-
|
124
|
-
# true if this is a beforeDelete webhook trigger request.
|
125
|
-
def before_delete?
|
126
|
-
trigger? && @trigger_name.to_sym == :beforeDelete
|
127
|
-
end
|
128
|
-
|
129
|
-
# true if this is a afterDelete webhook trigger request.
|
130
|
-
def after_delete?
|
131
|
-
trigger? && @trigger_name.to_sym == :afterDelete
|
132
|
-
end
|
133
|
-
|
134
|
-
# true if this request is a trigger that contains an object.
|
135
|
-
def object?
|
136
|
-
trigger? && @object.present?
|
137
|
-
end
|
138
|
-
|
139
|
-
# @return [Parse::Object] a Parse::Object from the original object
|
140
|
-
def original_parse_object
|
141
|
-
return nil unless @original.is_a?(Hash)
|
142
|
-
Parse::Object.build(@original)
|
143
|
-
end
|
144
|
-
|
145
|
-
# This method returns a Parse::Object by combining the original object, if was provided,
|
146
|
-
# with the final object. This will return a dirty tracked Parse::Object subclass,
|
147
|
-
# that will have information on which fields have changed between the previous state
|
148
|
-
# in the persistent store and the one about to be saved.
|
149
|
-
# @param pristine [Boolean] whether the object should be returned without dirty tracking.
|
150
|
-
# @return [Parse::Object] a dirty tracked Parse::Object subclass instance
|
151
|
-
def parse_object(pristine = false)
|
152
|
-
return nil unless object?
|
153
|
-
return Parse::Object.build(@object) if pristine
|
154
|
-
# if its a before trigger, then we build the original object and apply the updates
|
155
|
-
# in order to create a Parse::Object that has the dirty tracking information
|
156
|
-
# if no original is nil, then it means this is a brand new object, so we create
|
157
|
-
# one from the className
|
158
|
-
if before_trigger?
|
159
|
-
# if original is present, then this is a modified object
|
160
|
-
if @original.present? && @original.is_a?(Hash)
|
161
|
-
o = Parse::Object.build @original
|
162
|
-
o.apply_attributes! @object, dirty_track: true
|
163
|
-
|
164
|
-
if o.is_a?(Parse::User) && @update.present? && @update["authData"].present?
|
165
|
-
o.auth_data = @update["authData"]
|
166
|
-
end
|
167
|
-
return o
|
168
|
-
else #else the object must be new
|
169
|
-
klass = Parse::Object.find_class parse_class
|
170
|
-
# if we have a class, return that with updated changes, otherwise
|
171
|
-
# default to regular object
|
172
|
-
if klass.present?
|
173
|
-
o = klass.new(@object || {})
|
174
166
|
if o.is_a?(Parse::User) && @update.present? && @update["authData"].present?
|
175
167
|
o.auth_data = @update["authData"]
|
176
168
|
end
|
177
169
|
return o
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
170
|
+
else #else the object must be new
|
171
|
+
klass = Parse::Object.find_class parse_class
|
172
|
+
# if we have a class, return that with updated changes, otherwise
|
173
|
+
# default to regular object
|
174
|
+
if klass.present?
|
175
|
+
o = klass.new(@object || {})
|
176
|
+
if o.is_a?(Parse::User) && @update.present? && @update["authData"].present?
|
177
|
+
o.auth_data = @update["authData"]
|
178
|
+
end
|
179
|
+
return o
|
180
|
+
end # if klass.present?
|
181
|
+
end # if we have original
|
182
|
+
|
183
|
+
end # if before_trigger?
|
184
|
+
Parse::Object.build(@object)
|
185
|
+
end
|
186
|
+
|
187
|
+
# This method will intentionally raise a {Parse::Webhooks::ResponseError} with
|
188
|
+
# a specific message. When used inside of a registered cloud code webhook
|
189
|
+
# function or trigger, will halt processing and return the proper error response
|
190
|
+
# code back to the Parse server.
|
191
|
+
# @param msg [String] the error message to send back.
|
192
|
+
# @raise Parse::Webhooks::ResponseError
|
193
|
+
# @return [Parse::Webhooks::ResponseError] the raised exception
|
194
|
+
def error!(msg = "")
|
195
|
+
raise Parse::Webhooks::ResponseError, msg
|
196
|
+
end
|
197
|
+
|
198
|
+
end # Payload
|
183
199
|
end
|
184
|
-
|
185
|
-
end # Payload
|
186
|
-
|
187
200
|
end
|