25 lines
558 B
Ruby
25 lines
558 B
Ruby
require "dry/monads"
|
|
require "dry/monads/do"
|
|
|
|
module Adamantium
|
|
module Commands
|
|
module Posts
|
|
class Syndicate
|
|
include Dry::Monads[:result]
|
|
include Dry::Monads::Do.for(:call)
|
|
|
|
include Deps["settings", "syndication.mastodon"]
|
|
|
|
def call(post)
|
|
if post[:syndicate_to].any? { |url| settings.mastodon_server.match(/#{url}/) }
|
|
url = yield mastodon.call(post: post)
|
|
|
|
Success([:mastodon, url])
|
|
end
|
|
Failure(:no_syndication_targets)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|