Class: Craigslist::API::ResultSet

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/craigslist/api/result_set.rb

Overview

Every Result from one bulk submission, plus the upload id Craigslist assigns to the batch.

Enumerable, so it behaves like the array of results it wraps while still answering the questions you actually have after a submission.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(results:, upload_id: nil, raw: nil) ⇒ ResultSet

Returns a new instance of ResultSet.



29
30
31
32
33
34
35
# File 'lib/craigslist/api/result_set.rb', line 29

def initialize(results:, upload_id: nil, raw: nil)
  @results = Array(results).freeze
  @upload_id = upload_id
  @raw = raw
  @index = @results.each_with_object({}) { |r, memo| memo[r.key] = r }.freeze
  freeze
end

Instance Attribute Details

#rawString? (readonly)

The unparsed response body.

Kept because a NOT_VALID with no explanation is otherwise a dead end, and reaching the raw XML should not require rebuilding the request by hand.

Returns:

  • (String, nil)


27
28
29
# File 'lib/craigslist/api/result_set.rb', line 27

def raw
  @raw
end

#resultsArray<Result> (readonly)

Returns:



14
15
16
# File 'lib/craigslist/api/result_set.rb', line 14

def results
  @results
end

#upload_idString? (readonly)

Returns craigslist's identifier for this submission, taken from the channel description. Present in post mode.

Returns:

  • (String, nil)

    craigslist's identifier for this submission, taken from the channel description. Present in post mode.



18
19
20
# File 'lib/craigslist/api/result_set.rb', line 18

def upload_id
  @upload_id
end

Instance Method Details

#[](key) ⇒ Result?

Parameters:

  • key (String)

    the key supplied when building the posting

Returns:



45
46
47
# File 'lib/craigslist/api/result_set.rb', line 45

def [](key)
  @index[key.to_s]
end

#all_successful?Boolean

Returns whether every posting succeeded.

Returns:

  • (Boolean)

    whether every posting succeeded



66
67
68
# File 'lib/craigslist/api/result_set.rb', line 66

def all_successful?
  failed.empty?
end

#any_failures?Boolean

Returns:

  • (Boolean)


71
72
73
# File 'lib/craigslist/api/result_set.rb', line 71

def any_failures?
  !failed.empty?
end

#each {|result| ... } ⇒ Enumerator, ResultSet

Yield Parameters:

Returns:



39
40
41
# File 'lib/craigslist/api/result_set.rb', line 39

def each(&block)
  results.each(&block)
end

#empty?Boolean

Returns:

  • (Boolean)


86
87
88
# File 'lib/craigslist/api/result_set.rb', line 86

def empty?
  results.empty?
end

#failedArray<Result>

Returns:



55
56
57
# File 'lib/craigslist/api/result_set.rb', line 55

def failed
  select(&:failure?)
end

#inspectObject



90
91
92
93
# File 'lib/craigslist/api/result_set.rb', line 90

def inspect
  "#<#{self.class.name} size=#{size} successful=#{successful.size} " \
    "failed=#{failed.size} upload_id=#{upload_id.inspect}>"
end

#posting_idsArray<String>

Returns ids of postings that were created.

Returns:

  • (Array<String>)

    ids of postings that were created



76
77
78
# File 'lib/craigslist/api/result_set.rb', line 76

def posting_ids
  select(&:posted?).map(&:posting_id).compact
end

#sizeInteger Also known as: length

Returns number of results in the batch.

Returns:

  • (Integer)

    number of results in the batch



81
82
83
# File 'lib/craigslist/api/result_set.rb', line 81

def size
  results.size
end

#successfulArray<Result>

Returns:



50
51
52
# File 'lib/craigslist/api/result_set.rb', line 50

def successful
  select(&:success?)
end

#warnedArray<Result>

Returns results carrying non-fatal warnings, which are easy to miss because they can accompany a success.

Returns:

  • (Array<Result>)

    results carrying non-fatal warnings, which are easy to miss because they can accompany a success



61
62
63
# File 'lib/craigslist/api/result_set.rb', line 61

def warned
  select(&:warnings?)
end