webmention 0.1.6 → 1.0.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.
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.6
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Parecki
@@ -9,148 +9,240 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-06-27 00:00:00.000000000 Z
12
+ date: 2019-07-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: json
15
+ name: minitest
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ">="
18
+ - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '0'
21
- type: :runtime
20
+ version: '5.11'
21
+ type: :development
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ">="
25
+ - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: '0'
27
+ version: '5.11'
28
28
  - !ruby/object:Gem::Dependency
29
- name: nokogiri
29
+ name: minitest-reporters
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ">="
32
+ - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '0'
35
- type: :runtime
34
+ version: '1.3'
35
+ type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ">="
39
+ - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: '0'
41
+ version: '1.3'
42
42
  - !ruby/object:Gem::Dependency
43
- name: httparty
43
+ name: rake
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: 0.15.5
49
- type: :runtime
48
+ version: '12.3'
49
+ type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: 0.15.5
55
+ version: '12.3'
56
56
  - !ruby/object:Gem::Dependency
57
- name: link_header
57
+ name: reek
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
60
  - - "~>"
61
61
  - !ruby/object:Gem::Version
62
- version: 0.0.8
63
- type: :runtime
62
+ version: '5.4'
63
+ type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - "~>"
68
68
  - !ruby/object:Gem::Version
69
- version: 0.0.8
69
+ version: '5.4'
70
70
  - !ruby/object:Gem::Dependency
71
- name: bundler
71
+ name: rubocop
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - ">="
74
+ - - "~>"
75
75
  - !ruby/object:Gem::Version
76
- version: '0'
76
+ version: 0.72.0
77
77
  type: :development
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - ">="
81
+ - - "~>"
82
82
  - !ruby/object:Gem::Version
83
- version: '0'
83
+ version: 0.72.0
84
84
  - !ruby/object:Gem::Dependency
85
- name: rake
85
+ name: rubocop-performance
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - ">="
88
+ - - "~>"
89
89
  - !ruby/object:Gem::Version
90
- version: '0'
90
+ version: '1.4'
91
91
  type: :development
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - ">="
95
+ - - "~>"
96
96
  - !ruby/object:Gem::Version
97
- version: '0'
97
+ version: '1.4'
98
98
  - !ruby/object:Gem::Dependency
99
- name: minitest
99
+ name: simplecov
100
100
  requirement: !ruby/object:Gem::Requirement
101
101
  requirements:
102
- - - ">="
102
+ - - "~>"
103
103
  - !ruby/object:Gem::Version
104
- version: '0'
104
+ version: 0.17.0
105
105
  type: :development
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
108
108
  requirements:
109
- - - ">="
109
+ - - "~>"
110
110
  - !ruby/object:Gem::Version
111
- version: '0'
111
+ version: 0.17.0
112
+ - !ruby/object:Gem::Dependency
113
+ name: simplecov-console
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - "~>"
117
+ - !ruby/object:Gem::Version
118
+ version: 0.5.0
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - "~>"
124
+ - !ruby/object:Gem::Version
125
+ version: 0.5.0
112
126
  - !ruby/object:Gem::Dependency
113
127
  name: webmock
114
128
  requirement: !ruby/object:Gem::Requirement
115
129
  requirements:
116
- - - ">="
130
+ - - "~>"
117
131
  - !ruby/object:Gem::Version
118
- version: '0'
132
+ version: '3.6'
119
133
  type: :development
120
134
  prerelease: false
121
135
  version_requirements: !ruby/object:Gem::Requirement
122
136
  requirements:
123
- - - ">="
137
+ - - "~>"
138
+ - !ruby/object:Gem::Version
139
+ version: '3.6'
140
+ - !ruby/object:Gem::Dependency
141
+ name: absolutely
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - "~>"
145
+ - !ruby/object:Gem::Version
146
+ version: '3.0'
147
+ type: :runtime
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - "~>"
124
152
  - !ruby/object:Gem::Version
