Module: Fletcher

Defined in:
lib/fletcher.rb,
lib/fletcher/data.rb,
lib/fletcher/model.rb,
lib/fletcher/string.rb,
lib/fletcher/nokogiri.rb,
lib/fletcher/cli/utility.rb,
lib/fletcher/models/base.rb,
lib/fletcher/models/ebay.rb,
lib/fletcher/models/etsy.rb,
lib/fletcher/models/steam.rb,
lib/fletcher/models/amazon.rb,
lib/fletcher/models/newegg.rb,
lib/fletcher/models/playcom.rb,
lib/fletcher/models/gamecouk.rb,
lib/fletcher/models/thinkgeek.rb,
lib/fletcher/models/googleshopping.rb

Defined Under Namespace

Modules: CLI, Model, Nokogiri, String Classes: Data

Constant Summary collapse

LIBRARY_PATH =
File.join(File.dirname(__FILE__), 'fletcher')
CLI_PATH =
File.join(LIBRARY_PATH, 'cli')
MODEL_PATH =
File.join(LIBRARY_PATH, 'models')
USER_AGENT =

User Agent (Chrome)

"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36"

Class Method Summary collapse

Class Method Details

.fetch(url) ⇒ Object

Fetch information based on url



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

def fetch(url) 
  # Look for model based on url
  model_class = Fletcher::Model.identify(url)

  # Use Base class for fallback
  model_class = Fletcher::Model::Base unless model_class
  
  data = Fletcher::Data.read(url)

  product = model_class.new
  product.parse(data)

  # Save url
  product.url = url
  
  return product
end

.model_classesObject

get array of model classes

Fletcher.model_classes = [Amazon, Ebay, ThinkGeek]


60
61
62
63
64
65
66
67
# File 'lib/fletcher.rb', line 60

def model_classes
  models = Array.new
  Dir[File.join(File.dirname(__FILE__), "fletcher", "models", "*.rb")].each do |f|
    filename = File.basename(f, ".rb")
    models << ["Fletcher", "Model", filename.camelize].join("::").constantize unless filename == "base"
  end 
  return models
end

.modelsObject

get array of models syms



49
50
51
52
53
54
55
56
# File 'lib/fletcher.rb', line 49

def models
  models = Array.new
  Dir[File.join(File.dirname(__FILE__), "fletcher", "models", "*.rb")].each do |f|
    model = File.basename(f, ".rb").to_sym
    models << model unless model == :base
  end 
  return models
end

.rootObject

Get gem root directory



44
45
46
# File 'lib/fletcher.rb', line 44

def root
  File.expand_path("../..", __FILE__)
end

.versionObject

Get gem version



39
40
41
# File 'lib/fletcher.rb', line 39

def version
  File.read(File.join(root, "VERSION"))
end