Rebuild assets
This commit is contained in:
3
Gemfile
3
Gemfile
@@ -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
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
24
lib/adamantium/syndication/pinboard.rb
Normal file
24
lib/adamantium/syndication/pinboard.rb
Normal 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
|
Reference in New Issue
Block a user