125
- version: '0'
126
- description:
127
- email: aaron@parecki.com
128
- executables:
129
- - webmention
153
+ version: '3.0'
154
+ - !ruby/object:Gem::Dependency
155
+ name: addressable
156
+ requirement: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - "~>"
159
+ - !ruby/object:Gem::Version
160
+ version: '2.6'
161
+ type: :runtime
162
+ prerelease: false
163
+ version_requirements: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - "~>"
166
+ - !ruby/object:Gem::Version
167
+ version: '2.6'
168
+ - !ruby/object:Gem::Dependency
169
+ name: http
170
+ requirement: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - "~>"
173
+ - !ruby/object:Gem::Version
174
+ version: 5.0.0.pre
175
+ type: :runtime
176
+ prerelease: false
177
+ version_requirements: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - "~>"
180
+ - !ruby/object:Gem::Version
181
+ version: 5.0.0.pre
182
+ - !ruby/object:Gem::Dependency
183
+ name: indieweb-endpoints
184
+ requirement: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - "~>"
187
+ - !ruby/object:Gem::Version
188
+ version: 0.6.0
189
+ type: :runtime
190
+ prerelease: false
191
+ version_requirements: !ruby/object:Gem::Requirement
192
+ requirements:
193
+ - - "~>"
194
+ - !ruby/object:Gem::Version
195
+ version: 0.6.0
196
+ - !ruby/object:Gem::Dependency
197
+ name: nokogiri
198
+ requirement: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - "~>"
201
+ - !ruby/object:Gem::Version
202
+ version: '1.10'
203
+ type: :runtime
204
+ prerelease: false
205
+ version_requirements: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - "~>"
208
+ - !ruby/object:Gem::Version
209
+ version: '1.10'
210
+ description: A Ruby gem for sending webmention notifications.
211
+ email:
212
+ - aaron@parecki.com
213
+ executables: []
130
214
  extensions: []
131
215
  extra_rdoc_files: []
132
216
  files:
217
+ - ".editorconfig"
133
218
  - ".gitignore"
219
+ - ".reek.yml"
220
+ - ".rubocop"
221
+ - ".rubocop.yml"
222
+ - ".ruby-version"
223
+ - ".simplecov"
134
224
  - ".travis.yml"
225
+ - CHANGELOG.md
226
+ - CONTRIBUTING.md
135
227
  - Gemfile
228
+ - LICENSE
136
229
  - README.md
137
230
  - Rakefile
138
- - bin/webmention
139
- - example.rb
140
231
  - lib/webmention.rb
141
232
  - lib/webmention/client.rb
233
+ - lib/webmention/exceptions.rb
234
+ - lib/webmention/http_request.rb
235
+ - lib/webmention/parsers.rb
236
+ - lib/webmention/parsers/html_parser.rb
237
+ - lib/webmention/registerable.rb
142
238
  - lib/webmention/version.rb
143
- - test/data/sample_html.rb
144
- - test/lib/webmention/crawl_test.rb
145
- - test/lib/webmention/discovery_test.rb
146
- - test/lib/webmention/mention_test.rb
147
- - test/lib/webmention/url_test.rb
148
- - test/lib/webmention/version_test.rb
149
- - test/test_helper.rb
150
239
  - webmention.gemspec
151
- homepage: https://github.com/indieweb/mention-client-ruby
152
- licenses: []
153
- metadata: {}
240
+ homepage: https://github.com/indieweb/webmention-client-ruby
241
+ licenses:
242
+ - Apache-2.0
243
+ metadata:
244
+ bug_tracker_uri: https://github.com/indieweb/webmention-client-ruby/issues
245
+ changelog_uri: https://github.com/indieweb/webmention-client-ruby/blob/v1.0.0/CHANGELOG.md
154
246
  post_install_message:
155
247
  rdoc_options: []
156
248
  require_paths:
@@ -159,23 +251,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
159
251
  requirements:
160
252
  - - ">="
161
253
  - !ruby/object:Gem::Version
162
- version: 1.9.3
254
+ version: '2.4'
255
+ - - "<"
256
+ - !ruby/object:Gem::Version
257
+ version: '2.7'
163
258
  required_rubygems_version: !ruby/object:Gem::Requirement
164
259
  requirements:
165
260
  - - ">="
166
261
  - !ruby/object:Gem::Version
167
262
  version: '0'
168
263
  requirements: []
169
- rubyforge_project:
170
- rubygems_version: 2.5.2
264
+ rubygems_version: 3.0.3
171
265
  signing_key:
172
266
  specification_version: 4
