Class: Jabber::UserTune::Tune

Class | Jabber::UserTune::Tune
In: | lib/xmpp4r/tune/tune.rb
Parent: | XMPPElement

The <tune> XMPP element, as defined in XEP-0118 User Tune

See www.xmpp.org/extensions/xep-0118.html - this element encapsulates metadata (artist, track etc) about a tune the user is currently playing. These are expressed as child elements such as <artist>, <title> etc which are also managed by this class.

If the element has no children then it indicates that the user has stopped playing a tune. Use the Tune#playing? method to discover this?

### Methods

artist length new playing? rating source title track uri

### Public Class methods

new(artist = nil, title = nil, length = nil, track = nil, source = nil, uri = nil, rating = nil)

Construct a new <tune> element.

Supply no arguments to make an empty element to indicate that tune playing has stopped.

artist: | [String] the artist or performer of the song or piece
title: | [String] the title of the song or piece
length: | [Fixnum] the duration of the song or piece in seconds
track: | [String] a unique identifier for the tune; e.g., the track number within a collection or the specific URI for the object (e.g., a stream or audio file)
source: | [String] the collection (e.g., album) or other source (e.g., a band website that hosts streams or audio files)
uri: | [String] a URI or URL pointing to information about the song, collection, or artist
rating: | [Numeric] a number indicating how much you like this song - will be clamped into an integer 0 <= x <= 10

[Source]

        # File lib/xmpp4r/tune/tune.rb, line 40
    40:       def initialize(artist = nil, title = nil, length = nil, track = nil, source = nil, uri = nil, rating = nil)
    41:         super()
    42:
    43:         add_element(REXML::Element.new('artist')).text = artist if artist
    44:
    45:         add_element(REXML::Element.new('title')).text = title if title
    46:
    47:         add_element(REXML::Element.new('length')).text = length.to_s if length
    48:
    49:         add_element(REXML::Element.new('track')).text = track if track
    50:
    51:         add_element(REXML::Element.new('source')).text = source if source
    52:
    53:         add_element(REXML::Element.new('uri')).text = uri if uri
    54:
    55:         if rating and rating.kind_of?(Numeric)
    56:           r = rating.to_i
    57:           r = 0 if r < 0
    58:           r = 10 if r > 10
    59:           add_element(REXML::Element.new('rating')).text = r.to_s
    60:         end
    61:       end

### Public Instance methods

artist()

Get the artist for this tune.

[Source]

        # File lib/xmpp4r/tune/tune.rb, line 72
    72:       def artist
    73:         first_element('artist').text if first_element('artist')
    74:       end

length()

Get the length of this tune, in seconds.

[Source]

        # File lib/xmpp4r/tune/tune.rb, line 84
    84:       def length
    85:         first_element('length').text.to_i if first_element('length')
    86:       end

playing?()

Returns true if a tune is currently playing, otherwise false.

[Source]

        # File lib/xmpp4r/tune/tune.rb, line 66
    66:       def playing?
    67:         (elements.size > 0)
    68:       end

rating()

Get the rating for this track

[Source]

         # File lib/xmpp4r/tune/tune.rb, line 108
    108:       def rating
    109:         first_element('rating').text.to_i if first_element('rating')
    110:       end

source()

Get the source of this tune, such as an album.

[Source]

        # File lib/xmpp4r/tune/tune.rb, line 96
    96:       def source
    97:         first_element('source').text if first_element('source')
    98:       end

title()

Get the title of this tune.

[Source]

        # File lib/xmpp4r/tune/tune.rb, line 78
    78:       def title
    79:         first_element('title').text  if first_element('title')
    80:       end

track()

Get an identitier for this tune.

[Source]

        # File lib/xmpp4r/tune/tune.rb, line 90
    90:       def track
    91:         first_element('track').text if first_element('track')
    92:       end

uri()

Get a URI that represents this tune.

[Source]

         # File lib/xmpp4r/tune/tune.rb, line 102
    102:       def uri
    103:         first_element('uri').text if first_element('uri')
    104:       end

[Validate]