Class: ListenBrainz::Listen::Payload

Inherits:
Base
  • Object
show all
Defined in:
lib/listenbrainz/models/listen.rb

Overview

Model class for listen payloads.

These payloads contain the actual listens, as well as additional metadata for pagination.

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Base

#as_json

Instance Attribute Details

#latest_listen_tsTime? (readonly)

Returns:

  • (Time, nil)


72
# File 'lib/listenbrainz/models/listen.rb', line 72

attribute? :latest_listen_ts, Types::Timestamp

#listensArray<Listen> (readonly)

Returns:



85
# File 'lib/listenbrainz/models/listen.rb', line 85

attribute :listens, Types::Array.of(Listen)

#oldest_listen_tsTime? (readonly)

Returns:

  • (Time, nil)


76
# File 'lib/listenbrainz/models/listen.rb', line 76

attribute? :oldest_listen_ts, Types::Timestamp

#user_idString (readonly)

Returns:

  • (String)


80
# File 'lib/listenbrainz/models/listen.rb', line 80

attribute :user_id, Types::String

Instance Method Details

#newer(count = nil) ⇒ Payload

Retrieves newer listens.

Parameters:

  • count (Integer, nil) (defaults to: nil)

Returns:

  • (Payload)

    A new payload with newer listens



104
105
106
107
# File 'lib/listenbrainz/models/listen.rb', line 104

def newer(count = nil)
  after = listens.map(&:listened_at).max
  Listen.get(user_id, count:, after:)
end

#older(count = nil) ⇒ Payload

Retrieves older listens.

Parameters:

  • count (Integer, nil) (defaults to: nil)

Returns:

  • (Payload)

    A new payload with older listens



93
94
95
96
# File 'lib/listenbrainz/models/listen.rb', line 93

def older(count = nil)
  before = listens.map(&:listened_at).min
  Listen.get(user_id, count:, before:)
end