Add web mentions
This commit is contained in:
23
app/commands/posts/send_webmentions.rb
Normal file
23
app/commands/posts/send_webmentions.rb
Normal file
@@ -0,0 +1,23 @@
|
||||
require "httparty"
|
||||
|
||||
module Adamantium
|
||||
module Commands
|
||||
module Posts
|
||||
class SendWebmentions
|
||||
include Deps["settings", "post_utilities.link_finder"]
|
||||
|
||||
def call(post_content:, post_url:)
|
||||
source = post_url
|
||||
links = link_finder.call(post_content)
|
||||
links.each do |target|
|
||||
HTTParty.post(settings.webmention_service, {
|
||||
token: settings.webmention_token,
|
||||
source: source,
|
||||
target: target
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
@@ -3,5 +3,6 @@
|
||||
Hanami.app.register_provider :post_utilities, namespace: true do
|
||||
start do
|
||||
register "slugify", Adamantium::SlugCreator.new
|
||||
register "link_finder", Adamantium::LinkFinder.new
|
||||
end
|
||||
end
|
||||
|
11
spec/adamantium/unit/link_finder_spec.rb
Normal file
11
spec/adamantium/unit/link_finder_spec.rb
Normal file
@@ -0,0 +1,11 @@
|
||||
require "spec_helper"
|
||||
|
||||
RSpec.describe Adamantium::LinkFinder do
|
||||
subject { described_class.new }
|
||||
|
||||
it "finds allowed links in a string" do
|
||||
text = "Check out some of these cool websites: https://google.com https://example.com or even http://twitter.com and https://pinboard.in!"
|
||||
|
||||
expect(subject.call(text)).to eq ["https://example.com", "https://pinboard.in"]
|
||||
end
|
||||
end
|
Reference in New Issue
Block a user