module Facy::Core

Public Instance Methods

_init() click to toggle source
# File lib/facy/core.rb, line 25
def _init
  load_config
  login_flow
  inits.each { |block| class_eval(&block) }
  set_me
  log(:info, "core module init success")
end
async(&block) click to toggle source
# File lib/facy/core.rb, line 109
def async(&block)
  Thread.start { block.call }
end
config() click to toggle source
# File lib/facy/core.rb, line 7
def config
  @config ||= {}
end
config_file() click to toggle source
# File lib/facy/core.rb, line 19
def config_file
  config_file_folder = "/tmp"
  config_file_name = ".facy_config.yml"
  File.expand_path(config_file_name, config_file_folder)
end
default_config() click to toggle source
# File lib/facy/core.rb, line 42
def default_config
  default_conf_file = File.expand_path("../../../config.yml", __FILE__)
  file = File.exist?(config_file) ? config_file : default_conf_file

  config = YAML.load_file(file)
  {
    session_file_folder: "~",
    session_file_name: ".facy_access_token.yml",
    log_folder: "/tmp",
    log_file_name: ".facy_log",
    app_id: config['app_id'],
    app_secret: config['app_secret'],
    permission: config['permission'],
    granted: config['granted'],
    redirect_uri: "http://www.facebook.com/connect/login_success.html",
    prompt: "\e[15;48;5;27m f \e[0m >> ",
    stream_fetch_interval: 2,
    notification_fetch_interval: 2,
    output_interval: 3,
    retry_interval: 2,
    comments_view_num: 10,
  }
end
init(&block) click to toggle source
# File lib/facy/core.rb, line 15
def init(&block)
  inits << block
end
inits() click to toggle source
# File lib/facy/core.rb, line 11
def inits
  @inits ||= []
end
load_config() click to toggle source
# File lib/facy/core.rb, line 37
def load_config
  config.reverse_update(default_config)
  log(:info, "config loaded #{config.to_s}")
end
me() click to toggle source
# File lib/facy/core.rb, line 3
def me
  @me
end
mutex() click to toggle source
# File lib/facy/core.rb, line 99
def mutex
  @mutex ||= Mutex.new
end
set_me() click to toggle source
# File lib/facy/core.rb, line 33
def set_me
  @me = facebook_me
end
start(options={}) click to toggle source
# File lib/facy/core.rb, line 66
def start(options={})
  _init

  EM.run do
    Thread.start do
      while buf = Readline.readline(config[:prompt], true)
        execute(buf.strip)
      end
    end

    Thread.start do
      EM.add_periodic_timer(config[:stream_fetch_interval]) do
        facebook_stream_fetch
      end
    end

    Thread.start do
      EM.add_periodic_timer(config[:output_interval]) do
        periodic_output
      end
    end

    Thread.start do
      EM.add_periodic_timer(config[:notification_fetch_interval]) do
        facebook_notification_fetch
      end
    end

    Signal.trap("INT")  { stop_process }
    Signal.trap("TERM") { stop_process }
  end
end
stop_process() click to toggle source
# File lib/facy/core.rb, line 113
def stop_process
  puts "\nfacy going to stop..."
  Thread.new {
    EventMachine.stop
  }.join
end
sync(&block) click to toggle source
# File lib/facy/core.rb, line 103
def sync(&block)
  mutex.synchronize do
    block.call
  end
end