FreedomCoder-esearchy 0.0.14 → 0.0.15

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -43,7 +43,7 @@ For thouse who want to integrate this to their application you can use it in "th
43
43
 
44
44
  or in the more classic way in which you can create an Esearchy objetc and work on it
45
45
 
46
- domain = Esearchy.new :query => "domain.com", :maxhits => 500
46
+ domain = Esearchy.new :query => "domain.com", :maxhits => 500, :engines => [:Google,:Yahoo]
47
47
  domain.search
48
48
  domain.save_to_file "~/emails.txt"
49
49
 
data/lib/esearchy.rb CHANGED
@@ -15,14 +15,23 @@ class ESearchy
15
15
  ESearchy::LOG.file = value
16
16
  end
17
17
 
18
- DEFAULT_ENGINES = {"Google" => Google, "Bing" => Bing, "Yahoo" => Yahoo,
19
- "PGP" => PGP, "LinkedIn" => LinkedIn }
18
+ def eng(arr)
19
+ hsh = {}; arr.each {|e| hsh[e] = instance_eval "#{e}"}; hsh
20
+ end
21
+
22
+ DEFAULT_ENGINES = [:Google, :Bing, :Yahoo, :PGP, :LinkedIn]
20
23
 
21
24
  def initialize(options={}, &block)
22
25
  @query = options[:query]
23
26
  @depth_search = options[:depth] || true
24
- @maxhits = options[:maxhits]
25
- @engines = options[:engines] || DEFAULT_ENGINES
27
+ @maxhits = options[:maxhits] || 0
28
+ @engines = options[:engines] ? eng(options[:engines]) :
29
+ { :Google => Google,
30
+ :Bing => Bing,
31
+ :Yahoo => Yahoo,
32
+ :PGP => PGP,
33
+ :LinkedIn => LinkedIn }
34
+
26
35
  @engines.each {|n,e| @engines[n] = e.new(@maxhits)}
27
36
  @threads = Array.new
28
37
  block.call(self) if block_given?
@@ -60,32 +69,32 @@ class ESearchy
60
69
  end
61
70
 
62
71
  def yahoo_key=(value)
63
- @engines['Yahoo'].appid = value
72
+ @engines[:Yahoo].appid = value
64
73
  end
65
74
 
66
75
  def bing_key=(value)
67
- @engines['Bing'].appid = value
76
+ @engines[:Bing].appid = value
68
77
  end
69
78
 
70
79
  def linkedin_credentials(user, pass)
71
- @engines['LinkedIn'].username = user
72
- @engines['LinkedIn'].password = pass
80
+ @engines[:LinkedIn].username = user
81
+ @engines[:LinkedIn].password = pass
73
82
  end
74
83
  alias_method :linkedin_credentials=, :linkedin_credentials
75
84
 
76
85
  def company_name(company)
77
- @engines['LinkedIn'].company_name = company
86
+ @engines[:LinkedIn].company_name = company
78
87
  end
79
88
  alias_method :company_name=, :company_name
80
89
 
81
90
  def search_engine(key, value)
82
91
  if [:Google, :Bing, :Yahoo, :PGP, :LinkedIn, :GoogleGroups].include?(key)
83
92
  if value == true
84
- unless @engines[key.to_s]
85
- @engines[key.to_s] = instance_eval "#{key}.new(@maxhits)"
93
+ unless @engines[key]
94
+ @engines[key] = instance_eval "#{key}.new(@maxhits)"
86
95
  end
87
96
  elsif value == false
88
- @engines.delete(key.to_s)
97
+ @engines.delete(key)
89
98
  end
90
99
  else
91
100
  raise(ArgumentError, "No plugin with that Key")
data/lib/esearchy/bing.rb CHANGED
@@ -5,12 +5,12 @@ local_path = "#{File.dirname(__FILE__)}/"
5
5
  class Bing
6
6
  include Searchy
7
7
 
8
- def initialize(maxhits = nil, appid=nil, start=nil)
8
+ def initialize(maxhits=0, appid=nil, start=0)
9
9
  @appid = appid || Keys::BING_APP_KEY
10
- @start = start || 0
10
+ @start = start
11
11
  @emails = []
12
12
  @threads = []
