class JekyllRecker::Social::Twitter

Twitter

Twitter social sharing backend

Constants

KEY

Public Instance Methods

configure!() click to toggle source
# File lib/jekyll_recker/social.rb, line 136
def configure!
  creds = extract_from_env || extract_from_config
  raise 'cannot find twitter credentials!' if creds.nil?

  @client = ::Twitter::REST::Client.new do |settings|
    settings.consumer_key = creds['consumer_api_key']
    settings.consumer_secret = creds['consumer_api_secret']
    settings.access_token = creds['access_token']
    settings.access_token_secret = creds['access_token_secret']
  end
end
post!() click to toggle source
# File lib/jekyll_recker/social.rb, line 148
def post!
  if dry?
    info('tweeting in dry mode, printing message')
    puts "BEGIN TWEET\n#{post_body}END TWEET"
  else
    @client.update(post_body)
  end
end

Private Instance Methods

cred_fieldnames() click to toggle source
# File lib/jekyll_recker/social.rb, line 177
def cred_fieldnames
  %w[
    access_token_secret
    access_token
    consumer_api_key
    consumer_api_secret
  ]
end
extract_from_config() click to toggle source
# File lib/jekyll_recker/social.rb, line 167
def extract_from_config
  values = cred_fieldnames.map do |k|
    Shell.run(config["#{k}_cmd"]).strip
  end

  return nil if values.any? { |v| v.nil? || v.empty? }

  Hash[cred_fieldnames.zip(values)]
end
extract_from_env() click to toggle source
# File lib/jekyll_recker/social.rb, line 159
def extract_from_env
  values = cred_fieldnames.map { |k| ENV["TWITTER_#{k.upcase}"] }

  return nil if values.any? { |v| v.nil? || v.empty? }

  Hash[cred_fieldnames.zip(values)]
end