Module: Feed2Gram

Defined in:
lib/feed2gram.rb,
lib/feed2gram/http.rb,
lib/feed2gram/version.rb,
lib/feed2gram/loads_cache.rb,
lib/feed2gram/loads_config.rb,
lib/feed2gram/filters_posts.rb,
lib/feed2gram/updates_cache.rb,
lib/feed2gram/parses_entries.rb,
lib/feed2gram/parses_options.rb,
lib/feed2gram/publishes_posts.rb,
lib/feed2gram/refreshes_token.rb

Defined Under Namespace

Classes: Cache, Config, Error, FacebookSucksAtDownloadingFilesError, FiltersPosts, Http, LoadsCache, LoadsConfig, Media, Options, ParsesEntries, ParsesOptions, Post, PublishesPosts, RefreshesToken, Result, UpdatesCache

Constant Summary collapse

VERSION =
"1.4.0"

Class Method Summary collapse

Class Method Details

.cli(argv) ⇒ Object



15
16
17
18
# File 'lib/feed2gram.rb', line 15

def self.cli(argv)
  options = ParsesOptions.new.parse(argv)
  run(options)
end

.run(options) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/feed2gram.rb', line 20

def self.run(options)
  config = LoadsConfig.new.load(options)
  RefreshesToken.new.refresh!(config, options) unless options.skip_token_refresh

  cache = LoadsCache.new.load(options)
  puts "Loading entries from feed: #{config.feed_url}" if options.verbose
  entries = ParsesEntries.new.parse(config.feed_url)
  puts "Found #{entries.size} entries in feed" if options.verbose
  posts = FiltersPosts.new.filter(entries, cache)
  if posts.empty?
    puts "No new posts to publish after filtering already-processed posts in #{options.cache_path}" if options.verbose
  else
    results = if options.populate_cache
      puts "Populating cache, marking #{posts.size} posts as skipped" if options.verbose
      posts.map { |post| Result.new(post: post, status: :skipped) }
    else
      PublishesPosts.new.publish(posts, config, options)
    end
    UpdatesCache.new.update!(cache, results, options)
  end
end