Class: Newssearch

Inherits:
Object
  • Object
show all
Defined in:
lib/newsbing.rb

Overview

Before proceeding you will need an account key, which can be obtained by registering an accout at windows.microsoft.com/en-US/windows-live/sign-in-what-is-microsoft-account

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(account_key, num_results) ⇒ Newssearch

Create a new object of the bing class

>> bing = Bing.new('your_account_key_goes_here', 10) 
=> #<Bing:0x9d9b9f4 @account_key="your_account_key", @num_results=10>

Arguments:

account_key: (String)
num_results: (Integer)


13
14
15
16
# File 'lib/newsbing.rb', line 13

def initialize(, num_results)
	@account_key = 
	@num_results = num_results
end

Instance Attribute Details

#account_keyObject

Returns the value of attribute account_key.



18
19
20
# File 'lib/newsbing.rb', line 18

def 
  @account_key
end

#num_resultsObject

Returns the value of attribute num_results.



18
19
20
# File 'lib/newsbing.rb', line 18

def num_results
  @num_results
end

Instance Method Details

#hit_api(search_term, skip, top) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/newsbing.rb', line 39

def hit_api(search_term, skip, top)
	  user = ''
	  result_set = []
 		  web_search_url = "https://api.datamarket.azure.com/Bing/Search/v1/News?"
	  query_string = '$format=json&Query='
	  query_portion = URI.encode_www_form_component('\'' + search_term + '\'')
	  params = "&$top=#{top.to_s}&$skip=#{skip}"
	  full_address = web_search_url + query_string + query_portion + params
	  uri = URI(full_address)
	  req = Net::HTTP::Get.new(uri.request_uri)
	  req.basic_auth user, 

	  res = Net::HTTP.start(uri.hostname, uri.port, :use_ssl => uri.scheme == 'https'){|http|
 		  	  http.request(req)
	  }
	  body = JSON.parse(res.body)
	  result_set = body["d"]["results"]	
	  
end

#search(search_term) ⇒ Object



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

def search(search_term )
  results = []
  offset = 15 # MS SPECIFIC CONSTANT
	  modulus = @num_results % offset
  results = []
  skip = 0
	    until @num_results < offset
		results << hit_api(search_term, skip, offset)
		@num_results = @num_results - offset
        skip = skip + offset
	    end
  results << hit_api(search_term, skip, modulus) 
  return results.flatten




end