173
- summary: A gem for sending webmention (and pingback) notifications
174
- test_files:
175
- - test/data/sample_html.rb
176
- - test/lib/webmention/crawl_test.rb
177
- - test/lib/webmention/discovery_test.rb
178
- - test/lib/webmention/mention_test.rb
179
- - test/lib/webmention/url_test.rb
180
- - test/lib/webmention/version_test.rb
181
- - test/test_helper.rb
267
+ summary: Webmention notification client
268
+ test_files: []
@@ -1,59 +0,0 @@
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/example.rb DELETED
@@ -1,20 +0,0 @@
1
- require './lib/webmention.rb'
2
-
3
- # Send webmentions to any links on the page that have a webmention endpoint
4
- url = 'http://aaronparecki.com/notes/2013/06/23/1/indiewebcamp'
5
- client = Webmention::Client.new url
6
- sent = client.send_mentions
7
- puts "Sent #{sent} mentions"
8
-
9
-
10
- # Discover the webmention endpoint of a target and send the mention
11
- target = "http://indiewebcamp.com/"
12
- endpoint = Webmention::Client.supports_webmention? target
13
- if endpoint
14
- Webmention::Client.send_mention endpoint, "http://source.example.com/post/100", target
15
- end
16
-
17
-
18
- # You can also use the client to send to a specific webmention endpoint
19
- Webmention::Client.send_mention "http://webmention.io/example/webmention", "http://source.example.com/post/100", "http://target.example.com/post/100"
20
-
@@ -1,125 +0,0 @@
1
- class SampleData
2
-
3
- def self.rel_webmention_href
4
- <<-eos
5
- <html>
6
- <head>
7
- <link rel="webmention" href="http://webmention.io/example/webmention">
8
- </head>
9
- </html>
10
- eos
11
- end
12
-
13
- def self.rel_webmention_a_href
14
- <<-eos
15
- <html>
16
- <head>
17
- <a rel="webmention" href="http://webmention.io/example/webmention">webmention</a>
18
- </head>
19
- </html>
20
- eos
21
- end
22
- def self.rel_href_webmention
23
- <<-eos
24
- <html>
25
- <head>
26
- <link href="http://webmention.io/example/webmention" rel="webmention">
27
- </head>
28
- </html>
29
- eos
30
- end
31
-
32
- def self.rel_webmention_org_href
33
- <<-eos
34
- <html>
35
- <head>
36
- <link rel="http://webmention.org" href="http://webmention.io/example/webmention">
37
- </head>
38
- </html>
39
- eos
40
- end
41
-
42
- def self.rel_href_webmention_org
43
- <<-eos
44
- <html>
45
- <head>
46
- <link href="http://webmention.io/example/webmention" rel="http://webmention.org">
47
- </head>
48
- </html>
49
- eos
50
- end
51
-
52
- def self.rel_webmention_org_slash_href
53
- <<-eos
54
- <html>
55
- <head>
56
- <link rel="http://webmention.org/" href="http://webmention.io/example/webmention">
57
- </head>
58
- </html>
59
- eos
60
- end
61
-
62
- def self.rel_href_webmention_org_slash
63
- <<-eos
64
- <html>
65
- <head>
66
- <link href="http://webmention.io/example/webmention" rel="http://webmention.org/">
67
- </head>
68
- </html>
69
- eos
70
- end
71
-
72
- def self.sample_source_post_html
73
- <<-eos
74
- <html>
75
- <head>
76
- <title>Sample Post</title>
77
- </head>
78
- <body class="h-entry">
79
- <p><a href="http://target.example.com/post/4">Link to Target 4</a></p>
80
- <p><a href="http://target.example.com/post/5">Link to Target 5</a></p>
81
- </body>
82
- </html>
83
- eos
84
- end
85
-
86
- def self.rel_webmention_relative_with_path
87
- <<-eos
88
- <html>
89
- <head>
90
- <link href="/example/webmention" rel="webmention">
91
- </head>
92
- </html>
93
- eos
94
- end
95
-
96
- def self.rel_webmention_relative_without_path
97
- <<-eos
98
- <html>
99
- <head>
100
- <link href="webmention.php" rel="webmention">
101
- </head>
102
- </html>
103
- eos
104
- end
105
-
106
- def self.link_tag_multiple_rel_values
107
- <<-eos
108
- <html>
109
- <head>
110
- <link href="http://webmention.io/example/webmention" rel="webmention foo bar">
111
- </head>
112
- </html>
113
- eos
114
- end
115
-
116
- def self.empty_link_tag_no_href
117
- <<-eos
118
- <html>
119
- <head>
120
- <link href="" rel="webmention">
121
- </head>
122
- </html>
123
- eos
124
- end
125
- end