Module: Birdsong

Extended by:
Configuration
Defined in:
lib/birdsong.rb,
lib/birdsong/user.rb,
lib/birdsong/tweet.rb,
lib/birdsong/version.rb,
lib/birdsong/scrapers/scraper.rb,
lib/birdsong/scrapers/tweet_scraper.rb

Defined Under Namespace

Classes: AuthorizationError, Error, InvalidIdError, InvalidMediaTypeError, NoTweetFoundError, RateLimitExceeded, Scraper, Tweet, TweetScraper, User

Constant Summary collapse

VERSION =
"0.2.3"

Class Method Summary collapse

Methods included from Configuration

configuration, define_setting

Class Method Details

.retrieve_media(url) ⇒ Object

Get media from a URL and save to a temp folder set in the configuration under temp_storage_location



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/birdsong.rb', line 56

def self.retrieve_media(url)
  return "" if !Birdsong.save_media

  response = Typhoeus.get(url)

  # Get the file extension if it's in the file
  extension = url.split(".").last

  # Do some basic checks so we just empty out if there's something weird in the file extension
  # that could do some harm.
  if extension.length.positive?
    extension = extension[0...extension.index("?")]
    extension = nil unless /^[a-zA-Z0-9]+$/.match?(extension)
    extension = ".#{extension}" unless extension.nil?
  end

  temp_file_name = "#{Birdsong.temp_storage_location}/#{SecureRandom.uuid}#{extension}"

  # We do this in case the folder isn't created yet, since it's a temp folder we'll just do so
  self.create_temp_storage_location
  File.binwrite(temp_file_name, response.body)
  temp_file_name
end

.tweet_fieldsObject

The general fields to always return for Tweets



50
51
52
# File 'lib/birdsong.rb', line 50

def self.tweet_fields
  "attachments,author_id,conversation_id,created_at,entities,geo,id,in_reply_to_user_id,lang"
end

.user_fieldsObject

The general fields to always return for Users



45
46
47
# File 'lib/birdsong.rb', line 45

def self.user_fields
  "name,created_at,location,profile_image_url,protected,public_metrics,url,username,verified,withheld,description"
end