webmention 0.1.3 → 0.1.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/README.md +11 -0
- data/bin/webmention +59 -0
- data/lib/webmention/client.rb +6 -2
- data/lib/webmention/version.rb +1 -1
- data/webmention.gemspec +3 -0
- metadata +21 -3
data/README.md
CHANGED
@@ -42,6 +42,17 @@ if endpoint = Webmention::Client.supports_webmention?(target)
|
|
42
42
|
end
|
43
43
|
```
|
44
44
|
|
45
|
+
Command Line Utility
|
46
|
+
--------------------
|
47
|
+
|
48
|
+
For testing or for sending webmentions manually, you can use the command-line utility provided.
|
49
|
+
|
50
|
+
```bash
|
51
|
+
$ webmention http://source.example.com/post/100
|
52
|
+
```
|
53
|
+
|
54
|
+
This will look for an [h-entry](http://indiewebcamp.com/h-entry) on the given URL and attempt to send webmentions to each URL in the entry.
|
55
|
+
|
45
56
|
|
46
57
|
Webmention
|
47
58
|
----------
|
data/bin/webmention
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
$:.unshift(File.join(File.dirname(__FILE__), "/../lib"))
|
4
|
+
require "webmention"
|
5
|
+
require "link_header"
|
6
|
+
|
7
|
+
url = ARGV[0]
|
8
|
+
|
9
|
+
if url == nil
|
10
|
+
puts "Usage: webmention http://example.com/post/100"
|
11
|
+
exit 1
|
12
|
+
end
|
13
|
+
|
14
|
+
if !Webmention::Client.valid_http_url?(url)
|
15
|
+
puts "Not a valid URL"
|
16
|
+
exit 1
|
17
|
+
end
|
18
|
+
|
19
|
+
client = Webmention::Client.new url
|
20
|
+
|
21
|
+
def debug(msg)
|
22
|
+
puts msg
|
23
|
+
end
|
24
|
+
|
25
|
+
debug "Finding links on #{url}"
|
26
|
+
client.crawl
|
27
|
+
|
28
|
+
links = client.links
|
29
|
+
debug "Found #{links.length} links:"
|
30
|
+
debug links.to_a.map{|m| "\t#{m}"}.join("\n")
|
31
|
+
|
32
|
+
debug ""
|
33
|
+
|
34
|
+
links.each do |link|
|
35
|
+
debug link
|
36
|
+
|
37
|
+
endpoint = Webmention::Client.supports_webmention?(link)
|
38
|
+
if endpoint
|
39
|
+
debug "\tDiscovered Webmention endpoint:"
|
40
|
+
debug "\t#{endpoint}"
|
41
|
+
debug "\tSending webmention..."
|
42
|
+
result = Webmention::Client.send_mention endpoint, url, link, true
|
43
|
+
if result
|
44
|
+
debug "\tReturned HTTP #{result.code}"
|
45
|
+
if result.headers['link']
|
46
|
+
link_headers = LinkHeader.parse result.headers['link']
|
47
|
+
if status_link = link_headers.find_link(['rel', 'status'])
|
48
|
+
debug "\tWebmention status: #{status_link.href}"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
else
|
52
|
+
debug "\tEncountered an unknown error sending this webmention!"
|
53
|
+
end
|
54
|
+
else
|
55
|
+
debug "\tNo webmention endpoint found"
|
56
|
+
end
|
57
|
+
|
58
|
+
debug ""
|
59
|
+
end
|
data/lib/webmention/client.rb
CHANGED
@@ -63,7 +63,7 @@ module Webmention
|
|
63
63
|
# target - The link that was mentioned in the source page.
|
64
64
|
#
|
65
65
|
# Returns a boolean.
|
66
|
-
def self.send_mention endpoint, source, target
|
66
|
+
def self.send_mention endpoint, source, target, full_response=false
|
67
67
|
data = {
|
68
68
|
:source => source,
|
69
69
|
:target => target,
|
@@ -74,7 +74,11 @@ module Webmention
|
|
74
74
|
:body => data
|
75
75
|
})
|
76
76
|
|
77
|
-
|
77
|
+
if full_response
|
78
|
+
return response
|
79
|
+
else
|
80
|
+
return response.code == 200 || response.code == 202
|
81
|
+
end
|
78
82
|
rescue
|
79
83
|
return false
|
80
84
|
end
|
data/lib/webmention/version.rb
CHANGED
data/webmention.gemspec
CHANGED
@@ -20,9 +20,12 @@ Gem::Specification.new do |s|
|
|
20
20
|
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
21
21
|
s.require_paths = ['lib']
|
22
22
|
|
23
|
+
s.required_ruby_version = '>= 1.9.3'
|
24
|
+
|
23
25
|
s.add_dependency 'json'
|
24
26
|
s.add_dependency 'nokogiri'
|
25
27
|
s.add_dependency 'httparty', '~> 0.13.1'
|
28
|
+
s.add_dependency 'link_header', '~> 0.0.8'
|
26
29
|
|
27
30
|
s.add_development_dependency 'bundler', '~> 1.3'
|
28
31
|
s.add_development_dependency 'rake'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: webmention
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -60,6 +60,22 @@ dependencies:
|
|
60
60
|
- - ~>
|
61
61
|
- !ruby/object:Gem::Version
|
62
62
|
version: 0.13.1
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
name: link_header
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
67
|
+
requirements:
|
68
|
+
- - ~>
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: 0.0.8
|
71
|
+
type: :runtime
|
72
|
+
prerelease: false
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ~>
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: 0.0.8
|
63
79
|
- !ruby/object:Gem::Dependency
|
64
80
|
name: bundler
|
65
81
|
requirement: !ruby/object:Gem::Requirement
|
@@ -126,7 +142,8 @@ dependencies:
|
|
126
142
|
version: '0'
|
127
143
|
description:
|
128
144
|
email: aaron@parecki.com
|
129
|
-
executables:
|
145
|
+
executables:
|
146
|
+
- webmention
|
130
147
|
extensions: []
|
131
148
|
extra_rdoc_files: []
|
132
149
|
files:
|
@@ -135,6 +152,7 @@ files:
|
|
135
152
|
- Gemfile
|
136
153
|
- README.md
|
137
154
|
- Rakefile
|
155
|
+
- bin/webmention
|
138
156
|
- example.rb
|
139
157
|
- lib/webmention.rb
|
140
158
|
- lib/webmention/client.rb
|
@@ -158,7 +176,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
158
176
|
requirements:
|
159
177
|
- - ! '>='
|
160
178
|
- !ruby/object:Gem::Version
|
161
|
-
version:
|
179
|
+
version: 1.9.3
|
162
180
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
163
181
|
none: false
|
164
182
|
requirements:
|