parse-stack 1.7.3 → 1.9.1

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.
Files changed (85) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/ruby.yml +36 -0
  3. data/.solargraph.yml +23 -0
  4. data/.travis.yml +6 -3
  5. data/Changes.md +84 -22
  6. data/Gemfile +14 -12
  7. data/Gemfile.lock +110 -60
  8. data/README.md +67 -24
  9. data/Rakefile +14 -14
  10. data/bin/parse-console +1 -0
  11. data/lib/parse/api/aggregate.rb +59 -0
  12. data/lib/parse/api/all.rb +2 -1
  13. data/lib/parse/api/analytics.rb +0 -3
  14. data/lib/parse/api/batch.rb +3 -5
  15. data/lib/parse/api/cloud_functions.rb +0 -3
  16. data/lib/parse/api/config.rb +0 -4
  17. data/lib/parse/api/files.rb +3 -7
  18. data/lib/parse/api/hooks.rb +4 -8
  19. data/lib/parse/api/objects.rb +9 -14
  20. data/lib/parse/api/push.rb +0 -4
  21. data/lib/parse/api/schema.rb +2 -6
  22. data/lib/parse/api/server.rb +4 -7
  23. data/lib/parse/api/sessions.rb +2 -5
  24. data/lib/parse/api/users.rb +9 -14
  25. data/lib/parse/client.rb +55 -50
  26. data/lib/parse/client/authentication.rb +29 -33
  27. data/lib/parse/client/batch.rb +8 -11
  28. data/lib/parse/client/body_builder.rb +19 -20
  29. data/lib/parse/client/caching.rb +23 -28
  30. data/lib/parse/client/protocol.rb +11 -12
  31. data/lib/parse/client/request.rb +4 -6
  32. data/lib/parse/client/response.rb +5 -7
  33. data/lib/parse/model/acl.rb +14 -12
  34. data/lib/parse/model/associations/belongs_to.rb +19 -24
  35. data/lib/parse/model/associations/collection_proxy.rb +328 -317
  36. data/lib/parse/model/associations/has_many.rb +22 -27
  37. data/lib/parse/model/associations/has_one.rb +7 -12
  38. data/lib/parse/model/associations/pointer_collection_proxy.rb +5 -13
  39. data/lib/parse/model/associations/relation_collection_proxy.rb +5 -9
  40. data/lib/parse/model/bytes.rb +8 -10
  41. data/lib/parse/model/classes/installation.rb +2 -4
  42. data/lib/parse/model/classes/product.rb +2 -5
  43. data/lib/parse/model/classes/role.rb +3 -5
  44. data/lib/parse/model/classes/session.rb +2 -5
  45. data/lib/parse/model/classes/user.rb +21 -17
  46. data/lib/parse/model/core/actions.rb +31 -46
  47. data/lib/parse/model/core/builder.rb +6 -6
  48. data/lib/parse/model/core/errors.rb +0 -1
  49. data/lib/parse/model/core/fetching.rb +45 -50
  50. data/lib/parse/model/core/properties.rb +53 -68
  51. data/lib/parse/model/core/querying.rb +292 -282
  52. data/lib/parse/model/core/schema.rb +89 -92
  53. data/lib/parse/model/date.rb +16 -23
  54. data/lib/parse/model/file.rb +171 -174
  55. data/lib/parse/model/geopoint.rb +12 -16
  56. data/lib/parse/model/model.rb +31 -37
  57. data/lib/parse/model/object.rb +58 -70
  58. data/lib/parse/model/pointer.rb +177 -176
  59. data/lib/parse/model/push.rb +8 -10
  60. data/lib/parse/model/shortnames.rb +1 -2
  61. data/lib/parse/model/time_zone.rb +3 -5
  62. data/lib/parse/query.rb +70 -37
  63. data/lib/parse/query/constraint.rb +4 -6
  64. data/lib/parse/query/constraints.rb +62 -20
  65. data/lib/parse/query/operation.rb +8 -11
  66. data/lib/parse/query/ordering.rb +45 -49
  67. data/lib/parse/stack.rb +15 -11
  68. data/lib/parse/stack/generators/rails.rb +28 -30
  69. data/lib/parse/stack/generators/templates/model.erb +5 -6
  70. data/lib/parse/stack/generators/templates/model_installation.rb +0 -1
  71. data/lib/parse/stack/generators/templates/model_role.rb +0 -1
  72. data/lib/parse/stack/generators/templates/model_session.rb +0 -1
  73. data/lib/parse/stack/generators/templates/model_user.rb +0 -1
  74. data/lib/parse/stack/generators/templates/parse.rb +9 -9
  75. data/lib/parse/stack/generators/templates/webhooks.rb +1 -2
  76. data/lib/parse/stack/railtie.rb +2 -4
  77. data/lib/parse/stack/tasks.rb +70 -86
  78. data/lib/parse/stack/version.rb +1 -1
  79. data/lib/parse/webhooks.rb +19 -26
  80. data/lib/parse/webhooks/payload.rb +26 -28
  81. data/lib/parse/webhooks/registration.rb +23 -31
  82. data/parse-stack.gemspec +28 -28
  83. data/parse-stack.png +0 -0
  84. metadata +27 -25
  85. data/.github/parse-ruby-sdk.png +0 -0
