diff options
Diffstat (limited to 'etc')
-rwxr-xr-x | etc/gitea2mastodon.rb | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/etc/gitea2mastodon.rb b/etc/gitea2mastodon.rb new file mode 100755 index 00000000..d2eaafd0 --- /dev/null +++ b/etc/gitea2mastodon.rb @@ -0,0 +1,33 @@ +#!/usr/bin/env ruby +require 'cgi' +require 'json' +require 'mastodon' + +require_relative 'secret' + +cgi = CGI.new +begin + payload = JSON.parse(cgi.params['payload'].first) +rescue + cgi.out('status' => 'BAD_REQUEST', 'type' => 'text/plain') { 'bad' } + exit +end +if payload['secret'] != GITEA_SECRET + cgi.out('status' => 'FORBIDDEN', 'type' => 'text/plain') { 'no' } + exit +end + +client = Mastodon::REST::Client.new( + base_url: MASTODON_URL, + bearer_token: MASTODON_TOKEN, +) + +payload['commits'].reverse.each do |commit| + message = commit['message'] + .split("\n\n") + .map {|p| p.split("\n").join(' ') } + .join("\n") + client.create_status("🚽 #{message}\n#{commit['url']}") +end + +cgi.out('text/plain') { 'ok' } |