Class: TimesTopics
- Inherits:
-
Object
- Object
- TimesTopics
- Defined in:
- lib/times_topics.rb
Constant Summary collapse
- BASE_URI =
'http://topics.nytimes.com/top/reference/timestopics/'
Instance Attribute Summary collapse
-
#num_results ⇒ Object
Returns the value of attribute num_results.
-
#query ⇒ Object
Returns the value of attribute query.
-
#related_results ⇒ Object
Returns the value of attribute related_results.
-
#result ⇒ Object
Returns the value of attribute result.
-
#tag ⇒ Object
Returns the value of attribute tag.
-
#type ⇒ Object
Returns the value of attribute type.
-
#url ⇒ Object
Returns the value of attribute url.
Instance Method Summary collapse
- #build_organization_url(result) ⇒ Object
- #build_person_url(result) ⇒ Object
- #filter(long_form) ⇒ Object
-
#initialize(query, type = 'person') ⇒ TimesTopics
constructor
A new instance of TimesTopics.
- #page_exists? ⇒ Boolean
- #related_result_urls ⇒ Object
Constructor Details
#initialize(query, type = 'person') ⇒ TimesTopics
Returns a new instance of TimesTopics.
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/times_topics.rb', line 7 def initialize(query, type = 'person') @type = type @query = query if @result = TimesTags.search(query, type) @num_results = @result["num_results"] if @num_results > 0 top_result = @result["results"].shift @tag = top_result case @type when /person/ @url = build_person_url(top_result) when /organization/ @url = build_organization_url(top_result) end if @result["num_results"] > 1 @related_results = @result["results"] end end end end |
Instance Attribute Details
#num_results ⇒ Object
Returns the value of attribute num_results.
5 6 7 |
# File 'lib/times_topics.rb', line 5 def num_results @num_results end |
#query ⇒ Object
Returns the value of attribute query.
5 6 7 |
# File 'lib/times_topics.rb', line 5 def query @query end |
#related_results ⇒ Object
Returns the value of attribute related_results.
5 6 7 |
# File 'lib/times_topics.rb', line 5 def @related_results end |
#result ⇒ Object
Returns the value of attribute result.
5 6 7 |
# File 'lib/times_topics.rb', line 5 def result @result end |
#tag ⇒ Object
Returns the value of attribute tag.
5 6 7 |
# File 'lib/times_topics.rb', line 5 def tag @tag end |
#type ⇒ Object
Returns the value of attribute type.
5 6 7 |
# File 'lib/times_topics.rb', line 5 def type @type end |
#url ⇒ Object
Returns the value of attribute url.
5 6 7 |
# File 'lib/times_topics.rb', line 5 def url @url end |
Instance Method Details
#build_organization_url(result) ⇒ Object
72 73 74 75 76 77 |
# File 'lib/times_topics.rb', line 72 def build_organization_url(result) # http://topics.nytimes.com/top/reference/timestopics/organizations/a/al_qaeda/index.html topic_name = result.sub(filter('organization'), "").strip.gsub(/\s/, '_').downcase index_char = result[0,1].downcase BASE_URI + 'organizations/' + index_char + '/' + topic_name + '/index.html' end |
#build_person_url(result) ⇒ Object
65 66 67 68 69 70 |
# File 'lib/times_topics.rb', line 65 def build_person_url(result) # http://topics.nytimes.com/top/reference/timestopics/people/b/osama_bin_laden/index.html topic_name = result.sub(filter('person'), "").split(',').map(&:strip).reverse.join('_').gsub(/\s/, '_').downcase index_char = result[0,1].downcase BASE_URI + 'people/' + index_char + '/' + topic_name + '/index.html' end |
#filter(long_form) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/times_topics.rb', line 30 def filter(long_form) case long_form when /org/i "(Org)" when /people|person/i "(Per)" when /geo/i "(Geo)" when /des/i "(Des)" end end |
#page_exists? ⇒ Boolean
43 44 45 46 47 48 49 50 51 |
# File 'lib/times_topics.rb', line 43 def page_exists? return false if @url.nil? parsed_url = URI.parse(@url) request = Net::HTTP::Get.new(parsed_url.path) result = Net::HTTP.start(parsed_url.host, parsed_url.port) {|http| http.request(request) } result.is_a?(Net::HTTPOK) end |
#related_result_urls ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/times_topics.rb', line 53 def return [] if @related_results.nil? || @related_results.empty? @related_results.map do |result| case @type when /person/i build_person_url(result) when /organization/ build_organization_url(result) end end end |