@@ -1,23 +1,30 @@
1
1
  # encoding: UTF-8
2
2
  # frozen_string_literal: true
3
3
 
4
- require_relative '../object'
4
+ require_relative "../object"
5
+
5
6
  module Parse
6
7
  class Error
7
8
  # 200 Error code indicating that the username is missing or empty.
8
- class UsernameMissingError < Error; end;
9
+ class UsernameMissingError < Error; end
10
+
9
11
  # 201 Error code indicating that the password is missing or empty.
10
- class PasswordMissingError < Error; end;
12
+ class PasswordMissingError < Error; end
13
+
11
14
  # Error code 202: indicating that the username has already been taken.
12
- class UsernameTakenError < Error; end;
15
+ class UsernameTakenError < Error; end
16
+
13
17
  # 203 Error code indicating that the email has already been taken.
14
- class EmailTakenError < Error; end;
18
+ class EmailTakenError < Error; end
19
+
15
20
  # 204 Error code indicating that the email is missing, but must be specified.
16
- class EmailMissing < Error; end;
21
+ class EmailMissing < Error; end
22
+
17
23
  # 205 Error code indicating that a user with the specified email was not found.
18
- class EmailNotFound < Error; end;
24
+ class EmailNotFound < Error; end
25
+
19
26
  # 125 Error code indicating that the email address was invalid.
20
- class InvalidEmailAddress < Error; end;
27
+ class InvalidEmailAddress < Error; end
21
28
  end
22
29
 
23
30
  # The main class representing the _User table in Parse. A user can either be signed up or anonymous.
@@ -137,7 +144,6 @@ module Parse
137
144
  #
138
145
  # @see Parse::Object
139
146
  class User < Parse::Object
140
-
141
147
  parse_class Parse::Model::CLASS_USER
142
148
  # @return [String] The session token if this user is logged in.
143
149
  attr_accessor :session_token
@@ -177,7 +183,7 @@ module Parse
177
183
 
178
184
  before_save do
179
185
  # You cannot specify user ACLs.
180
- self.clear_attribute_change!(:acl)
186
+ self.clear_attribute_change!([:acl])
181
187
  end
182
188
 
183
189
  # @return [Boolean] true if this user is anonymous.
@@ -189,7 +195,7 @@ module Parse
189
195
  # @see #anonymous?
190
196
  # @return [String] The anonymous identifier for this anonymous user.
191
197
  def anonymous_id
