Method: Parse::Webhooks.call_route
- Defined in:
- lib/parse/webhooks.rb
.call_route(type, className, payload = nil) ⇒ Object
Calls the set of registered webhook trigger blocks or the specific function block. This method is usually called when an incoming request from Parse Server is received.
165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 |
# File 'lib/parse/webhooks.rb', line 165 def call_route(type, className, payload = nil) type = type.to_s.underscore.to_sym #support camelcase className = className.parse_class if className.respond_to?(:parse_class) className = className.to_s return unless routes[type].present? && routes[type][className].present? registry = routes[type][className] if registry.is_a?(Array) result = registry.map { |hook| payload.instance_exec(payload, &hook) }.last else result = payload.instance_exec(payload, ®istry) end if result.is_a?(Parse::Object) # if it is a Parse::Object, we will call the registered ActiveModel callbacks # and then send the proper changes payload if type == :before_save # returning false from the callback block only runs the before_* callback result.prepare_save! result = result.changes_payload elsif type == :before_delete result.run_callbacks(:destroy) { false } result = true end elsif type == :before_save && (result == true || result.nil?) # Open Source Parse server does not accept true results on before_save hooks. result = {} end result end |