omf_common 6.0.0.pre.2 → 6.0.0.pre.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,34 @@
1
+ module Blather
2
+ class Stream
3
+ # @private
4
+ class Features
5
+ def next!
6
+ @idx = @idx ? @idx+1 : 0
7
+ if stanza = @features.children[@idx]
8
+ if stanza.namespaces['xmlns'] && (klass = self.class.from_namespace(stanza.namespaces['xmlns']))
9
+ @feature = klass.new(
10
+ @stream,
11
+ proc {
12
+ if (klass == Blather::Stream::Register && @features && !@features.children.find { |v| v.element_name == "mechanisms" }.nil?)
13
+ stanza = @features.children.find { |v| v.element_name == "mechanisms" }
14
+ @idx = @features.children.index(stanza)
15
+ klass = self.class.from_namespace(stanza.namespaces['xmlns'])
16
+ @feature = klass.new @stream, proc { next! }, @fail
17
+ @feature.receive_data stanza
18
+ else
19
+ next!
20
+ end
21
+ },
22
+ (klass == Blather::Stream::SASL && @features && !@features.children.find { |v| v.element_name == "register" }.nil?) ? proc { next! } : @fail
23
+ )
24
+ @feature.receive_data stanza
25
+ else
26
+ next!
27
+ end
28
+ else
29
+ succeed!
30
+ end
31
+ end
32
+ end
33
+ end #Stream
34
+ end #Blather
@@ -0,0 +1,40 @@
1
+ module Blather
2
+ class Stream
3
+ class Register < Features
4
+ REGISTER_NS = "http://jabber.org/features/iq-register".freeze
5
+
6
+ register REGISTER_NS
7
+
8
+ def initialize(stream, succeed, fail)
9
+ super
10
+ @jid = @stream.jid
11
+ @pass = @stream.password
12
+ end
13
+
14
+ def receive_data(stanza)
15
+ error_node = stanza.xpath('//error').first
16
+
17
+ if error_node
18
+ fail!(error_node)
19
+ elsif stanza['type'] == 'result' && (stanza.content.empty? || !stanza.children.find { |v| v.element_name == "query" }.nil?)
20
+ succeed!
21
+ else
22
+ @stream.send register_node
23
+ end
24
+ end
25
+
26
+ def register_node
27
+ node = Blather::Stanza::Iq::Query.new(:set)
28
+ query_node = node.xpath('//query').first
29
+ query_node['xmlns'] = 'jabber:iq:register'
30
+ username_node = Nokogiri::XML::Node.new('username', node)
31
+ username_node.content = @jid.node
32
+ password_node = Nokogiri::XML::Node.new('password', node)
33
+ password_node.content = @pass
34
+ query_node.add_child(username_node)
35
+ query_node.add_child(password_node)
36
+ node
37
+ end
38
+ end
39
+ end
40
+ end
@@ -1,7 +1,8 @@
1
1
  require 'blather/client/dsl'
2
2
  require 'omf_common/core_ext/blather/dsl'
3
3
  require 'omf_common/core_ext/blather/dsl/pubsub'
4
- require 'omf_common/core_ext/blather/stanza/registration'
4
+ require 'omf_common/core_ext/blather/stream/features'
5
+ require 'omf_common/core_ext/blather/stream/features/register'
5
6
 
6
7
  module OmfCommon
7
8
  module DSL
@@ -1,4 +1,4 @@
1
1
  module OmfCommon
2
- VERSION = "6.0.0.pre.2"
2
+ VERSION = "6.0.0.pre.3"
3
3
  PROTOCOL_VERSION = "6.0"
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omf_common
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.0.0.pre.2
4
+ version: 6.0.0.pre.3
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-29 00:00:00.000000000 Z
12
+ date: 2012-06-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: minitest
@@ -91,7 +91,8 @@ files:
91
91
  - lib/omf_common/command.rb
92
92
  - lib/omf_common/core_ext/blather/dsl.rb
93
93
  - lib/omf_common/core_ext/blather/dsl/pubsub.rb
94
- - lib/omf_common/core_ext/blather/stanza/registration.rb
94
+ - lib/omf_common/core_ext/blather/stream/features.rb
95
+ - lib/omf_common/core_ext/blather/stream/features/register.rb
95
96
  - lib/omf_common/core_ext/string.rb
96
97
  - lib/omf_common/dsl/xmpp_blather.rb
97
98
  - lib/omf_common/message.rb
@@ -1,18 +0,0 @@
1
- require 'blather/stanza/iq'
2
-
3
- module Blather
4
- class Stanza
5
- class Registration < Iq
6
- def self.new(username, password)
7
- node = super :set
8
- Nokogiri::XML::Builder.with(node) do |xml|
9
- xml.query('xmlns' => 'jabber:iq:register') do
10
- xml.username username
11
- xml.password password
12
- end
13
- end
14
- node
15
- end
16
- end
17
- end
18
- end