192
- auth_data['anonymous']['id'] if auth_data.present? && auth_data["anonymous"].is_a?(Hash)
198
+ auth_data["anonymous"]["id"] if auth_data.present? && auth_data["anonymous"].is_a?(Hash)
193
199
  end
194
200
 
195
201
  # Adds the third-party authentication data to for a given service.
@@ -212,12 +218,12 @@ module Parse
212
218
  apply_attributes!(response.result)
213
219
  end
214
220
 
215
-
216
221
  # @!visibility private
217
222
  # So that apply_attributes! works with session_token for login
218
223
  def session_token_set_attribute!(token, track = false)
219
224
  @session_token = token.to_s
220
225
  end
226
+
221
227
  alias_method :sessionToken_set_attribute!, :session_token_set_attribute!
222
228
 
223
229
  # @return [Boolean] true if this user has a session token.
@@ -341,7 +347,7 @@ module Parse
341
347
  when Parse::Response::ERROR_EMAIL_TAKEN
342
348
  raise Parse::Error::EmailTakenError, response
343
349
  end
344
- raise Parse::Client::ResponseError, response
350
+ raise Parse::Client::ResponseError, response
345
351
  end
346
352
 
347
353
  # Automatically and implicitly signup a user if it did not already exists and
@@ -353,7 +359,7 @@ module Parse
353
359
  # @return [User] a logged in user, or nil.
354
360
  # @see User.create
355
361
  def self.autologin_service(service_name, auth_data, body: {})
356
- body = body.merge({authData: {service_name => auth_data} })
362
+ body = body.merge({ authData: { service_name => auth_data } })
357
363
  self.create(body)
358
364
  end
359
365
 
@@ -364,7 +370,7 @@ module Parse
364
370
  # This method will raise all the exceptions from the similar `create` method.
365
371
  # @see User.create
366
372
  def self.signup(username, password, email = nil, body: {})
367
- body = body.merge({username: username, password: password })
373
+ body = body.merge({ username: username, password: password })
368
374
  body[:email] = email if email.present?
369
375
  self.create(body)
370
376
  end
@@ -427,7 +433,5 @@ module Parse
427
433
  end
428
434
  @session_token
429
435
  end
430
-
431
436
  end
432
-
433
437
  end
@@ -1,24 +1,21 @@
1
1
  # encoding: UTF-8
2
2
  # frozen_string_literal: true
3
3
 
4
- require 'active_model'
5
- require 'active_support'
6
- require 'active_support/inflector'
7
- require 'active_support/core_ext'
8
- require 'time'
9
- require 'parallel'
10
- require_relative '../../client/request'
11
- require_relative 'fetching'
12
-
4
+ require "active_model"
5
+ require "active_support"
6
+ require "active_support/inflector"
7
+ require "active_support/core_ext"
8
+ require "time"
9
+ require "parallel"
10
+ require_relative "../../client/request"
11
+ require_relative "fetching"
13
12
 
14
13
  module Parse
15
-
16
14
  class Query
17
15
 
18
-
19
16
  # Supporting the `all` class method to be used in scope chaining with queries.
20
17
  # @!visibility private
21
- def all(expressions = {limit: :max})
18
+ def all(expressions = { limit: :max })
22
19
  conditions(expressions)
23
20
  return results(&Proc.new) if block_given?
24
21
  results
@@ -49,7 +46,6 @@ module Parse
49
46
  klass.save_all(hash_constraints, &Proc.new) if block_given?
50
47
  klass.save_all(hash_constraints)
51
48
  end
52
-
53
49
  end
54
50
 
55
51
  # A Parse::RelationAction is special operation that adds one object to a relational
@@ -80,16 +76,12 @@ module Parse
80
76
 
81
77
  # @return [Hash] a hash representing a relation operation.
82
78
  def as_json(*args)
