osub 0.0.7 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -9,11 +9,8 @@ module OSub
9
9
  attr_reader :callback_url
10
10
  attr_reader :topic_url
11
11
 
12
- def initialize(callback_url, topic_url, secret = nil, token = nil)
12
+ def initialize(callback_url, topic_url, secret = nil)
13
13
  @tokens = []
14
- if token != nil
15
- @tokens << token
16
- end
17
14
 
18
15
  secret = "" if secret == nil
19
16
  @secret = secret.to_s
@@ -28,30 +25,52 @@ module OSub
28
25
  end
29
26
 
30
27
  # Subscribe to the topic through the given hub.
31
- def subscribe(hub_url, async = false, token = nil)
28
+ def subscribe(hub_url, token = nil)
32
29
  if token != nil
33
30
  @tokens << token.to_s
34
31
  end
35
- change_subscription(:subscribe, hub_url, async, token)
32
+ change_subscription(:subscribe, hub_url, token)
36
33
  end
37
34
 
38
35
  # Unsubscribe to the topic through the given hub.
39
- def unsubscribe(hub_url, async = false, token = nil)
36
+ def unsubscribe(hub_url, token = nil)
40
37
  if token != nil
41
38
  @tokens << token.to_s
42
39
  end
43
- change_subscription(:unsubscribe, hub_url, async, token)
40
+ change_subscription(:unsubscribe, hub_url, token)
44
41
  end
45
42
 
46
- def change_subscription(mode, hub_url, async, token)
47
- res = Net::HTTP.post_form(URI.parse(hub_url),
48
- { 'hub.mode' => mode.to_s,
49
- 'hub.callback' => @callback_url,
50
- 'hub.verify' => async ? 'async' : 'sync',
51
- 'hub.verify_token' => token,
52
- 'hub.lease_seconds' => '',
53
- 'hub.secret' => @secret,
54
- 'hub.topic' => @topic_url})
43
+ def change_subscription(mode, hub_url, token, redirect_limit = 10)
44
+ hub_uri = URI.parse(hub_url)
45
+
46
+ req = Net::HTTP::Post.new(hub_uri.request_uri)
47
+ req.set_form_data({
48
+ 'hub.mode' => mode.to_s,
49
+ 'hub.callback' => @callback_url,
50
+ 'hub.verify' => async ? 'async' : 'sync',
51
+ 'hub.verify_token' => token,
52
+ 'hub.lease_seconds' => '',
53
+ 'hub.secret' => @secret,
54
+ 'hub.topic' => @topic_url
55
+ })
56
+
57
+ http = Net::HTTP.new(hub_uri.hostname, hub_uri.port)
58
+ if hub_uri.scheme == 'https'
59
+ http.use_ssl = true
60
+ http.verify_mode = OpenSSL::SSL::VERIFY_PEER
61
+ end
62
+
63
+ response = http.request(req)
64
+
65
+ if response.is_a?(Net::HTTPRedirection) && redirect_limit > 0
66
+ location = response['location']
67
+ self.change_subscription(mode, hub_url, token, redirect_limit - 1)
68
+ else
69
+ response
70
+ end
71
+
72
+ rescue OpenSSL::SSL::SSLError
73
+ return nil
55
74
  end
56
75
 
57
76
  def verify_subscription(token)
data/lib/osub/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module OSub
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.9"
3
3
  end
data/lib/osub.rb CHANGED
@@ -1,2 +1,3 @@
1
+ require_relative 'osub/subscriber'
1
2
  require_relative 'osub/subscription'
2
- require_relative 'osub/subscribers'
3
+
metadata CHANGED
@@ -1,58 +1,55 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: osub
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 0
8
- - 7
9
- version: 0.0.7
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.9
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Hackers of the Severed Hand
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2011-06-09 00:00:00 -04:00
18
- default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2014-10-06 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: ruby-hmac
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- segments:
29
- - 0
30
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
31
22
  type: :runtime
32
- version_requirements: *id001
33
- - !ruby/object:Gem::Dependency
34
- name: ostatus
35
23
  prerelease: false
36
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
37
25
  none: false
38
- requirements:
39
- - - ">="
40
- - !ruby/object:Gem::Version
41
- segments:
42
- - 0
43
- version: "0"
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: ostatus
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
44
38
  type: :runtime
45
- version_requirements: *id002
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
46
  description: This is a simple implementation of a subscriber in the PubSubHubbub protocol.
47
- email:
47
+ email:
48
48
  - hotsh@xomb.org
49
49
  executables: []
50
-
51
50
  extensions: []
52
-
53
51
  extra_rdoc_files: []
54
-
55
- files:
52
+ files:
56
53
  - .gitignore
57
54
  - Gemfile
58
55
  - LICENSE
@@ -62,37 +59,28 @@ files:
62
59
  - lib/osub/subscription.rb
63
60
  - lib/osub/version.rb
64
61
  - osub.gemspec
65
- has_rdoc: true
66
62
  homepage: http://github.com/hotsh/osub
67
63
  licenses: []
68
-
69
64
  post_install_message:
70
65
  rdoc_options: []
71
-
72
- require_paths:
66
+ require_paths:
73
67
  - lib
74
- required_ruby_version: !ruby/object:Gem::Requirement
68
+ required_ruby_version: !ruby/object:Gem::Requirement
75
69
  none: false
76
- requirements:
77
- - - ">="
78
- - !ruby/object:Gem::Version
79
- segments:
80
- - 0
81
- version: "0"
82
- required_rubygems_version: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ! '>='
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ required_rubygems_version: !ruby/object:Gem::Requirement
83
75
  none: false
84
- requirements:
85
- - - ">="
86
- - !ruby/object:Gem::Version
87
- segments:
88
- - 0
89
- version: "0"
76
+ requirements:
77
+ - - ! '>='
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
90
80
  requirements: []
91
-
92
81
  rubyforge_project: osub
93
- rubygems_version: 1.3.7
82
+ rubygems_version: 1.8.24
94
83
  signing_key:
95
84
  specification_version: 3
96
85
  summary: This is a simple implementation of a subscriber in the PubSubHubbub protocol.
97
86
  test_files: []
98
-