summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2018-08-17 14:35:03 -0400
committerJune McEnroe <june@causal.agency>2018-08-17 14:35:03 -0400
commit975c14f5ac037438e05c94208d20f337f4d88ea6 (patch)
treef7e5a2509fa8acd4b5a369a2312c54254ba43e1b
parentRemove zshrc (diff)
downloadsrc-975c14f5ac037438e05c94208d20f337f4d88ea6.tar.gz
src-975c14f5ac037438e05c94208d20f337f4d88ea6.zip
Add gitea2mastodon CGI script
If you're seeing this on Mastodon, it works.
-rwxr-xr-xetc/gitea2mastodon.rb33
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' }