83
- { @key =>
84
- {
85
- "__op" => ( @polarity == true ? ADD : REMOVE ),
86
- "objects" => objects.parse_pointers
87
- }
88
- }.as_json
79
+ { @key => {
80
+ "__op" => (@polarity == true ? ADD : REMOVE),
81
+ "objects" => objects.parse_pointers,
82
+ } }.as_json
89
83
  end
90
-
91
84
  end
92
-
93
85
  end
94
86
 
95
87
  # This module is mainly all the basic orm operations. To support batching actions,
@@ -132,7 +124,7 @@ module Parse
132
124
  # @example
133
125
  # # globally across all models
134
126
  # Parse::Model.raise_on_save_failure = true
135
- # Song.raise_on_save_failure = true # per-model
127
+ # Song.raise_on_save_failure = true # per-model
136
128
  #
137
129
  # # or per-instance raise on failure
138
130
  # song.save!
@@ -156,7 +148,6 @@ module Parse
156
148
  # @param resource_attrs [Hash] a set of attribute values to be applied if an object was not found.
157
149
  # @return [Parse::Object] a Parse::Object, whether found by the query or newly created.
158
150
  def first_or_create(query_attrs = {}, resource_attrs = {})
159
-
160
151
  query_attrs = query_attrs.symbolize_keys
161
152
  resource_attrs = resource_attrs.symbolize_keys
162
153
  obj = query(query_attrs).first
@@ -205,7 +196,7 @@ module Parse
205
196
  def save_all(constraints = {})
206
197
  invalid_constraints = constraints.keys.any? do |k|
207
198
  (k == :updated_at || k == :updatedAt) ||
208
- ( k.is_a?(Parse::Operation) && (k.operand == :updated_at || k.operand == :updatedAt) )
199
+ (k.is_a?(Parse::Operation) && (k.operand == :updated_at || k.operand == :updatedAt))
209
200
  end
210
201
  if invalid_constraints
211
202
  raise ArgumentError,
@@ -267,14 +258,12 @@ module Parse
267
258
  warn "[#{self}.save_all] Reached anchor date #{anchor_date} < #{cursor.updated_at}"
268
259
  break cursor
269
260
  end
270
-
271
261
  end
272
262
 
273
263
  has_errors ||= batch.error?
274
264
  end
275
265
  not has_errors
276
266
  end
277
-
278
267
  end # ClassMethods
279
268
 
280
269
  # Perform an atomic operation on this field. This operation is done on the
@@ -295,7 +284,7 @@ module Parse
295
284
  op_hash = { field => op_hash }.as_json
296
285
  end
297
286
 
298
- response = client.update_object(parse_class, id, op_hash, session_token: _session_token )
287
+ response = client.update_object(parse_class, id, op_hash, session_token: _session_token)
299
288
  if response.error?
300
289
  puts "[#{parse_class}:#{field} Operation] #{response.error}"
301
290
  end
@@ -307,7 +296,7 @@ module Parse
307
296
  # @param objects [Array] the set of items to add to this field.
308
297
  # @return [Boolean] whether it was successful
309
298
  # @see #operate_field!
310
- def op_add!(field,objects)
299
+ def op_add!(field, objects)
311
300
  operate_field! field, { __op: :Add, objects: objects }
312
301
  end
313
302
 
@@ -317,7 +306,7 @@ module Parse
317
306
  # @param objects [Array] the set of items to add uniquely to this field.
318
307
  # @return [Boolean] whether it was successful
319
308
  # @see #operate_field!
320
- def op_add_unique!(field,objects)
309
+ def op_add_unique!(field, objects)
321
310
  operate_field! field, { __op: :AddUnique, objects: objects }
322
311
  end
323
312
 
@@ -377,7 +366,7 @@ module Parse
377
366
  def destroy_request
378
367
  return nil unless @id.present?
379
368
  uri = self.uri_path
380
- r = Request.new( :delete, uri )
369
+ r = Request.new(:delete, uri)
381
370
  r.tag = object_id
