Class: Jabber::UserTune::Tune

Inherits:
XMPPElement show all
Defined in:
lib/xmpp4r/tune/tune.rb

Overview

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?

Instance Method Summary (collapse)

Methods inherited from XMPPElement

class_for_name_xmlns, #clone, force_xmlns, force_xmlns?, import, name_xmlns, name_xmlns_for_class, #parent=, #set_xml_lang, #typed_add, #xml_lang, #xml_lang=

Methods inherited from REXML::Element

#==, #delete_elements, #each_elements, #first_element, #first_element_content, #first_element_text, #import, import, #replace_element_content, #replace_element_text, #typed_add

Constructor Details

- (Tune) initialize(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



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/xmpp4r/tune/tune.rb', line 40

def initialize(artist = nil, title = nil, length = nil, track = nil, source = nil, uri = nil, rating = nil)
  super()

  add_element(REXML::Element.new('artist')).text = artist if artist

  add_element(REXML::Element.new('title')).text = title if title

  add_element(REXML::Element.new('length')).text = length.to_s if length

  add_element(REXML::Element.new('track')).text = track if track

  add_element(REXML::Element.new('source')).text = source if source

  add_element(REXML::Element.new('uri')).text = uri if uri

  if rating and rating.kind_of?(Numeric)
    r = rating.to_i
    r = 0 if r < 0
    r = 10 if r > 10
    add_element(REXML::Element.new('rating')).text = r.to_s
  end
end

Instance Method Details

- (Object) artist

Get the artist for this tune.



72
73
74
# File 'lib/xmpp4r/tune/tune.rb', line 72

def artist
  first_element('artist').text if first_element('artist')
end

- (Object) length

Get the length of this tune, in seconds.



84
85
86
# File 'lib/xmpp4r/tune/tune.rb', line 84

def length
  first_element('length').text.to_i if first_element('length')
end

- (Boolean) playing?

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

Returns:

  • (Boolean)


66
67
68
# File 'lib/xmpp4r/tune/tune.rb', line 66

def playing?
  (elements.size > 0)
end

- (Object) rating

Get the rating for this track



108
109
110
# File 'lib/xmpp4r/tune/tune.rb', line 108

def rating
  first_element('rating').text.to_i if first_element('rating')
end

- (Object) source

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



96
97
98
# File 'lib/xmpp4r/tune/tune.rb', line 96

def source
  first_element('source').text if first_element('source')
end

- (Object) title

Get the title of this tune.



78
79
80
# File 'lib/xmpp4r/tune/tune.rb', line 78

def title
  first_element('title').text  if first_element('title')
end

- (Object) track

Get an identitier for this tune.



90
91
92
# File 'lib/xmpp4r/tune/tune.rb', line 90

def track
  first_element('track').text if first_element('track')
end

- (Object) uri

Get a URI that represents this tune.



102
103
104
# File 'lib/xmpp4r/tune/tune.rb', line 102

def uri
  first_element('uri').text if first_element('uri')
end