superfeedr-blather 0.1.1 → 0.2.1
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.
- data/Gemfile +1 -3
- data/Gemfile.lock +3 -3
- data/README +7 -0
- data/VERSION +1 -1
- data/examples/sub_unsub.rb +24 -12
- data/lib/blather/subscriptions.rb +3 -5
- data/lib/superfeedr/superfeedr.rb +3 -10
- data/lib/superfeedr-blather.rb +7 -2
- data/spec/stanza/subscriptions_spec.rb +4 -13
- data/superfeedr-blather.gemspec +6 -23
- metadata +5 -95
data/Gemfile
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
2
|
|
3
|
-
gem 'blather', "~> 0.4.14"
|
4
|
-
|
5
3
|
group :development do
|
6
4
|
gem "jeweler", "~> 1.5.2"
|
7
5
|
gem "yard", "~> 0.6.0"
|
@@ -13,4 +11,4 @@ group :test do
|
|
13
11
|
gem 'autotest-notification', :require => 'autotest_notification'
|
14
12
|
end
|
15
13
|
|
16
|
-
gemspec
|
14
|
+
gemspec
|
data/Gemfile.lock
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
superfeedr-blather (0.
|
5
|
-
blather (~> 0.4
|
4
|
+
superfeedr-blather (0.2.1)
|
5
|
+
blather (~> 0.4)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: http://rubygems.org/
|
@@ -40,7 +40,7 @@ PLATFORMS
|
|
40
40
|
DEPENDENCIES
|
41
41
|
autotest
|
42
42
|
autotest-notification
|
43
|
-
blather (~> 0.4
|
43
|
+
blather (~> 0.4)
|
44
44
|
jeweler (~> 1.5.2)
|
45
45
|
rspec
|
46
46
|
superfeedr-blather!
|
data/README
CHANGED
@@ -37,6 +37,12 @@ new notification on demand ("show console" displays the button).
|
|
37
37
|
|
38
38
|
== Install
|
39
39
|
|
40
|
+
Rubygems:
|
41
|
+
|
42
|
+
gem install superfeedr-blather
|
43
|
+
|
44
|
+
From source:
|
45
|
+
|
40
46
|
git clone git://github.com/kapoq/superfeedr-blather.git
|
41
47
|
|
42
48
|
== Source and latest version
|
@@ -55,6 +61,7 @@ Dave Nolan / Kapoq Ltd / kapoq.com[http://kapoq.com]
|
|
55
61
|
* apply patches upstream to blather
|
56
62
|
* loading filename conflicts using bundler
|
57
63
|
* multiple namespaces
|
64
|
+
* append to existing handlers (e.g. DaemonKit::XMPP stomps over client#when_ready)
|
58
65
|
|
59
66
|
* improve type-casting
|
60
67
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.1
|
data/examples/sub_unsub.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__)) + '/../lib/superfeedr-blather'
|
2
2
|
require 'blather/client'
|
3
3
|
|
4
|
-
setup YOUR_SUPERFEEDR_USERNAME, YOUR_SUPERFEEDR_PASSWORD
|
4
|
+
# setup YOUR_SUPERFEEDR_USERNAME, YOUR_SUPERFEEDR_PASSWORD
|
5
|
+
|
6
|
+
DUMMY = "http://superfeedr.com/dummy.xml"
|
5
7
|
|
6
8
|
when_ready do
|
7
9
|
Blather.logger.info "Connected..."
|
@@ -12,30 +14,40 @@ when_ready do
|
|
12
14
|
write_to_stream Blather::Stanza::PubSub::Subscriptions.new(:get, :id => "subman1", :from => jid, :to => "firehoser.superfeedr.com")
|
13
15
|
}
|
14
16
|
|
15
|
-
EM.add_timer(
|
17
|
+
EM.add_timer(3) {
|
16
18
|
Blather.logger.info "unsubscribing from dummy"
|
17
|
-
write_to_stream Blather::Stanza::PubSub::Unsubscribe.new
|
19
|
+
write_to_stream Blather::Stanza::PubSub::Unsubscribe.new(:set, "firehoser.superfeedr.com", DUMMY, jid)
|
18
20
|
}
|
19
21
|
|
20
|
-
EM.add_timer(
|
22
|
+
EM.add_timer(5) {
|
21
23
|
write_to_stream Blather::Stanza::PubSub::Subscriptions.new(:get, :id => "subman1", :from => jid, :to => "firehoser.superfeedr.com")
|
22
24
|
}
|
23
25
|
|
24
|
-
EM.add_timer(
|
26
|
+
EM.add_timer(7) {
|
25
27
|
Blather.logger.info "re-subscribing to dummy"
|
26
|
-
write_to_stream Blather::Stanza::PubSub::Subscribe.new
|
28
|
+
write_to_stream Blather::Stanza::PubSub::Subscribe.new(:set, "firehoser.superfeedr.com", DUMMY, jid)
|
27
29
|
}
|
28
30
|
|
29
|
-
EM.add_timer(
|
31
|
+
EM.add_timer(9) {
|
30
32
|
write_to_stream Blather::Stanza::PubSub::Subscriptions.new(:get, :id => "subman1", :from => jid, :to => "firehoser.superfeedr.com")
|
33
|
+
EM.stop
|
31
34
|
}
|
32
35
|
end
|
33
36
|
|
37
|
+
# Subscription requests receive a stanza with the subscription
|
38
|
+
# status. Helpful.
|
39
|
+
pubsub_subscription :node => DUMMY do |sub|
|
40
|
+
Blather.logger.info "#{sub.node} is #{sub.subscription}"
|
41
|
+
end
|
42
|
+
|
43
|
+
# Unsubscription requests just receive iq reply...
|
44
|
+
iq :result?, :id => /^#{Blather::Stanza::PubSub::Unsubscribe::PREFIX}_/ do |iq|
|
45
|
+
Blather.logger.info "Reply: unsubscription request for #{iq.id.split(/_/).last} received OK"
|
46
|
+
end
|
47
|
+
|
48
|
+
# ...but we can always check the list of subscriptions
|
34
49
|
pubsub_subscriptions do |subs|
|
35
|
-
|
36
|
-
Blather.logger.info "
|
37
|
-
else
|
38
|
-
Blather.logger.info "not subscribed to dummy.xml"
|
50
|
+
unless subs.subscribed.include?(DUMMY)
|
51
|
+
Blather.logger.info "#{DUMMY} is unsubscribed"
|
39
52
|
end
|
40
53
|
end
|
41
|
-
|
@@ -25,11 +25,9 @@ module Blather
|
|
25
25
|
aff
|
26
26
|
end
|
27
27
|
|
28
|
-
def
|
29
|
-
|
30
|
-
|
31
|
-
end
|
32
|
-
end
|
28
|
+
def subscribed
|
29
|
+
(list[:subscribed] || []).map { |h| h[:node] }
|
30
|
+
end
|
33
31
|
end
|
34
32
|
end
|
35
33
|
end
|
@@ -1,4 +1,7 @@
|
|
1
1
|
module Superfeedr
|
2
|
+
FIREHOSER = "firehoser.superfeedr.com"
|
3
|
+
MAX_SIMULTANEOUS_SUBSCRIPTION_REQUESTS = 30
|
4
|
+
|
2
5
|
class Node
|
3
6
|
def initialize(node)
|
4
7
|
@node = node
|
@@ -197,14 +200,4 @@ module Superfeedr
|
|
197
200
|
@point ||= (raw || []) && raw.split(",")
|
198
201
|
end
|
199
202
|
end
|
200
|
-
|
201
|
-
class Subscription < Node
|
202
|
-
def subscription_state
|
203
|
-
content_from("@subscription")
|
204
|
-
end
|
205
|
-
|
206
|
-
def node_url
|
207
|
-
content_from("@node")
|
208
|
-
end
|
209
|
-
end
|
210
203
|
end
|
data/lib/superfeedr-blather.rb
CHANGED
@@ -3,5 +3,10 @@ require 'bundler/setup'
|
|
3
3
|
|
4
4
|
require 'blather'
|
5
5
|
|
6
|
-
%w(namespaces pubsub event subscriptions).each { |f|
|
7
|
-
|
6
|
+
%w(namespaces pubsub event subscriptions unsubscribe).each { |f|
|
7
|
+
require File.join(File.expand_path(File.dirname(__FILE__)), "blather", f)
|
8
|
+
}
|
9
|
+
|
10
|
+
%w(superfeedr).each { |f|
|
11
|
+
require File.join(File.expand_path(File.dirname(__FILE__)), "superfeedr", f)
|
12
|
+
}
|
@@ -4,19 +4,10 @@ describe "list of resources/subscriptions" do
|
|
4
4
|
let(:stanza) { @stanza ||= open(File.expand_path(File.dirname(__FILE__) + '/../fixtures/resource_list.xml')) }
|
5
5
|
let(:node) { @node ||= Blather::XMPPNode.import(Nokogiri::XML.parse(stanza).root) }
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
end
|
12
|
-
|
13
|
-
describe Superfeedr::Subscription do
|
14
|
-
let(:sub) { node.list.first }
|
15
|
-
|
16
|
-
it "finds subscription state" do
|
17
|
-
sub.subscription_state.should == "subscribed"
|
18
|
-
end
|
19
|
-
end
|
7
|
+
it "finds all subscribed nodes" do
|
8
|
+
node.subscribed.should have(2).items
|
9
|
+
node.subscribed.should include("http://superfeedr.com/dummy.xml")
|
10
|
+
end
|
20
11
|
end
|
21
12
|
|
22
13
|
describe "requesting list of resources/subscriptions" do
|
data/superfeedr-blather.gemspec
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
1
2
|
# Generated by jeweler
|
2
3
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
4
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
@@ -5,11 +6,11 @@
|
|
5
6
|
|
6
7
|
Gem::Specification.new do |s|
|
7
8
|
s.name = %q{superfeedr-blather}
|
8
|
-
s.version = "0.
|
9
|
+
s.version = "0.2.1"
|
9
10
|
|
10
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
12
|
s.authors = ["dave@kapoq.com"]
|
12
|
-
s.date = %q{2011-01-
|
13
|
+
s.date = %q{2011-01-05}
|
13
14
|
s.description = %q{You get some patches for Blather and some classes that wrap the stuff you want from Superfeedr (entries, authors etc.). Under-the-hood, Blather uses EventMachine and Nokogiri so it’s fast and convenient. If you want to daemonize your client, daemon-kit comes ready with a blather template.}
|
14
15
|
s.email = %q{dave@kapoq.com}
|
15
16
|
s.extra_rdoc_files = [
|
@@ -62,30 +63,12 @@ Gem::Specification.new do |s|
|
|
62
63
|
s.specification_version = 3
|
63
64
|
|
64
65
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
65
|
-
s.add_runtime_dependency(%q<blather>, ["~> 0.4
|
66
|
-
s.add_runtime_dependency(%q<superfeedr-blather>, [">= 0"])
|
67
|
-
s.add_runtime_dependency(%q<blather>, ["~> 0.4.14"])
|
68
|
-
s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
|
69
|
-
s.add_development_dependency(%q<yard>, ["~> 0.6.0"])
|
70
|
-
s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
|
71
|
-
s.add_development_dependency(%q<yard>, ["~> 0.6.0"])
|
66
|
+
s.add_runtime_dependency(%q<blather>, ["~> 0.4"])
|
72
67
|
else
|
73
|
-
s.add_dependency(%q<blather>, ["~> 0.4
|
74
|
-
s.add_dependency(%q<superfeedr-blather>, [">= 0"])
|
75
|
-
s.add_dependency(%q<blather>, ["~> 0.4.14"])
|
76
|
-
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
77
|
-
s.add_dependency(%q<yard>, ["~> 0.6.0"])
|
78
|
-
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
79
|
-
s.add_dependency(%q<yard>, ["~> 0.6.0"])
|
68
|
+
s.add_dependency(%q<blather>, ["~> 0.4"])
|
80
69
|
end
|
81
70
|
else
|
82
|
-
s.add_dependency(%q<blather>, ["~> 0.4
|
83
|
-
s.add_dependency(%q<superfeedr-blather>, [">= 0"])
|
84
|
-
s.add_dependency(%q<blather>, ["~> 0.4.14"])
|
85
|
-
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
86
|
-
s.add_dependency(%q<yard>, ["~> 0.6.0"])
|
87
|
-
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
88
|
-
s.add_dependency(%q<yard>, ["~> 0.6.0"])
|
71
|
+
s.add_dependency(%q<blather>, ["~> 0.4"])
|
89
72
|
end
|
90
73
|
end
|
91
74
|
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
+
- 2
|
7
8
|
- 1
|
8
|
-
|
9
|
-
version: 0.1.1
|
9
|
+
version: 0.2.1
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- dave@kapoq.com
|
@@ -14,11 +14,12 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-01-
|
17
|
+
date: 2011-01-05 00:00:00 +01:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: blather
|
22
|
+
prerelease: false
|
22
23
|
requirement: &id001 !ruby/object:Gem::Requirement
|
23
24
|
none: false
|
24
25
|
requirements:
|
@@ -27,99 +28,9 @@ dependencies:
|
|
27
28
|
segments:
|
28
29
|
- 0
|
29
30
|
- 4
|
30
|
-
|
31
|
-
version: 0.4.14
|
31
|
+
version: "0.4"
|
32
32
|
type: :runtime
|
33
|
-
prerelease: false
|
34
33
|
version_requirements: *id001
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
name: superfeedr-blather
|
37
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
-
none: false
|
39
|
-
requirements:
|
40
|
-
- - ">="
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
segments:
|
43
|
-
- 0
|
44
|
-
version: "0"
|
45
|
-
type: :runtime
|
46
|
-
prerelease: false
|
47
|
-
version_requirements: *id002
|
48
|
-
- !ruby/object:Gem::Dependency
|
49
|
-
name: blather
|
50
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
51
|
-
none: false
|
52
|
-
requirements:
|
53
|
-
- - ~>
|
54
|
-
- !ruby/object:Gem::Version
|
55
|
-
segments:
|
56
|
-
- 0
|
57
|
-
- 4
|
58
|
-
- 14
|
59
|
-
version: 0.4.14
|
60
|
-
type: :runtime
|
61
|
-
prerelease: false
|
62
|
-
version_requirements: *id003
|
63
|
-
- !ruby/object:Gem::Dependency
|
64
|
-
name: jeweler
|
65
|
-
requirement: &id004 !ruby/object:Gem::Requirement
|
66
|
-
none: false
|
67
|
-
requirements:
|
68
|
-
- - ~>
|
69
|
-
- !ruby/object:Gem::Version
|
70
|
-
segments:
|
71
|
-
- 1
|
72
|
-
- 5
|
73
|
-
- 2
|
74
|
-
version: 1.5.2
|
75
|
-
type: :development
|
76
|
-
prerelease: false
|
77
|
-
version_requirements: *id004
|
78
|
-
- !ruby/object:Gem::Dependency
|
79
|
-
name: yard
|
80
|
-
requirement: &id005 !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
|
-
requirements:
|
83
|
-
- - ~>
|
84
|
-
- !ruby/object:Gem::Version
|
85
|
-
segments:
|
86
|
-
- 0
|
87
|
-
- 6
|
88
|
-
- 0
|
89
|
-
version: 0.6.0
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: *id005
|
93
|
-
- !ruby/object:Gem::Dependency
|
94
|
-
name: jeweler
|
95
|
-
requirement: &id006 !ruby/object:Gem::Requirement
|
96
|
-
none: false
|
97
|
-
requirements:
|
98
|
-
- - ~>
|
99
|
-
- !ruby/object:Gem::Version
|
100
|
-
segments:
|
101
|
-
- 1
|
102
|
-
- 5
|
103
|
-
- 2
|
104
|
-
version: 1.5.2
|
105
|
-
type: :development
|
106
|
-
prerelease: false
|
107
|
-
version_requirements: *id006
|
108
|
-
- !ruby/object:Gem::Dependency
|
109
|
-
name: yard
|
110
|
-
requirement: &id007 !ruby/object:Gem::Requirement
|
111
|
-
none: false
|
112
|
-
requirements:
|
113
|
-
- - ~>
|
114
|
-
- !ruby/object:Gem::Version
|
115
|
-
segments:
|
116
|
-
- 0
|
117
|
-
- 6
|
118
|
-
- 0
|
119
|
-
version: 0.6.0
|
120
|
-
type: :development
|
121
|
-
prerelease: false
|
122
|
-
version_requirements: *id007
|
123
34
|
description: "You get some patches for Blather and some classes that wrap the stuff you want from Superfeedr (entries, authors etc.). Under-the-hood, Blather uses EventMachine and Nokogiri so it\xE2\x80\x99s fast and convenient. If you want to daemonize your client, daemon-kit comes ready with a blather template."
|
124
35
|
email: dave@kapoq.com
|
125
36
|
executables: []
|
@@ -169,7 +80,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
169
80
|
requirements:
|
170
81
|
- - ">="
|
171
82
|
- !ruby/object:Gem::Version
|
172
|
-
hash: 3412587347389494585
|
173
83
|
segments:
|
174
84
|
- 0
|
175
85
|
version: "0"
|