diff options
author | June McEnroe <june@causal.agency> | 2018-08-17 14:35:03 -0400 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2018-08-17 14:35:03 -0400 |
commit | 975c14f5ac037438e05c94208d20f337f4d88ea6 (patch) | |
tree | f7e5a2509fa8acd4b5a369a2312c54254ba43e1b /etc | |
parent | Remove zshrc (diff) | |
download | src-975c14f5ac037438e05c94208d20f337f4d88ea6.tar.gz src-975c14f5ac037438e05c94208d20f337f4d88ea6.zip |
Add gitea2mastodon CGI script
If you're seeing this on Mastodon, it works.
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' } |