|
- require 'mastodon'
- require 'sanitize'
- require 'awesome_print'
-
- class CrossPost
- class Mastodon
- def initialize(config)
- url = config['mastodon.url']
- token = config['mastodon.token']
- user = config['mastodon.user']
- @user_url = URI.join(url, "/@#{user}").to_s
- @client = ::Mastodon::REST::Client.new base_url: url, bearer_token: token
- @stream = ::Mastodon::Streaming::Client.new base_url: url, bearer_token: token
- end
-
- def feed(twitter)
- @stream.user do |object|
- begin
- case object
- when ::Mastodon::Status
- next if reject? object
- LOGGER.info { 'Receiving status' }
- LOGGER.debug { status.ap }
- twitter.post_status object
- end
- rescue => e
- LOGGER.error e
- #raise
- end
- end
- end
-
- private
-
- def reject?(status)
- status.account.url != @user_url or
- status.visibility != 'public' or
- status.in_reply_to_id
- end
- end
- end
|