382
371
  r
383
372
  end
@@ -401,7 +390,7 @@ module Parse
401
390
  if attribute_changes? || force
402
391
  # if it's new, then we should call :post for creating the object.
403
392
  method = new? ? :post : :put
404
- r = Request.new( method, uri, body: attribute_updates)
393
+ r = Request.new(method, uri, body: attribute_updates)
405
394
  r.tag = object_id
406
395
  requests << r
407
396
  end
@@ -411,7 +400,7 @@ module Parse
411
400
  if @id.present? && relation_changes?
412
401
  relation_change_operations.each do |ops|
413
402
  next if ops.empty?
414
- r = Request.new( :put, uri, body: ops)
403
+ r = Request.new(:put, uri, body: ops)
415
404
  r.tag = object_id
416
405
  requests << r
417
406
  end
@@ -515,7 +504,7 @@ module Parse
515
504
  if relation_changes?
516
505
  # get the list of changed keys
517
506
  changed_attribute_keys = changed - relations.keys.map(&:to_s)
518
- clear_attribute_changes( changed_attribute_keys )
507
+ clear_attribute_changes(changed_attribute_keys)
519
508
  success = update_relations
520
509
  if success
521
510
  changes_applied!
@@ -528,7 +517,6 @@ module Parse
528
517
  elsif self.class.raise_on_save_failure || autoraise.present?
529
518
  raise Parse::RecordNotSaved.new(self), "Failed to create or save attributes. #{self.parse_class} was not saved."
530
519
  end
531
-
532
520
  end #callbacks
533
521
  @_session_token = nil
534
522
  success
@@ -543,7 +531,6 @@ module Parse
543
531
  save(autoraise: true, session: session)
544
532
  end
545
533
 
546
-
547
534
  # Delete this record from the Parse collection. Only valid if this object has an `id`.
548
535
  # This will run all the `destroy` callbacks.
549
536
  # @param session [String] a session token if you want to apply ACLs for a user in this operation.
@@ -577,12 +564,13 @@ module Parse
577
564
  def changes_payload
578
565
  h = attribute_updates
579
566
  if relation_changes?
580
- r = relation_change_operations.select { |s| s.present? }.first
567
+ r = relation_change_operations.select { |s| s.present? }.first
581
568
  h.merge!(r) if r.present?
582
569
  end
583
570
  #h.merge!(className: parse_class) unless h.empty?
584
571
  h.as_json
585
572
  end
573
+
586
574
  alias_method :update_payload, :changes_payload
587
575
 
588
576
  # Generates an array with two entries for addition and removal operations. The first entry
@@ -592,12 +580,12 @@ module Parse
592
580
  # @return [Array] an array with two hashes; the first is a hash of all the addition operations and
593
581
  # the second hash, all the remove operations.
594
582
  def relation_change_operations
595
- return [{},{}] unless relation_changes?
583
+ return [{}, {}] unless relation_changes?
596
584
 
597
585
  additions = []
598
586
  removals = []
599
587
  # go through all the additions of a collection and generate an action to add.
600
- relation_updates.each do |field,collection|
588
+ relation_updates.each do |field, collection|
601
589
  if collection.additions.count > 0
602
590
  additions.push Parse::RelationAction.new(field, objects: collection.additions, polarity: true)
603
591
  end
@@ -607,8 +595,8 @@ module Parse
607
595
  end
608
596
  end
609
597
  # merge all additions and removals into one large hash
610
- additions = additions.reduce({}) { |m,v| m.merge! v.as_json }
611
- removals = removals.reduce({}) { |m,v| m.merge! v.as_json }
598
+ additions = additions.reduce({}) { |m, v| m.merge! v.as_json }
599
+ removals = removals.reduce({}) { |m, v| m.merge! v.as_json }
612
600
  [additions, removals]
613
601
  end
614
602
 
@@ -656,7 +644,7 @@ module Parse
656
644
  # @return [Hash]