13
- @totalhits = maxhits || 0
13
+ @totalhits = maxhits
14
14
  @r_urls = Queue.new
15
15
  @r_docs = Queue.new
16
16
  @r_pdfs = Queue.new
@@ -5,9 +5,9 @@ local_path = "#{File.dirname(__FILE__)}/"
5
5
  class Google
6
6
  include Searchy
7
7
 
8
- def initialize(maxhits = nil, start = nil)
9
- @start = start || 0
10
- @totalhits = maxhits || 0
8
+ def initialize(maxhits = 0, start = 0)
9
+ @start = start
10
+ @totalhits = maxhits
11
11
  @emails = []
12
12
  @r_urls = Queue.new
13
13
  @r_docs = Queue.new
@@ -5,8 +5,8 @@ local_path = "#{File.dirname(__FILE__)}/"
5
5
  class LinkedIn
6
6
  include Searchy
7
7
 
8
- def initialize(maxhits=nil)
9
- @totalhits = maxhits || 0
8
+ def initialize(maxhits = 0)
9
+ @totalhits = maxhits
10
10
  @pages = 1
11
11
  @emails = []
12
12
  @lock = Mutex.new
data/lib/esearchy/pgp.rb CHANGED
@@ -1,12 +1,11 @@
1
1
  class PGP
2
2
  include Searchy
3
3
 
4
- def initialize(maxhits=nil)
4
+ def initialize(maxhits=0)
5
+ @totalhits = maxhits
5
6
  @emails = []
6
- @lock = Mutex.new
7
- @threads = []
8
7
  end
9
- attr_accessor :emails
8
+
10
9
  def search(query)
11
10
  @query = query
12
11
  http = Net::HTTP.new("pgp.mit.edu",11371)
@@ -26,4 +25,13 @@ class PGP
26
25
  ESearchy::LOG.puts "Error: Something went wrong with the HTTP request"
27
26
  end
28
27
  end
28
+
29
+ def emails
30
+ maxhits == 0 ? emails : emails[0..@totalhits]
31
+ end
32
+
33
+ def emails=(value)
34
+ emails = value
35
+ end
36
+
29
37
  end
@@ -105,8 +105,10 @@ module Searchy
105
105
  if File.exists?("C:\\antiword\\antiword.exe")
106
106
  search_emails(`C:\\antiword\\antiword.exe "#{name}" -f -s`)
107
107
  else
108
- ESearchy::LOG.puts "You need to install either Microsoft Word or Antiword
109
- to parse .docs"
108
+ # This G h e t t o but, for now it works on emails
109
+ # that do not contain Capital letters:)
110
+ ESearchy::LOG.puts "M$ Word|Antiword are not installed. Using the Ghetto way."
111
+ search_emails( File.open(name).readlines[0..19].to_s )
110
112
  end
111
113
  end
112
114
  elsif RUBY_PLATFORM =~ /linux|darwin/
@@ -116,7 +118,10 @@ module Searchy
116
118
  File.exists?("/opt/local/bin/antiword")
117
119
  search_emails(`antiword "#{name}" -f -s`)
118
120
  else
119
- ESearchy::LOG.puts "You need to install Antiword to parse .docs"
121
+ # This G h e t t o but, for now it works on emails
122
+ # that do not contain Capital letters:)
123
+ ESearchy::LOG.puts "Antiword is not installed. Using the Ghetto way."
124
+ search_emails( File.open(name).readlines[0..19].to_s )
120
125
  end
121
126
  rescue
122
127
  ESearchy::LOG.puts "Something went wrong parsing the .doc\n"
@@ -5,10 +5,10 @@ local_path = "#{File.dirname(__FILE__)}/"
5
5
  class Yahoo
6
6
  include Searchy
7
7
 
8
- def initialize(maxhits = nil, appid=nil, start=nil )
8
+ def initialize(maxhits=0, appid = nil, start=0)
9
9
  @appid = appid || Keys::YAHOO_APP_KEY
10
- @start = start || 0
11
- @totalhits = maxhits || 0
10
+ @start = start
11
+ @totalhits = maxhits
12
12
  @emails = []
13
13
  @r_urls = Queue.new
14
14
  @r_docs = Queue.new
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: FreedomCoder-esearchy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.14
4
+ version: 0.0.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matias P. Brutti