Class: Jabber::Message
- Inherits:
-
XMPPStanza
- Object
- REXML::Element
- XMPPElement
- XMPPStanza
- Jabber::Message
- Includes:
- XParent
- Defined in:
- lib/xmpp4r/message.rb
Overview
The Message class manages the <message/> stanzas, which is used for all messaging communication.
Constant Summary
- CHAT_STATES =
%w(active composing gone inactive paused).freeze
Instance Method Summary (collapse)
-
- (Object) body
Returns the message's body, or nil.
-
- (Object) body=(b)
Sets the message's body.
-
- (Object) chat_state
Returns the current chat state, or nil if no chat state is set.
-
- (Object) chat_state=(s)
Sets the chat state :active, :composing, :gone, :inactive, :paused.
-
- (Message) initialize(to = nil, body = nil)
constructor
Create a new message
>to
a JID or a String object to send the message to.
-
- (Object) set_body(b)
Sets the message's body.
-
- (Object) set_chat_state(s)
Sets the message's chat state.
-
- (Object) set_subject(s)
sets the message's subject.
-
- (Object) set_thread(s)
gets the message's thread (chaining-friendly) Please note that this are not [Thread] but a [String]-Identifier to track conversations
s
- String
-
thread to set.
-
- (Object) set_type(v)
Set the type of the Message stanza (chaining-friendly)
v
- Symbol
-
or nil.
-
- (Object) set_xhtml_body(b)
Sets the message's xhtml body.
-
- (Object) subject
Returns the message's subject, or nil.
-
- (Object) subject=(s)
sets the message's subject.
-
- (Object) thread
Returns the message's thread, or nil.
-
- (Object) thread=(s)
sets the message's thread
s
- String
-
thread to set.
-
- (Object) type
Get the type of the Message stanza.
-
- (Object) type=(v)
Set the type of the Message stanza (see Message#type for details)
v
- Symbol
-
or nil.
-
- (Object) xhtml_body
Returns the message's xhtml body, or nil.
-
- (Object) xhtml_body=(b)
Sets the message's xhtml body.
Methods included from XParent
Methods inherited from XMPPStanza
answer, #answer, #error, #from, #from=, #id, #id=, #normalize, #set_from, #set_id, #set_to, #to, #to=
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
- (Message) initialize(to = nil, body = nil)
Create a new message
>to |
a JID or a String object to send the message to. |
>body |
the message's body |
25 26 27 28 29 30 31 32 33 |
# File 'lib/xmpp4r/message.rb', line 25 def initialize(to = nil, body = nil) super() if not to.nil? set_to(to) end if !body.nil? add_element(REXML::Element.new("body").add_text(body)) end end |
Instance Method Details
- (Object) body
Returns the message's body, or nil. This is the message's plain-text content.
81 82 83 |
# File 'lib/xmpp4r/message.rb', line 81 def body first_element_text('body') end |
- (Object) body=(b)
Sets the message's body
b |
|
89 90 91 |
# File 'lib/xmpp4r/message.rb', line 89 def body=(b) replace_element_text('body', b) end |
- (Object) chat_state
Returns the current chat state, or nil if no chat state is set
198 199 200 201 |
# File 'lib/xmpp4r/message.rb', line 198 def chat_state each_elements(*CHAT_STATES) { |el| return el.name.to_sym } return nil end |
- (Object) chat_state=(s)
Sets the chat state :active, :composing, :gone, :inactive, :paused
205 206 207 208 209 210 |
# File 'lib/xmpp4r/message.rb', line 205 def chat_state=(s) s = s.to_s raise InvalidChatState, "Chat state must be one of #{CHAT_STATES.join(', ')}" unless CHAT_STATES.include?(s) CHAT_STATES.each { |state| delete_elements(state) } add_element(REXML::Element.new(s).add_namespace('http://jabber.org/protocol/chatstates')) end |
- (Object) set_body(b)
Sets the message's body
b |
|
return |
|
98 99 100 101 |
# File 'lib/xmpp4r/message.rb', line 98 def set_body(b) self.body = b self end |
- (Object) set_chat_state(s)
Sets the message's chat state
214 215 216 217 |
# File 'lib/xmpp4r/message.rb', line 214 def set_chat_state(s) self.state = s self end |
- (Object) set_subject(s)
sets the message's subject
s |
|
return |
|
162 163 164 165 |
# File 'lib/xmpp4r/message.rb', line 162 def set_subject(s) self.subject = s self end |
- (Object) set_thread(s)
gets the message's thread (chaining-friendly) Please note that this are not [Thread] but a [String]-Identifier to track conversations
s |
|
185 186 187 188 |
# File 'lib/xmpp4r/message.rb', line 185 def set_thread(s) self.thread = s self end |
- (Object) set_type(v)
Set the type of the Message stanza (chaining-friendly)
v |
|
73 74 75 76 |
# File 'lib/xmpp4r/message.rb', line 73 def set_type(v) self.type = v self end |
- (Object) set_xhtml_body(b)
Sets the message's xhtml body
b |
|
return |
|
144 145 146 147 |
# File 'lib/xmpp4r/message.rb', line 144 def set_xhtml_body(b) self.xhtml_body = b self end |
- (Object) subject
Returns the message's subject, or nil
169 170 171 |
# File 'lib/xmpp4r/message.rb', line 169 def subject first_element_text('subject') end |
- (Object) subject=(s)
sets the message's subject
s |
|
153 154 155 |
# File 'lib/xmpp4r/message.rb', line 153 def subject=(s) replace_element_text('subject', s) end |
- (Object) thread
Returns the message's thread, or nil
192 193 194 |
# File 'lib/xmpp4r/message.rb', line 192 def thread first_element_text('thread') end |
- (Object) thread=(s)
sets the message's thread
s |
|
176 177 178 179 |
# File 'lib/xmpp4r/message.rb', line 176 def thread=(s) delete_elements('thread') replace_element_text('thread', s) unless s.nil? end |
- (Object) type
Get the type of the Message stanza
The following Symbols are allowed:
-
:chat
-
:error
-
:groupchat
-
:headline
-
:normal
result |
|
45 46 47 48 49 50 51 52 53 54 |
# File 'lib/xmpp4r/message.rb', line 45 def type case super when 'chat' then :chat when 'error' then :error when 'groupchat' then :groupchat when 'headline' then :headline when 'normal' then :normal else nil end end |
- (Object) type=(v)
Set the type of the Message stanza (see Message#type for details)
v |
|
59 60 61 62 63 64 65 66 67 68 |
# File 'lib/xmpp4r/message.rb', line 59 def type=(v) case v when :chat then super('chat') when :error then super('error') when :groupchat then super('groupchat') when :headline then super('headline') when :normal then super('normal') else super(nil) end end |
- (Object) xhtml_body
Returns the message's xhtml body, or nil. This is the message's xhtml-text content.
106 107 108 109 110 111 112 113 114 |
# File 'lib/xmpp4r/message.rb', line 106 def xhtml_body html = first_element('html', 'http://jabber.org/protocol/xhtml-im') if html html.first_element_content('body', 'http://www.w3.org/1999/xhtml') else first_element_content('body', 'http://www.w3.org/1999/xhtml') end end |
- (Object) xhtml_body=(b)
Sets the message's xhtml body
b |
|
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
# File 'lib/xmpp4r/message.rb', line 120 def xhtml_body=(b) begin b = REXML::Document.new("<root>#{b}</root>") rescue REXML::ParseException raise ArgumentError, "Body is not a valid xhtml. Have you forgot to close some tag?" end html = first_element('html', 'http://jabber.org/protocol/xhtml-im') if html html.replace_element_content('body', b, 'http://www.w3.org/1999/xhtml') else el = REXML::Element.new('html') el.add_namespace('http://jabber.org/protocol/xhtml-im') el.replace_element_content('body', b, 'http://www.w3.org/1999/xhtml') add_element(el) end end |