rack-superfeedr 0.1.6 → 0.2.0
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 +2 -2
- data/Gemfile.lock +2 -2
- data/README.rdoc +1 -1
- data/VERSION +1 -1
- data/examples/sinatra_app.rb +2 -2
- data/lib/rack-superfeedr.rb +40 -6
- data/rack-superfeedr.gemspec +10 -11
- metadata +26 -9
- checksums.yaml +0 -15
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
data/README.rdoc
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/examples/sinatra_app.rb
CHANGED
@@ -2,7 +2,7 @@ require 'sinatra'
|
|
2
2
|
require(File.join(File.dirname(__FILE__), '..', 'lib', 'rack-superfeedr.rb'))
|
3
3
|
|
4
4
|
|
5
|
-
use Rack::Superfeedr, { :host => "pstx.showoff.io", :login => "
|
5
|
+
use Rack::Superfeedr, { :host => "pstx.showoff.io", :login => "julien", :password => "f8054b405e68aa2067df25fb21665bab", :format => "json", :async => false } do |superfeedr|
|
6
6
|
set :superfeedr, superfeedr # so that we can use `settings.superfeedr` to access the superfeedr object in our application.
|
7
7
|
|
8
8
|
superfeedr.on_notification do |notification|
|
@@ -16,7 +16,7 @@ get '/hi' do
|
|
16
16
|
end
|
17
17
|
|
18
18
|
get '/subscribe' do
|
19
|
-
subscription = settings.superfeedr.subscribe("http://push-pub.appspot.com/feed")
|
19
|
+
subscription = settings.superfeedr.subscribe("http://push-pub.appspot.com/feed", 9999, { verbose: true, retrieve: true })
|
20
20
|
if !subscription
|
21
21
|
settings.superfeedr.error
|
22
22
|
else
|
data/lib/rack-superfeedr.rb
CHANGED
@@ -28,6 +28,8 @@ module Rack
|
|
28
28
|
# It returns true if the subscription was successful (or will be confirmed if you used async => true in the options), false otherwise.
|
29
29
|
# 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)
|
30
30
|
# A useful option is :verbose => true for example.
|
31
|
+
# If you supply a retrieve option, the content of the feed will be retrieved from Superfeedr as well and your on_notification callback will
|
32
|
+
# will be called with the content of the feed.
|
31
33
|
def subscribe(url, id = nil, opts = {}, &block)
|
32
34
|
feed_id = "#{id ? id : Base64.urlsafe_encode64(url)}"
|
33
35
|
if block
|
@@ -37,25 +39,55 @@ module Rack
|
|
37
39
|
endpoint = opts[:hub] || SUPERFEEDR_ENDPOINT
|
38
40
|
opts.delete(:hub)
|
39
41
|
|
42
|
+
retrieve = opts[:retrieve] || false
|
43
|
+
opts.delete(:retrieve)
|
44
|
+
|
45
|
+
|
40
46
|
if endpoint == SUPERFEEDR_ENDPOINT
|
41
47
|
opts[:userpwd] = "#{@params[:login]}:#{@params[:password]}"
|
42
48
|
end
|
43
49
|
|
44
|
-
|
45
|
-
opts.merge({
|
50
|
+
|
51
|
+
opts = opts.merge({
|
46
52
|
:params => {
|
47
53
|
:'hub.mode' => 'subscribe',
|
48
|
-
:'hub.verify' => @params[:async] ? 'async' : 'sync',
|
49
54
|
:'hub.topic' => url,
|
50
55
|
:'hub.callback' => generate_callback(url, feed_id)
|
51
56
|
},
|
52
57
|
:headers => {
|
53
58
|
:Accept => @params[:format] == "json" ? "application/json" : "application/atom+xml"
|
54
59
|
}
|
55
|
-
})
|
60
|
+
})
|
61
|
+
|
62
|
+
if retrieve
|
63
|
+
opts[:params][:retrieve] = true
|
64
|
+
end
|
65
|
+
|
66
|
+
opts[:params][:'hub.verify'] = @params[:async] ? 'async' : 'sync',
|
67
|
+
|
68
|
+
response = ::Typhoeus::Request.post(endpoint, opts)
|
56
69
|
|
57
70
|
@error = response.body
|
58
|
-
|
71
|
+
if !retrieve
|
72
|
+
@params[:async] && response.code == 202 || response.code == 204 # We return true to indicate the status.
|
73
|
+
else
|
74
|
+
|
75
|
+
if @params[:format] != "json"
|
76
|
+
content = Nokogiri.XML(response.body)
|
77
|
+
else
|
78
|
+
content = JSON.parse(response.body)
|
79
|
+
|
80
|
+
end
|
81
|
+
# Let's now send that data back to the user.
|
82
|
+
if defined? Hashie::Mash
|
83
|
+
info = Hashie::Mash.new(req: req, body: body)
|
84
|
+
end
|
85
|
+
if !@callback.call(content, feed_id, info)
|
86
|
+
# We need to unsubscribe the user
|
87
|
+
end
|
88
|
+
|
89
|
+
true
|
90
|
+
end
|
59
91
|
end
|
60
92
|
|
61
93
|
##
|
@@ -159,7 +191,9 @@ module Rack
|
|
159
191
|
content = Nokogiri.XML(body)
|
160
192
|
end
|
161
193
|
# Let's now send that data back to the user.
|
162
|
-
|
194
|
+
if defined? Hashie::Mash
|
195
|
+
info = Hashie::Mash.new(req: req, body: body)
|
196
|
+
end
|
163
197
|
if !@callback.call(content, feed_id[1], info)
|
164
198
|
# We need to unsubscribe the user
|
165
199
|
end
|
data/rack-superfeedr.gemspec
CHANGED
@@ -2,15 +2,14 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: rack-superfeedr 0.1.6 ruby lib
|
6
5
|
|
7
6
|
Gem::Specification.new do |s|
|
8
7
|
s.name = "rack-superfeedr"
|
9
|
-
s.version = "0.
|
8
|
+
s.version = "0.2.0"
|
10
9
|
|
11
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
11
|
s.authors = ["julien51"]
|
13
|
-
s.date = "2014-
|
12
|
+
s.date = "2014-06-10"
|
14
13
|
s.description = "A gem that provides a rack middleware to interract with Superfeedr's API. "
|
15
14
|
s.email = "julien@superfeedr.com"
|
16
15
|
s.extra_rdoc_files = [
|
@@ -34,31 +33,31 @@ Gem::Specification.new do |s|
|
|
34
33
|
s.homepage = "http://rubygems.org/gems/rack-superfeedr"
|
35
34
|
s.licenses = ["MIT"]
|
36
35
|
s.require_paths = ["lib"]
|
37
|
-
s.rubygems_version = "
|
36
|
+
s.rubygems_version = "1.8.25"
|
38
37
|
s.summary = "A gem that provides a rack middleware to interract with Superfeedr's API."
|
39
38
|
|
40
39
|
if s.respond_to? :specification_version then
|
41
|
-
s.specification_version =
|
40
|
+
s.specification_version = 3
|
42
41
|
|
43
42
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
44
43
|
s.add_runtime_dependency(%q<rack>, [">= 0"])
|
45
|
-
s.add_runtime_dependency(%q<nokogiri>, [">=
|
46
|
-
s.add_runtime_dependency(%q<typhoeus>, [">= 0"])
|
44
|
+
s.add_runtime_dependency(%q<nokogiri>, [">= 1.6.1"])
|
45
|
+
s.add_runtime_dependency(%q<typhoeus>, [">= 0.6.7"])
|
47
46
|
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
48
47
|
s.add_development_dependency(%q<bundler>, [">= 1.0.0"])
|
49
48
|
s.add_development_dependency(%q<jeweler>, [">= 1.6.4"])
|
50
49
|
else
|
51
50
|
s.add_dependency(%q<rack>, [">= 0"])
|
52
|
-
s.add_dependency(%q<nokogiri>, [">=
|
53
|
-
s.add_dependency(%q<typhoeus>, [">= 0"])
|
51
|
+
s.add_dependency(%q<nokogiri>, [">= 1.6.1"])
|
52
|
+
s.add_dependency(%q<typhoeus>, [">= 0.6.7"])
|
54
53
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
55
54
|
s.add_dependency(%q<bundler>, [">= 1.0.0"])
|
56
55
|
s.add_dependency(%q<jeweler>, [">= 1.6.4"])
|
57
56
|
end
|
58
57
|
else
|
59
58
|
s.add_dependency(%q<rack>, [">= 0"])
|
60
|
-
s.add_dependency(%q<nokogiri>, [">=
|
61
|
-
s.add_dependency(%q<typhoeus>, [">= 0"])
|
59
|
+
s.add_dependency(%q<nokogiri>, [">= 1.6.1"])
|
60
|
+
s.add_dependency(%q<typhoeus>, [">= 0.6.7"])
|
62
61
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
63
62
|
s.add_dependency(%q<bundler>, [">= 1.0.0"])
|
64
63
|
s.add_dependency(%q<jeweler>, [">= 1.6.4"])
|
metadata
CHANGED
@@ -1,18 +1,20 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-superfeedr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- julien51
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2014-
|
12
|
+
date: 2014-06-10 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: rack
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
19
|
- - ! '>='
|
18
20
|
- !ruby/object:Gem::Version
|
@@ -20,6 +22,7 @@ dependencies:
|
|
20
22
|
type: :runtime
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
23
26
|
requirements:
|
24
27
|
- - ! '>='
|
25
28
|
- !ruby/object:Gem::Version
|
@@ -27,34 +30,39 @@ dependencies:
|
|
27
30
|
- !ruby/object:Gem::Dependency
|
28
31
|
name: nokogiri
|
29
32
|
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
30
34
|
requirements:
|
31
35
|
- - ! '>='
|
32
36
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
37
|
+
version: 1.6.1
|
34
38
|
type: :runtime
|
35
39
|
prerelease: false
|
36
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
37
42
|
requirements:
|
38
43
|
- - ! '>='
|
39
44
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
45
|
+
version: 1.6.1
|
41
46
|
- !ruby/object:Gem::Dependency
|
42
47
|
name: typhoeus
|
43
48
|
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
44
50
|
requirements:
|
45
51
|
- - ! '>='
|
46
52
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
53
|
+
version: 0.6.7
|
48
54
|
type: :runtime
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
51
58
|
requirements:
|
52
59
|
- - ! '>='
|
53
60
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
61
|
+
version: 0.6.7
|
55
62
|
- !ruby/object:Gem::Dependency
|
56
63
|
name: shoulda
|
57
64
|
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
58
66
|
requirements:
|
59
67
|
- - ! '>='
|
60
68
|
- !ruby/object:Gem::Version
|
@@ -62,6 +70,7 @@ dependencies:
|
|
62
70
|
type: :development
|
63
71
|
prerelease: false
|
64
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
65
74
|
requirements:
|
66
75
|
- - ! '>='
|
67
76
|
- !ruby/object:Gem::Version
|
@@ -69,6 +78,7 @@ dependencies:
|
|
69
78
|
- !ruby/object:Gem::Dependency
|
70
79
|
name: bundler
|
71
80
|
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
72
82
|
requirements:
|
73
83
|
- - ! '>='
|
74
84
|
- !ruby/object:Gem::Version
|
@@ -76,6 +86,7 @@ dependencies:
|
|
76
86
|
type: :development
|
77
87
|
prerelease: false
|
78
88
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
79
90
|
requirements:
|
80
91
|
- - ! '>='
|
81
92
|
- !ruby/object:Gem::Version
|
@@ -83,6 +94,7 @@ dependencies:
|
|
83
94
|
- !ruby/object:Gem::Dependency
|
84
95
|
name: jeweler
|
85
96
|
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
86
98
|
requirements:
|
87
99
|
- - ! '>='
|
88
100
|
- !ruby/object:Gem::Version
|
@@ -90,6 +102,7 @@ dependencies:
|
|
90
102
|
type: :development
|
91
103
|
prerelease: false
|
92
104
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
93
106
|
requirements:
|
94
107
|
- - ! '>='
|
95
108
|
- !ruby/object:Gem::Version
|
@@ -118,25 +131,29 @@ files:
|
|
118
131
|
homepage: http://rubygems.org/gems/rack-superfeedr
|
119
132
|
licenses:
|
120
133
|
- MIT
|
121
|
-
metadata: {}
|
122
134
|
post_install_message:
|
123
135
|
rdoc_options: []
|
124
136
|
require_paths:
|
125
137
|
- lib
|
126
138
|
required_ruby_version: !ruby/object:Gem::Requirement
|
139
|
+
none: false
|
127
140
|
requirements:
|
128
141
|
- - ! '>='
|
129
142
|
- !ruby/object:Gem::Version
|
130
143
|
version: '0'
|
144
|
+
segments:
|
145
|
+
- 0
|
146
|
+
hash: 1737679521327129604
|
131
147
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
148
|
+
none: false
|
132
149
|
requirements:
|
133
150
|
- - ! '>='
|
134
151
|
- !ruby/object:Gem::Version
|
135
152
|
version: '0'
|
136
153
|
requirements: []
|
137
154
|
rubyforge_project:
|
138
|
-
rubygems_version:
|
155
|
+
rubygems_version: 1.8.25
|
139
156
|
signing_key:
|
140
|
-
specification_version:
|
157
|
+
specification_version: 3
|
141
158
|
summary: A gem that provides a rack middleware to interract with Superfeedr's API.
|
142
159
|
test_files: []
|
checksums.yaml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
---
|
2
|
-
!binary "U0hBMQ==":
|
3
|
-
metadata.gz: !binary |-
|
4
|
-
ZjlhYzhjODNjMjUxZTE5MDhlZTdhOGQ5ZGVjZGQyMTNmYzJlMzQ1Nw==
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
ZGUxMGJkODE2NjIwYTk1Y2Q2MzI3NzRlNDJjNjViYmQwZGJjNGRlOA==
|
7
|
-
SHA512:
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
MzRjNzhiOWIzMWJlNzQ2Y2RiNjIyMTc0Y2MyZjg5NDg0NzZmMzM3Y2UzMTQz
|
10
|
-
ODJmZTBjZjMwMDM0YjU5ODE2Yzg4NDRkZjE0M2RiYzMyZjY5NTk2ZDAzZjZl
|
11
|
-
YTU0MDEwOTA3MTI3ZGNiZmFiMTc5MTQ1NTQ5Y2RiZWZmMDFjMDg=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
Y2YzMmY2MWM3OTRhOWQ1MmI3ZjY0MmY4NjNhZDIwYzc2MmM0OWU3ZmVmMjQ4
|
14
|
-
YTU4YWNmNmFkZWFlMjc3MTkyYWQ2YmRlYTQ5OWI4MzUzZmY3ZGRlMzIzMTM3
|
15
|
-
ZjE0OTdiZWQ5NDg5N2Q1YjRlNzhkNmU4MTM0MGU4MzAzZjI3OGM=
|