diff --git a/Gemfile.lock b/Gemfile.lock index b29cf9d..27cd766 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -36,7 +36,7 @@ GIT GEM remote: https://rubygems.org/ specs: - activesupport (7.1.3.2) + activesupport (7.1.3.3) base64 bigdecimal concurrent-ruby (~> 1.0, >= 1.0.2) @@ -53,8 +53,10 @@ GEM ast (2.4.2) babosa (2.0.0) base64 (0.2.0) - bcrypt_pbkdf (1.1.0) - bigdecimal (3.1.7) + bcrypt_pbkdf (1.1.1) + bcrypt_pbkdf (1.1.1-arm64-darwin) + bcrypt_pbkdf (1.1.1-x86_64-darwin) + bigdecimal (3.1.8) bskyrb (0.5.3) date (>= 3.3.3) httparty (>= 0.21.0) @@ -87,7 +89,7 @@ GEM date (3.3.4) diff-lcs (1.5.1) domain_name (0.6.20240107) - dotenv (3.1.0) + dotenv (3.1.2) down (5.4.2) addressable (~> 2.8) drb (2.2.1) @@ -107,7 +109,7 @@ GEM dry-files (1.1.0) dry-inflector (1.0.0) dry-initializer (3.1.1) - dry-logger (1.0.3) + dry-logger (1.0.4) dry-logic (1.5.0) concurrent-ruby (~> 1.0) dry-core (~> 1.0, < 2) @@ -122,7 +124,7 @@ GEM dry-configurable (~> 1.0, < 2) dry-core (~> 1.0, < 2) dry-events (~> 1.0, < 2) - dry-schema (1.13.3) + dry-schema (1.13.4) concurrent-ruby (~> 1.0) dry-configurable (~> 1.0, >= 1.0.1) dry-core (~> 1.0, < 2) @@ -260,18 +262,19 @@ GEM http-accept (1.7.0) http-cookie (1.0.5) domain_name (~> 0.5) - httparty (0.21.0) + httparty (0.22.0) + csv mini_mime (>= 1.0.0) multi_xml (>= 0.5.2) - i18n (1.14.4) + i18n (1.14.5) concurrent-ruby (~> 1.0) ice_nine (0.11.2) image_processing (1.12.2) mini_magick (>= 4.9.5, < 5) ruby-vips (>= 2.0.17, < 3) io-console (0.7.2) - irb (1.12.0) - rdoc + irb (1.13.1) + rdoc (>= 4.0.0) reline (>= 0.4.2) json (2.7.2) jwt (2.8.1) @@ -294,12 +297,13 @@ GEM method_source (1.1.0) mime-types (3.5.2) mime-types-data (~> 3.2015) - mime-types-data (3.2024.0305) + mime-types-data (3.2024.0507) mini_magick (4.12.0) mini_mime (1.1.5) - minitest (5.22.3) - multi_xml (0.6.0) - multipart-post (2.4.0) + minitest (5.23.1) + multi_xml (0.7.1) + bigdecimal (~> 3.1) + multipart-post (2.4.1) mustermann (3.0.0) ruby2_keywords (~> 0.0.1) mustermann-contrib (3.0.0) @@ -307,7 +311,7 @@ GEM mustermann (= 3.0.0) mutex_m (0.2.0) nenv (0.3.0) - net-imap (0.4.10) + net-imap (0.4.11) date net-protocol net-pop (0.1.2) @@ -322,12 +326,12 @@ GEM net-protocol net-ssh (7.2.3) netrc (0.11.0) - nio4r (2.7.1) - nokogiri (1.16.4-arm64-darwin) + nio4r (2.7.3) + nokogiri (1.16.5-arm64-darwin) racc (~> 1.4) - nokogiri (1.16.4-x86_64-darwin) + nokogiri (1.16.5-x86_64-darwin) racc (~> 1.4) - nokogiri (1.16.4-x86_64-linux) + nokogiri (1.16.5-x86_64-linux) racc (~> 1.4) notiffany (0.1.3) nenv (~> 0.1) @@ -346,7 +350,7 @@ GEM activesupport httparty parallel (1.24.0) - parser (3.3.0.5) + parser (3.3.1.0) ast (~> 2.4.1) racc pg (1.5.6) @@ -359,9 +363,9 @@ GEM puma (6.4.2) nio4r (~> 2.0) que (2.3.0) - racc (1.7.3) + racc (1.8.0) rack (2.2.9) - rack-contrib (2.4.0) + rack-contrib (2.5.0) rack (< 4) rack-rewrite (1.5.1) rack-session (1.0.2) @@ -371,17 +375,17 @@ GEM rainbow (3.1.1) rake (13.2.1) rb-fsevent (0.11.2) - rb-inotify (0.10.1) + rb-inotify (0.11.1) ffi (~> 1.0) - rdoc (6.6.3.1) + rdoc (6.7.0) psych (>= 4.0.0) redcarpet (3.6.0) redis (5.2.0) redis-client (>= 0.22.0) - redis-client (0.22.1) + redis-client (0.22.2) connection_pool - regexp_parser (2.9.0) - reline (0.5.2) + regexp_parser (2.9.2) + reline (0.5.7) io-console (~> 0.5) rest-client (2.1.0) http-accept (>= 1.7.0, < 2.0) @@ -390,16 +394,17 @@ GEM netrc (~> 0.8) reverse_markdown (2.1.1) nokogiri - rexml (3.2.6) - rom (5.3.0) + rexml (3.2.8) + strscan (>= 3.0.9) + rom (5.3.2) rom-changeset (~> 5.3, >= 5.3.0) - rom-core (~> 5.3, >= 5.3.0) + rom-core (~> 5.3, >= 5.3.2) rom-repository (~> 5.3, >= 5.3.0) rom-changeset (5.3.0) dry-core (~> 1.0) rom-core (~> 5.3) transproc (~> 1.0, >= 1.1.0) - rom-core (5.3.1) + rom-core (5.3.2) concurrent-ruby (~> 1.1) dry-configurable (~> 1.0) dry-core (~> 1.0) @@ -418,7 +423,7 @@ GEM dry-core (~> 1.0) dry-initializer (~> 3.0, >= 3.0.1) rom-core (~> 5.3, >= 5.3.0) - rom-sql (3.6.2) + rom-sql (3.6.3) dry-core (~> 1.0) dry-types (~> 1.0) rom (~> 5.2, >= 5.2.1) @@ -432,11 +437,11 @@ GEM rspec-expectations (3.13.0) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) - rspec-mocks (3.13.0) + rspec-mocks (3.13.1) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) rspec-support (3.13.1) - rubocop (1.62.1) + rubocop (1.63.5) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) @@ -447,11 +452,11 @@ GEM rubocop-ast (>= 1.31.1, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 3.0) - rubocop-ast (1.31.2) - parser (>= 3.3.0.4) - rubocop-performance (1.20.2) + rubocop-ast (1.31.3) + parser (>= 3.3.1.0) + rubocop-performance (1.21.0) rubocop (>= 1.48.1, < 2.0) - rubocop-ast (>= 1.30.0, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) ruby-progressbar (1.13.0) ruby-readability (0.7.0) guess_html_encoding (>= 0.0.4) @@ -462,7 +467,7 @@ GEM sanitize (6.1.0) crass (~> 1.0.2) nokogiri (>= 1.12.0) - sequel (5.79.0) + sequel (5.80.0) bigdecimal shellany (0.0.1) simple-rss (1.3.3) @@ -472,29 +477,30 @@ GEM snaky_hash (2.0.1) hashie version_gem (~> 1.1, >= 1.1.1) - sshkit (1.22.1) + sshkit (1.22.2) base64 mutex_m net-scp (>= 1.1.2) net-sftp (>= 2.1.2) net-ssh (>= 2.8.0) - standard (1.35.1) + standard (1.36.0) language_server-protocol (~> 3.17.0.2) lint_roller (~> 1.0) - rubocop (~> 1.62.0) + rubocop (~> 1.63.0) standard-custom (~> 1.0.0) - standard-performance (~> 1.3) + standard-performance (~> 1.4) standard-custom (1.0.2) lint_roller (~> 1.0) rubocop (~> 1.50) - standard-performance (1.3.1) + standard-performance (1.4.0) lint_roller (~> 1.1) - rubocop-performance (~> 1.20.2) + rubocop-performance (~> 1.21.0) standardrb (1.0.1) standard steam-api (1.2.0) faraday (~> 1.0) stringio (3.1.0) + strscan (3.1.0) temple (0.10.3) thor (1.3.1) tilt (2.3.0) @@ -508,9 +514,9 @@ GEM unicode-emoji (3.4.0) unicode-version (~> 1.0) unicode-version (1.4.0) - vernier (0.7.0) + vernier (1.0.1) version_gem (1.1.4) - warning (1.3.0) + warning (1.4.0) whenever (1.0.0) chronic (>= 0.6.3) xml-simple (1.1.9) @@ -519,7 +525,7 @@ GEM date httparty json (>= 2.0) - zeitwerk (2.6.13) + zeitwerk (2.6.15) PLATFORMS arm64-darwin-23 diff --git a/slices/micropub/commands/posts/update.rb b/slices/micropub/commands/posts/update.rb index 7ed6909..36e3b87 100644 --- a/slices/micropub/commands/posts/update.rb +++ b/slices/micropub/commands/posts/update.rb @@ -5,7 +5,8 @@ module Micropub include Deps[ "repos.post_repo", "renderers.markdown", - "commands.posts.add_syndication_source" + "commands.posts.add_syndication_source", + "queries.posts.syndication_url_to_source" ] def call(params:) @@ -31,7 +32,8 @@ module Micropub if params.key? :add attrs_to_add = {} - syndication = params[:add].delete(:syndication)&.first + syndication_url = params[:add].delete(:syndication)&.first + syndication_source = syndication_url_to_source.call(url: syndication_url) if syndication_url && !syndication_url.empty? tags = params[:add].delete(:category) content = params[:add].delete(:content)&.first name = params[:add].delete(:name) @@ -46,7 +48,7 @@ module Micropub post_repo.update(post.id, attrs_to_add) unless attrs_to_add.empty? post_repo.tag_post(post_id: post.id, tags: tags) if tags && !tags.empty? - add_syndication_source.call(post.id, "", syndication) if syndication && !syndication.empty? + add_syndication_source.call(post.id, syndication_source, syndication_url) if syndication_url && !syndication_url.empty? Success() end diff --git a/slices/micropub/queries/posts/syndication_url_to_source.rb b/slices/micropub/queries/posts/syndication_url_to_source.rb new file mode 100644 index 0000000..cc8a6d4 --- /dev/null +++ b/slices/micropub/queries/posts/syndication_url_to_source.rb @@ -0,0 +1,21 @@ +module Micropub + module Queries + module Posts + class SyndicationUrlToSource + def call(url:) + if url.match("https://social.dnitza.com") + return :mastodon + end + + if url.match("https://bsky.social") + return :bluesky + end + + if url.match("https://gist.github.com") + return :gist + end + end + end + end + end +end