faroo 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/faroo.rb +71 -0
  2. metadata +45 -0
@@ -0,0 +1,71 @@
1
+ require 'rubygems'
2
+
3
+ require 'cgi'
4
+ require 'json'
5
+ require 'open-uri'
6
+
7
+
8
+ FarooResult = Struct.new :title, :abstract, :url, :image_url, :domain, :author,
9
+ :news, :votes, :date, :related
10
+
11
+
12
+ class Faroo
13
+ # API for Faroo search engine
14
+ #
15
+ # Example:
16
+ # >> Faroo.new('[Referer]', ['Num results']).search('nano fibers')
17
+ # => [ #<ClioResult:...>, ... ]
18
+ #
19
+ # Arguments:
20
+ # referer: (String)
21
+ # num_results: (Integer+)
22
+
23
+ API_PATH = 'http://www.faroo.com/instant.json?'
24
+
25
+ attr_accessor :referer, :num_results
26
+
27
+ def initialize(referer='', num_results=100)
28
+ @referer = referer
29
+ @num_results = num_results
30
+ end
31
+
32
+ def web(query, start=1, language='en')
33
+ search(query, 'web', start, language)
34
+ end
35
+
36
+ def news(query, start=1, language='en')
37
+ search(query, 'news', start, language)
38
+ end
39
+
40
+ def search(query, src, start, language)
41
+ # API Parameters
42
+ # q=query
43
+ # start=start
44
+ # length=length
45
+ # l=language (en, de, zh)
46
+ # src=source (web, news)
47
+
48
+ params = "start=#{start}&length=#{@num_results}&q=#{CGI.escape(query)}"
49
+ params += "&src=#{src}&l=#{language}"
50
+ response = open(API_PATH + params, { 'Referer' => @referer })
51
+ return nil if response.class.superclass == Net::HTTPServerError
52
+ doc = JSON.load(response)
53
+
54
+ return [] if doc['length'] == 0
55
+
56
+ doc['results'].map do |result|
57
+ FarooResult.new(
58
+ result['title'],
59
+ result['kwic'],
60
+ result['url'],
61
+ result['iurl'],
62
+ result['domain'],
63
+ result['author'],
64
+ result['news'],
65
+ result['votes'],
66
+ result['date'],
67
+ result['related']
68
+ )
69
+ end
70
+ end
71
+ end
metadata ADDED
@@ -0,0 +1,45 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: faroo
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Peter Lubell-Doughtie
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-06-24 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: API for Faroo
15
+ email: peter@helioid.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/faroo.rb
21
+ homepage: http://www.helioid.com/
22
+ licenses: []
23
+ post_install_message:
24
+ rdoc_options: []
25
+ require_paths:
26
+ - lib
27
+ required_ruby_version: !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ requirements: []
40
+ rubyforge_project:
41
+ rubygems_version: 1.8.24
42
+ signing_key:
43
+ specification_version: 3
44
+ summary: API for Faroo
45
+ test_files: []