redfinger 0.0.3 → 0.0.4
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/Rakefile +1 -1
- data/VERSION +1 -1
- data/lib/redfinger.rb +2 -2
- data/lib/redfinger/client.rb +12 -12
- data/redfinger.gemspec +6 -6
- metadata +49 -26
data/Rakefile
CHANGED
@@ -10,7 +10,7 @@ begin
|
|
10
10
|
gem.email = "michael@intridea.com"
|
11
11
|
gem.homepage = "http://github.com/mbleigh/redfinger"
|
12
12
|
gem.authors = ["Michael Bleigh"]
|
13
|
-
gem.add_dependency "rest-client"
|
13
|
+
gem.add_dependency "rest-client", ">= 1.5.0"
|
14
14
|
gem.add_dependency "nokogiri", ">= 1.4.0"
|
15
15
|
gem.add_dependency "hashie"
|
16
16
|
gem.add_development_dependency "rspec", ">= 1.2.9"
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.4
|
data/lib/redfinger.rb
CHANGED
@@ -9,9 +9,9 @@ module Redfinger
|
|
9
9
|
# webfinger process does not appear safe, such as
|
10
10
|
# mismatched domains or an unverified XRD signature.
|
11
11
|
class SecurityException < StandardError; end
|
12
|
-
|
12
|
+
|
13
13
|
# Finger the provided e-mail address.
|
14
14
|
def self.finger(email)
|
15
15
|
Redfinger::Client.new(email).finger
|
16
16
|
end
|
17
|
-
end
|
17
|
+
end
|
data/lib/redfinger/client.rb
CHANGED
@@ -5,34 +5,34 @@ require 'uri'
|
|
5
5
|
module Redfinger
|
6
6
|
class Client
|
7
7
|
attr_accessor :account, :domain, :uri_template
|
8
|
-
|
8
|
+
|
9
9
|
def initialize(email, uri_template = nil)
|
10
10
|
self.account = urify(email)
|
11
11
|
self.domain = account.split('@').last
|
12
12
|
end
|
13
|
-
|
13
|
+
|
14
14
|
def finger
|
15
15
|
self.uri_template ||= retrieve_template_from_xrd
|
16
|
-
Finger.new RestClient.get(swizzle)
|
16
|
+
Finger.new RestClient.get(swizzle).body
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
def xrd_url(ssl = true)
|
20
20
|
"http#{'s' if ssl}://#{domain}/.well-known/host-meta"
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
private
|
24
|
-
|
24
|
+
|
25
25
|
def swizzle
|
26
26
|
uri_template.gsub '{uri}', URI.escape(self.account)
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
def retrieve_template_from_xrd(ssl = true)
|
30
|
-
doc = Nokogiri::XML::Document.parse(RestClient.get(xrd_url(ssl)))
|
31
|
-
|
30
|
+
doc = Nokogiri::XML::Document.parse(RestClient.get(xrd_url(ssl)).body)
|
31
|
+
|
32
32
|
unless doc.at_xpath('.//hm:Host').content == self.domain
|
33
33
|
raise Redfinger::SecurityException, "The XRD document's host did not match the account's host."
|
34
34
|
end
|
35
|
-
|
35
|
+
|
36
36
|
doc.at('Link[rel=lrdd]').attribute('template').value
|
37
37
|
rescue Errno::ECONNREFUSED, RestClient::ResourceNotFound
|
38
38
|
if ssl
|
@@ -41,10 +41,10 @@ module Redfinger
|
|
41
41
|
raise Redfinger::ResourceNotFound, "Unable to find the host XRD file."
|
42
42
|
end
|
43
43
|
end
|
44
|
-
|
44
|
+
|
45
45
|
def urify(email)
|
46
46
|
email = "acct:#{email}" unless email.include?("acct:")
|
47
47
|
email
|
48
48
|
end
|
49
49
|
end
|
50
|
-
end
|
50
|
+
end
|
data/redfinger.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{redfinger}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.4"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Michael Bleigh"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-06-24}
|
13
13
|
s.description = %q{A Ruby Webfinger client}
|
14
14
|
s.email = %q{michael@intridea.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -37,7 +37,7 @@ Gem::Specification.new do |s|
|
|
37
37
|
s.homepage = %q{http://github.com/mbleigh/redfinger}
|
38
38
|
s.rdoc_options = ["--charset=UTF-8"]
|
39
39
|
s.require_paths = ["lib"]
|
40
|
-
s.rubygems_version = %q{1.3.
|
40
|
+
s.rubygems_version = %q{1.3.6}
|
41
41
|
s.summary = %q{A Ruby WebFinger client.}
|
42
42
|
s.test_files = [
|
43
43
|
"spec/redfinger/client_spec.rb",
|
@@ -50,20 +50,20 @@ Gem::Specification.new do |s|
|
|
50
50
|
s.specification_version = 3
|
51
51
|
|
52
52
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
53
|
-
s.add_runtime_dependency(%q<rest-client>, [">= 0"])
|
53
|
+
s.add_runtime_dependency(%q<rest-client>, [">= 1.5.0"])
|
54
54
|
s.add_runtime_dependency(%q<nokogiri>, [">= 1.4.0"])
|
55
55
|
s.add_runtime_dependency(%q<hashie>, [">= 0"])
|
56
56
|
s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
|
57
57
|
s.add_development_dependency(%q<webmock>, [">= 0"])
|
58
58
|
else
|
59
|
-
s.add_dependency(%q<rest-client>, [">= 0"])
|
59
|
+
s.add_dependency(%q<rest-client>, [">= 1.5.0"])
|
60
60
|
s.add_dependency(%q<nokogiri>, [">= 1.4.0"])
|
61
61
|
s.add_dependency(%q<hashie>, [">= 0"])
|
62
62
|
s.add_dependency(%q<rspec>, [">= 1.2.9"])
|
63
63
|
s.add_dependency(%q<webmock>, [">= 0"])
|
64
64
|
end
|
65
65
|
else
|
66
|
-
s.add_dependency(%q<rest-client>, [">= 0"])
|
66
|
+
s.add_dependency(%q<rest-client>, [">= 1.5.0"])
|
67
67
|
s.add_dependency(%q<nokogiri>, [">= 1.4.0"])
|
68
68
|
s.add_dependency(%q<hashie>, [">= 0"])
|
69
69
|
s.add_dependency(%q<rspec>, [">= 1.2.9"])
|
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redfinger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 0
|
8
|
+
- 4
|
9
|
+
version: 0.0.4
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- Michael Bleigh
|
@@ -9,59 +14,75 @@ autorequire:
|
|
9
14
|
bindir: bin
|
10
15
|
cert_chain: []
|
11
16
|
|
12
|
-
date: 2010-
|
17
|
+
date: 2010-06-24 00:00:00 -04:00
|
13
18
|
default_executable:
|
14
19
|
dependencies:
|
15
20
|
- !ruby/object:Gem::Dependency
|
16
21
|
name: rest-client
|
17
|
-
|
18
|
-
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
20
24
|
requirements:
|
21
25
|
- - ">="
|
22
26
|
- !ruby/object:Gem::Version
|
23
|
-
|
24
|
-
|
27
|
+
segments:
|
28
|
+
- 1
|
29
|
+
- 5
|
30
|
+
- 0
|
31
|
+
version: 1.5.0
|
32
|
+
type: :runtime
|
33
|
+
version_requirements: *id001
|
25
34
|
- !ruby/object:Gem::Dependency
|
26
35
|
name: nokogiri
|
27
|
-
|
28
|
-
|
29
|
-
version_requirements: !ruby/object:Gem::Requirement
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
30
38
|
requirements:
|
31
39
|
- - ">="
|
32
40
|
- !ruby/object:Gem::Version
|
41
|
+
segments:
|
42
|
+
- 1
|
43
|
+
- 4
|
44
|
+
- 0
|
33
45
|
version: 1.4.0
|
34
|
-
|
46
|
+
type: :runtime
|
47
|
+
version_requirements: *id002
|
35
48
|
- !ruby/object:Gem::Dependency
|
36
49
|
name: hashie
|
37
|
-
|
38
|
-
|
39
|
-
version_requirements: !ruby/object:Gem::Requirement
|
50
|
+
prerelease: false
|
51
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
40
52
|
requirements:
|
41
53
|
- - ">="
|
42
54
|
- !ruby/object:Gem::Version
|
55
|
+
segments:
|
56
|
+
- 0
|
43
57
|
version: "0"
|
44
|
-
|
58
|
+
type: :runtime
|
59
|
+
version_requirements: *id003
|
45
60
|
- !ruby/object:Gem::Dependency
|
46
61
|
name: rspec
|
47
|
-
|
48
|
-
|
49
|
-
version_requirements: !ruby/object:Gem::Requirement
|
62
|
+
prerelease: false
|
63
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
50
64
|
requirements:
|
51
65
|
- - ">="
|
52
66
|
- !ruby/object:Gem::Version
|
67
|
+
segments:
|
68
|
+
- 1
|
69
|
+
- 2
|
70
|
+
- 9
|
53
71
|
version: 1.2.9
|
54
|
-
|
72
|
+
type: :development
|
73
|
+
version_requirements: *id004
|
55
74
|
- !ruby/object:Gem::Dependency
|
56
75
|
name: webmock
|
57
|
-
|
58
|
-
|
59
|
-
version_requirements: !ruby/object:Gem::Requirement
|
76
|
+
prerelease: false
|
77
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
60
78
|
requirements:
|
61
79
|
- - ">="
|
62
80
|
- !ruby/object:Gem::Version
|
81
|
+
segments:
|
82
|
+
- 0
|
63
83
|
version: "0"
|
64
|
-
|
84
|
+
type: :development
|
85
|
+
version_requirements: *id005
|
65
86
|
description: A Ruby Webfinger client
|
66
87
|
email: michael@intridea.com
|
67
88
|
executables: []
|
@@ -101,18 +122,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
101
122
|
requirements:
|
102
123
|
- - ">="
|
103
124
|
- !ruby/object:Gem::Version
|
125
|
+
segments:
|
126
|
+
- 0
|
104
127
|
version: "0"
|
105
|
-
version:
|
106
128
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
107
129
|
requirements:
|
108
130
|
- - ">="
|
109
131
|
- !ruby/object:Gem::Version
|
132
|
+
segments:
|
133
|
+
- 0
|
110
134
|
version: "0"
|
111
|
-
version:
|
112
135
|
requirements: []
|
113
136
|
|
114
137
|
rubyforge_project:
|
115
|
-
rubygems_version: 1.3.
|
138
|
+
rubygems_version: 1.3.6
|
116
139
|
signing_key:
|
117
140
|
specification_version: 3
|
118
141
|
summary: A Ruby WebFinger client.
|