rack-superfeedr 0.0.4 → 0.0.5
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/VERSION +1 -1
- data/examples/sinatra_app.rb +1 -1
- data/lib/rack-superfeedr.rb +28 -22
- data/rack-superfeedr.gemspec +8 -8
- metadata +24 -26
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.5
|
data/examples/sinatra_app.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'sinatra'
|
2
2
|
require 'rack-superfeedr'
|
3
3
|
|
4
|
-
use Rack::Superfeedr, { :host => "
|
4
|
+
use Rack::Superfeedr, { :host => "1pqz.showoff.io", :login => "demo", :password => "demo", :format => "json", :async => false } do |superfeedr|
|
5
5
|
set :superfeedr, superfeedr # so that we can use `settings.superfeedr` to access the superfeedr object in our application.
|
6
6
|
|
7
7
|
superfeedr.on_notification do |notification|
|
data/lib/rack-superfeedr.rb
CHANGED
@@ -9,32 +9,35 @@ module Rack
|
|
9
9
|
# using the PubSubHubbub API.
|
10
10
|
class Superfeedr
|
11
11
|
|
12
|
-
SUPERFEEDR_ENDPOINT = "
|
12
|
+
SUPERFEEDR_ENDPOINT = "https://superfeedr.com/hubbub"
|
13
13
|
|
14
14
|
##
|
15
15
|
# Subscribe you to a url. id is optional, but recommanded has a unique identifier for this url. It will be used to help you identify which feed
|
16
16
|
# is concerned by a notification.
|
17
17
|
# The optional block will be called to let you confirm the subscription (or not).
|
18
|
-
# It returns true if the subscription was successful (or will be confirmed if you used async => true in the options), false otherwise
|
19
|
-
|
18
|
+
# It returns true if the subscription was successful (or will be confirmed if you used async => true in the options), false otherwise.
|
19
|
+
# You can also pass an opts third argument that will be merged with the options used in Typhoeus's Request (https://github.com/dbalatero/typhoeus)
|
20
|
+
# A useful option is :verbose => true for example.
|
21
|
+
def subscribe(url, id = nil, opts = {}, &block)
|
20
22
|
feed_id = "#{id ? id : Base64.urlsafe_encode64(url)}"
|
21
23
|
if block
|
22
24
|
@verifications[feed_id] ||= {}
|
23
25
|
@verifications[feed_id]['subscribe'] = block
|
24
26
|
end
|
25
27
|
response = Typhoeus::Request.post(SUPERFEEDR_ENDPOINT,
|
26
|
-
|
27
|
-
:
|
28
|
-
|
29
|
-
|
30
|
-
|
28
|
+
opts.merge({
|
29
|
+
:params => {
|
30
|
+
:'hub.mode' => 'subscribe',
|
31
|
+
:'hub.verify' => @params[:async] ? 'async' : 'sync',
|
32
|
+
:'hub.topic' => url,
|
33
|
+
:'hub.callback' => generate_callback(url, feed_id)
|
31
34
|
},
|
32
|
-
|
33
|
-
|
35
|
+
:headers => {
|
36
|
+
:Accept => @params[:format] == "json" ? "application/json" : "application/atom+xml"
|
34
37
|
},
|
35
|
-
|
36
|
-
|
37
|
-
)
|
38
|
+
:username => @params[:login],
|
39
|
+
:password => @params[:password]
|
40
|
+
}))
|
38
41
|
@params[:async] && response.code == 202 || response.code == 204 # We return true to indicate the status.
|
39
42
|
end
|
40
43
|
|
@@ -42,22 +45,25 @@ module Rack
|
|
42
45
|
# Unsubscribes a url. If you used an id for the susbcription, you need to use _the same_.
|
43
46
|
# The optional block will be called to let you confirm the subscription (or not). This is not applicable for if you use params[:async] => true
|
44
47
|
# It returns true if the unsubscription was successful (or will be confirmed if you used async => true in the options), false otherwise
|
45
|
-
|
48
|
+
# You can also pass an opts third argument that will be merged with the options used in Typhoeus's Request (https://github.com/dbalatero/typhoeus)
|
49
|
+
# A useful option is :verbose => true for example.
|
50
|
+
def unsubscribe(url, id = nil, opts = {}, &block)
|
46
51
|
feed_id = "#{id ? id : Base64.urlsafe_encode64(url)}"
|
47
52
|
if block
|
48
53
|
@verifications[feed_id] ||= {}
|
49
54
|
@verifications[feed_id]['unsubscribe'] = block
|
50
55
|
end
|
51
56
|
response = Typhoeus::Request.post(SUPERFEEDR_ENDPOINT,
|
52
|
-
|
53
|
-
:
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
+
opts.merge({
|
58
|
+
:params => {
|
59
|
+
:'hub.mode' => 'unsubscribe',
|
60
|
+
:'hub.verify' => @params[:async] ? 'async' : 'sync',
|
61
|
+
:'hub.topic' => url,
|
62
|
+
:'hub.callback' => generate_callback(url, feed_id)
|
57
63
|
},
|
58
|
-
|
59
|
-
|
60
|
-
)
|
64
|
+
:username => @params[:login],
|
65
|
+
:password => @params[:password]
|
66
|
+
}))
|
61
67
|
@params[:async] && response.code == 202 || response.code == 204 # We return true to indicate the status.
|
62
68
|
end
|
63
69
|
|
data/rack-superfeedr.gemspec
CHANGED
@@ -4,14 +4,14 @@
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version = "0.0.
|
7
|
+
s.name = "rack-superfeedr"
|
8
|
+
s.version = "0.0.5"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["julien51"]
|
12
|
-
s.date =
|
13
|
-
s.description =
|
14
|
-
s.email =
|
12
|
+
s.date = "2012-03-21"
|
13
|
+
s.description = "A gem that provides a rack middleware to interract with Superfeedr's API. "
|
14
|
+
s.email = "julien@superfeedr.com"
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"LICENSE.txt",
|
17
17
|
"README.rdoc"
|
@@ -30,11 +30,11 @@ Gem::Specification.new do |s|
|
|
30
30
|
"test/helper.rb",
|
31
31
|
"test/test_rack-superfeedr.rb"
|
32
32
|
]
|
33
|
-
s.homepage =
|
33
|
+
s.homepage = "http://rubygems.org/gems/rack-superfeedr"
|
34
34
|
s.licenses = ["MIT"]
|
35
35
|
s.require_paths = ["lib"]
|
36
|
-
s.rubygems_version =
|
37
|
-
s.summary =
|
36
|
+
s.rubygems_version = "1.8.17"
|
37
|
+
s.summary = "A gem that provides a rack middleware to interract with Superfeedr's API."
|
38
38
|
|
39
39
|
if s.respond_to? :specification_version then
|
40
40
|
s.specification_version = 3
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-superfeedr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,12 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-03-
|
13
|
-
default_executable:
|
12
|
+
date: 2012-03-21 00:00:00.000000000Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: rack
|
17
|
-
requirement: &
|
16
|
+
requirement: &2173704720 !ruby/object:Gem::Requirement
|
18
17
|
none: false
|
19
18
|
requirements:
|
20
19
|
- - ! '>='
|
@@ -22,10 +21,10 @@ dependencies:
|
|
22
21
|
version: '0'
|
23
22
|
type: :runtime
|
24
23
|
prerelease: false
|
25
|
-
version_requirements: *
|
24
|
+
version_requirements: *2173704720
|
26
25
|
- !ruby/object:Gem::Dependency
|
27
26
|
name: nokogiri
|
28
|
-
requirement: &
|
27
|
+
requirement: &2173703740 !ruby/object:Gem::Requirement
|
29
28
|
none: false
|
30
29
|
requirements:
|
31
30
|
- - ! '>='
|
@@ -33,10 +32,10 @@ dependencies:
|
|
33
32
|
version: '0'
|
34
33
|
type: :runtime
|
35
34
|
prerelease: false
|
36
|
-
version_requirements: *
|
35
|
+
version_requirements: *2173703740
|
37
36
|
- !ruby/object:Gem::Dependency
|
38
37
|
name: typhoeus
|
39
|
-
requirement: &
|
38
|
+
requirement: &2173702920 !ruby/object:Gem::Requirement
|
40
39
|
none: false
|
41
40
|
requirements:
|
42
41
|
- - ! '>='
|
@@ -44,10 +43,10 @@ dependencies:
|
|
44
43
|
version: '0'
|
45
44
|
type: :runtime
|
46
45
|
prerelease: false
|
47
|
-
version_requirements: *
|
46
|
+
version_requirements: *2173702920
|
48
47
|
- !ruby/object:Gem::Dependency
|
49
48
|
name: shoulda
|
50
|
-
requirement: &
|
49
|
+
requirement: &2173696420 !ruby/object:Gem::Requirement
|
51
50
|
none: false
|
52
51
|
requirements:
|
53
52
|
- - ! '>='
|
@@ -55,10 +54,10 @@ dependencies:
|
|
55
54
|
version: '0'
|
56
55
|
type: :development
|
57
56
|
prerelease: false
|
58
|
-
version_requirements: *
|
57
|
+
version_requirements: *2173696420
|
59
58
|
- !ruby/object:Gem::Dependency
|
60
59
|
name: bundler
|
61
|
-
requirement: &
|
60
|
+
requirement: &2173694500 !ruby/object:Gem::Requirement
|
62
61
|
none: false
|
63
62
|
requirements:
|
64
63
|
- - ~>
|
@@ -66,10 +65,10 @@ dependencies:
|
|
66
65
|
version: 1.0.0
|
67
66
|
type: :development
|
68
67
|
prerelease: false
|
69
|
-
version_requirements: *
|
68
|
+
version_requirements: *2173694500
|
70
69
|
- !ruby/object:Gem::Dependency
|
71
70
|
name: jeweler
|
72
|
-
requirement: &
|
71
|
+
requirement: &2173692300 !ruby/object:Gem::Requirement
|
73
72
|
none: false
|
74
73
|
requirements:
|
75
74
|
- - ~>
|
@@ -77,10 +76,10 @@ dependencies:
|
|
77
76
|
version: 1.6.4
|
78
77
|
type: :development
|
79
78
|
prerelease: false
|
80
|
-
version_requirements: *
|
79
|
+
version_requirements: *2173692300
|
81
80
|
- !ruby/object:Gem::Dependency
|
82
81
|
name: rcov
|
83
|
-
requirement: &
|
82
|
+
requirement: &2173681780 !ruby/object:Gem::Requirement
|
84
83
|
none: false
|
85
84
|
requirements:
|
86
85
|
- - ! '>='
|
@@ -88,10 +87,10 @@ dependencies:
|
|
88
87
|
version: '0'
|
89
88
|
type: :development
|
90
89
|
prerelease: false
|
91
|
-
version_requirements: *
|
90
|
+
version_requirements: *2173681780
|
92
91
|
- !ruby/object:Gem::Dependency
|
93
92
|
name: rack
|
94
|
-
requirement: &
|
93
|
+
requirement: &2173680800 !ruby/object:Gem::Requirement
|
95
94
|
none: false
|
96
95
|
requirements:
|
97
96
|
- - ! '>='
|
@@ -99,10 +98,10 @@ dependencies:
|
|
99
98
|
version: '0'
|
100
99
|
type: :runtime
|
101
100
|
prerelease: false
|
102
|
-
version_requirements: *
|
101
|
+
version_requirements: *2173680800
|
103
102
|
- !ruby/object:Gem::Dependency
|
104
103
|
name: nokogiri
|
105
|
-
requirement: &
|
104
|
+
requirement: &2173679660 !ruby/object:Gem::Requirement
|
106
105
|
none: false
|
107
106
|
requirements:
|
108
107
|
- - ! '>='
|
@@ -110,10 +109,10 @@ dependencies:
|
|
110
109
|
version: '0'
|
111
110
|
type: :runtime
|
112
111
|
prerelease: false
|
113
|
-
version_requirements: *
|
112
|
+
version_requirements: *2173679660
|
114
113
|
- !ruby/object:Gem::Dependency
|
115
114
|
name: typhoeus
|
116
|
-
requirement: &
|
115
|
+
requirement: &2173678620 !ruby/object:Gem::Requirement
|
117
116
|
none: false
|
118
117
|
requirements:
|
119
118
|
- - ! '>='
|
@@ -121,7 +120,7 @@ dependencies:
|
|
121
120
|
version: '0'
|
122
121
|
type: :runtime
|
123
122
|
prerelease: false
|
124
|
-
version_requirements: *
|
123
|
+
version_requirements: *2173678620
|
125
124
|
description: ! 'A gem that provides a rack middleware to interract with Superfeedr''s
|
126
125
|
API. '
|
127
126
|
email: julien@superfeedr.com
|
@@ -143,7 +142,6 @@ files:
|
|
143
142
|
- rack-superfeedr.gemspec
|
144
143
|
- test/helper.rb
|
145
144
|
- test/test_rack-superfeedr.rb
|
146
|
-
has_rdoc: true
|
147
145
|
homepage: http://rubygems.org/gems/rack-superfeedr
|
148
146
|
licenses:
|
149
147
|
- MIT
|
@@ -159,7 +157,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
159
157
|
version: '0'
|
160
158
|
segments:
|
161
159
|
- 0
|
162
|
-
hash:
|
160
|
+
hash: 3721893544241889941
|
163
161
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
164
162
|
none: false
|
165
163
|
requirements:
|
@@ -168,7 +166,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
168
166
|
version: '0'
|
169
167
|
requirements: []
|
170
168
|
rubyforge_project:
|
171
|
-
rubygems_version: 1.
|
169
|
+
rubygems_version: 1.8.17
|
172
170
|
signing_key:
|
173
171
|
specification_version: 3
|
174
172
|
summary: A gem that provides a rack middleware to interract with Superfeedr's API.
|