Sha256: 7fd4f151cff87ffeb768531d8e29d345cfe68446a4fd5fed24619cebf31cf531

Contents?: true

Size: 1.59 KB

Versions: 1

Compression:

Stored size: 1.59 KB

Contents

# frozen_string_literal: true

module Twog
  module TwitterHandler
    def tweet(posts, conf, bitly)
      return unless posts&.length&.positive?
      raise StandardError, 'OAuth Consumer Key missing' unless conf['consumer_key']
      raise StandardError, 'OAuth Consumer Secret missing' unless conf['consumer_secret']
      raise StandardError, 'OAuth Access Token missing' unless conf['access_token']
      raise StandardError, 'OAuth Access Secret missing' unless conf['access_secret']

      posts.sort.each do |post|
        link = bitly ? bitly.shorten(post.link).short_url : item.link
        use_twitter_oauth(post, link, conf)
        update_config_file_with_latest_tweet_date(post.date.to_s, conf)
      end
    end

    def use_twitter_oauth(post, link, conf)
      client = TwitterOAuth::Client.new(
        consumer_key: conf['consumer_key'],
        consumer_secret: conf['consumer_secret'],
        token: conf['access_token'],
        secret: conf['access_secret']
      )
      raise StandardError, 'TwitterOAuth unauthorized' unless client.authorized?

      text = ensure_text_is_of_length(140, post.title, link)
      client.update(text)
    end

    def ensure_text_is_of_length(length, title, link)
      blogged = 'blogged:'
      title = title[0, (length - ((' ' * 2).length + blogged.length + link.length))]
      [blogged, title, link].join(' ')
    end

    def update_config_file_with_latest_tweet_date(last_blog_post_tweeted, conf)
      conf['last_blog_post_tweeted'] = last_blog_post_tweeted
      File.open("#{ENV['HOME']}/.twog/conf.yaml", 'w') { |out| out.write(conf.to_yaml) }
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
twog-0.3.6 lib/twog/twitter_handler.rb