Rebuild assets

This commit is contained in:
2023-02-01 21:13:19 +11:00
parent 8cbcd08411
commit 1defc79496
6 changed files with 56 additions and 3 deletions

View File

@@ -28,6 +28,7 @@ gem "httparty"
gem "redcarpet" gem "redcarpet"
gem "rexml" gem "rexml"
gem "babosa" gem "babosa"
gem "pinboard"
group :cli, :development do group :cli, :development do
gem "hanami-reloader" gem "hanami-reloader"
@@ -43,7 +44,7 @@ group :development do
gem "capistrano", "~> 3.17", require: false gem "capistrano", "~> 3.17", require: false
gem "capistrano-bundler" gem "capistrano-bundler"
gem "capistrano-rbenv", "~> 2.2" gem "capistrano-rbenv", "~> 2.2"
gem 'capistrano3-puma', github: "seuros/capistrano-puma" gem "capistrano3-puma", github: "seuros/capistrano-puma"
end end
group :test do group :test do

View File

@@ -202,6 +202,8 @@ GEM
parser (3.2.0.0) parser (3.2.0.0)
ast (~> 2.4.1) ast (~> 2.4.1)
pg (1.4.5) pg (1.4.5)
pinboard (0.0.3)
httparty (~> 0.7)
pry (0.14.1) pry (0.14.1)
coderay (~> 1.1) coderay (~> 1.1)
method_source (~> 1.0) method_source (~> 1.0)
@@ -329,6 +331,7 @@ DEPENDENCIES
hanami-view! hanami-view!
httparty httparty
pg pg
pinboard
puma puma
rack-test rack-test
rake rake

View File

@@ -24,6 +24,10 @@ module Adamantium
{ {
uid: "https://social.dnitza.com", uid: "https://social.dnitza.com",
name: "Mastodon" name: "Mastodon"
},
{
uid: "https://pinboard.in",
name: "Pinboard"
} }
] ]
}.to_json }.to_json

View File

@@ -8,16 +8,36 @@ module Adamantium
include Dry::Monads[:result] include Dry::Monads[:result]
include Dry::Monads::Do.for(:call) include Dry::Monads::Do.for(:call)
include Deps["settings", "syndication.mastodon"] include Deps["settings",
"syndication.mastodon",
"syndication.pinboard"
]
def call(post) def call(post)
if post[:syndicate_to].any? { |url| settings.mastodon_server.match(/#{url}/) } syndicate_to = syndication_targets(post[:syndicate_to])
if syndicate_to.include? :mastodon
url = yield mastodon.call(post: post) url = yield mastodon.call(post: post)
Success([:mastodon, url]) Success([:mastodon, url])
end end
if syndicate_to.include? :pinboard
url = yield pinboard.call(post: post)
Success([:pinboard, url])
end
Failure(:no_syndication_targets) Failure(:no_syndication_targets)
end end
private
def syndication_targets(syndicate_to)
targets = []
targets << :mastodon if syndicate_to.any? { |url| settings.mastodon_server.match(/#{url}/) }
targets << :pinboard if syndicate_to.any? { |url| "https://pinboard.in".match(/#{url}/) }
targets
end
end end
end end
end end

View File

@@ -1,5 +1,6 @@
Hanami.app.register_provider :syndication, namespace: true do Hanami.app.register_provider :syndication, namespace: true do
start do start do
register "mastodon", Adamantium::Syndication::Mastodon.new register "mastodon", Adamantium::Syndication::Mastodon.new
register "pinboard", Adamantium::Syndication::Pinboard.new(api_key: settings.pinboard_api_key)
end end
end end

View File

@@ -0,0 +1,24 @@
require "pinboard"
require "dry/monads"
module Adamantium
module Syndication
class Pinboard
attr_reader :pinboard
include Dry::Monads[:result]
def initialize(api_key:)
@pinboard = Pinboard::Client.new(token: api_key)
end
def call(post:)
if pinboard.add(url: post[:url], description: post[:content]) == "done"
href = pinboard.get(url: post[:url]).href
Success(href)
else
Failure(:failed_to_post_to_pinboard)
end
end
end
end
end