657
645
  def set_attributes!(hash, dirty_track = false)
658
646
  return unless hash.is_a?(Hash)
659
- hash.each do |k,v|
647
+ hash.each do |k, v|
660
648
  next if k == Parse::Model::OBJECT_ID || k == Parse::Model::ID
661
649
  method = "#{k}_set_attribute!"
662
650
  send(method, v, dirty_track) if respond_to?(method)
@@ -667,23 +655,20 @@ module Parse
667
655
  # local attributes.
668
656
  def changes_applied!
669
657
  # find all fields that are of type :array
670
- fields(:array) do |key,v|
658
+ fields(:array) do |key, v|
671
659
  proxy = send(key)
672
660
  # clear changes
673
661
  proxy.changes_applied! if proxy.respond_to?(:changes_applied!)
674
662
  end
675
663
 
676
664
  # for all relational fields,
677
- relations.each do |key,v|
665
+ relations.each do |key, v|
678
666
  proxy = send(key)
679
667
  # clear changes if they support the method.
680
668
  proxy.changes_applied! if proxy.respond_to?(:changes_applied!)
681
669
  end
682
670
  changes_applied
683
671
  end
684
-
685
-
686
672
  end
687
673
  end
688
-
689
674
  end
@@ -1,10 +1,10 @@
1
1
  # encoding: UTF-8
2
2
  # frozen_string_literal: true
3
3
 
4
- require 'active_support'
5
- require 'active_support/inflector'
6
- require 'active_support/core_ext'
7
- require_relative '../object'
4
+ require "active_support"
5
+ require "active_support/inflector"
6
+ require "active_support/core_ext"
7
+ require_relative "../object"
8
8
 
9
9
  module Parse
10
10
  # Create all Parse::Object subclasses, including their properties and inferred
@@ -60,9 +60,9 @@ module Parse
60
60
 
61
61
  data_type = type[:type].downcase.to_sym
62
62
  if data_type == :pointer
63
- klass.belongs_to key, as: type[:targetClass], field: field
63
+ klass.belongs_to key, as: type[:targetClass], field: field
64
64
  elsif data_type == :relation
65
- klass.has_many key, as: type[:targetClass], field: field
65
+ klass.has_many key, through: :relation, as: type[:targetClass], field: field
66
66
  else
67
67
  klass.property key, data_type, field: field
68
68
  end
@@ -5,5 +5,4 @@
5
5
  module Parse
6
6
  # An abstract parent class for all Parse::Error types.
7
7
  class Error < StandardError; end
8
-
9
8
  end
@@ -1,8 +1,8 @@
1
1
  # encoding: UTF-8
2
2
  # frozen_string_literal: true
3
3
 
4
- require 'time'
5
- require 'parallel'
4
+ require "time"
5
+ require "parallel"
6
6
 
7
7
  module Parse
8
8
  # Combines a set of core functionality for {Parse::Object} and its subclasses.
@@ -48,62 +48,57 @@ module Parse
48
48
  send :fetch
49
49
  @fetch_lock = false
50
50
  end
51
-
52
51
  end
53
-
54
52
  end
55
53
  end
56
54
  end
57
55
 
58
-
59
-
60
56
  class Array
61
57
 
62
- # Perform a threaded each iteration on a set of array items.
63
- # @param threads [Integer] the maximum number of threads to spawn/
64
- # @yield the block for the each iteration.
65
- # @return [self]
66
- # @see Array#each
67
- # @see https://github.com/grosser/parallel Parallel
68
- def threaded_each(threads = 2, &block)
69
- Parallel.each(self, {in_threads: threads}, &block)
70
- end
71
-
72
- # Perform a threaded map operation on a set of array items.
73
- # @param threads [Integer] the maximum number of threads to spawn
74
- # @yield the block for the map iteration.
75
- # @return [Array] the resultant array from the map.
76
- # @see Array#map
77
- # @see https://github.com/grosser/parallel Parallel
78
- def threaded_map(threads = 2, &block)
79
- Parallel.map(self, {in_threads: threads}, &block)
80
- end
58
+ # Perform a threaded each iteration on a set of array items.
59
+ # @param threads [Integer] the maximum number of threads to spawn/
60
+ # @yield the block for the each iteration.
61
+ # @return [self]
62
+ # @see Array#each
63
+ # @see https://github.com/grosser/parallel Parallel
64
+ def threaded_each(threads = 2, &block)
65
+ Parallel.each(self, { in_threads: threads }, &block)
66
+ end
81
67
 
82
- # Fetches all the objects in the array even if they are not in a Pointer state.
83
- # @param lookup [Symbol] The methodology to use for HTTP requests. Use :parallel
84
- # to fetch all objects in parallel HTTP requests. Set to anything else to
85
- # perform requests serially.
86
- # @return [Array<Parse::Object>] an array of fetched Parse::Objects.
87
- # @see Array#fetch_objects
88
- def fetch_objects!(lookup = :parallel)
89
- # this gets all valid parse objects from the array
90
- items = valid_parse_objects
91
- lookup == :parallel ? items.threaded_each(2,&:fetch!) : items.each(&:fetch!)
92
- #self.replace items
93
- self #return for chaining.
94
- end
68
+ # Perform a threaded map operation on a set of array items.
69
+ # @param threads [Integer] the maximum number of threads to spawn
70
+ # @yield the block for the map iteration.
71
+ # @return [Array] the resultant array from the map.
72
+ # @see Array#map
73
+ # @see https://github.com/grosser/parallel Parallel
74
+ def threaded_map(threads = 2, &block)
75
+ Parallel.map(self, { in_threads: threads }, &block)
76
+ end
95
77
 
96
- # Fetches all the objects in the array that are in Pointer state.
97
- # @param lookup [Symbol] The methodology to use for HTTP requests. Use :parallel
98
- # to fetch all objects in parallel HTTP requests. Set to anything else to
99
- # perform requests serially.
100
- # @return [Array<Parse::Object>] an array of fetched Parse::Objects.
101
- # @see Array#fetch_objects!
102
- def fetch_objects(lookup = :parallel)
103
- items = valid_parse_objects
104
- lookup == :parallel ? items.threaded_each(2,&:fetch) : items.each(&:fetch)
105
- #self.replace items
106
- self
107
- end
78
+ # Fetches all the objects in the array even if they are not in a Pointer state.
79
+ # @param lookup [Symbol] The methodology to use for HTTP requests. Use :parallel
80
+ # to fetch all objects in parallel HTTP requests. Set to anything else to
81
+ # perform requests serially.
82
+ # @return [Array<Parse::Object>] an array of fetched Parse::Objects.
83
+ # @see Array#fetch_objects
84
+ def fetch_objects!(lookup = :parallel)
85
+ # this gets all valid parse objects from the array
86
+ items = valid_parse_objects
87
+ lookup == :parallel ? items.threaded_each(2, &:fetch!) : items.each(&:fetch!)
88
+ #self.replace items
89
+ self #return for chaining.
90
+ end
108
91
 
92
+ # Fetches all the objects in the array that are in Pointer state.
93
+ # @param lookup [Symbol] The methodology to use for HTTP requests. Use :parallel
94
+ # to fetch all objects in parallel HTTP requests. Set to anything else to
95
+ # perform requests serially.
96
+ # @return [Array<Parse::Object>] an array of fetched Parse::Objects.
97
+ # @see Array#fetch_objects!
98
+ def fetch_objects(lookup = :parallel)
99
+ items = valid_parse_objects
100
+ lookup == :parallel ? items.threaded_each(2, &:fetch) : items.each(&:fetch)
101
+ #self.replace items
102
+ self
103
+ end
109
104
  end