harrisj-nytimes-articles 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,3 @@
1
+ *.sw?
2
+ .DS_Store
3
+ coverage
data/HISTORY ADDED
@@ -0,0 +1,9 @@
1
+ HISTORY
2
+
3
+ = 0.4.0
4
+ - Changed facet format returned from search
5
+ - Changed default fields returned to all
6
+ - Added basic fields type
7
+
8
+ = 0.3.0
9
+ - Whoops, I never had a history file!
data/LICENSE ADDED
@@ -0,0 +1,24 @@
1
+ Copyright (c) 2008 Jacob Harris
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
22
+ THIS LICENSE ALSO APPLIES ONLY TO THE RUBY GEM FOR ACCESSING THE NYTIMES
23
+ ARTICLE SEARCH API AND DOES NOT SUPPLEMENT OR ABROGATE ANY TERMS OF USE
24
+ OF THE API AT THE NEW YORK TIMES.
data/README ADDED
@@ -0,0 +1,32 @@
1
+ = nytimes-articles
2
+
3
+ A simple GEM for interacting with the New York Times' Article Search API (http://developer.nytimes.com/docs/article_search_api)
4
+
5
+ == CREDITS
6
+
7
+ * Jacob Harris (http://open.blogs.nytimes.com/)
8
+ * Taylor Barstow (http://www.nytexplorer.com/)
9
+
10
+ == USAGE
11
+
12
+ require 'rubygems'
13
+ require 'nytimes-articles'
14
+
15
+ include Nytimes::Articles
16
+ Base.api_key = 'YOUR API KEY'
17
+ Article.search 'ice cream'
18
+ Article.search :title => '"ice cream"', :since => 3.weeks.ago, :fields => :basic
19
+ Article.search :author => 'Sewell Chan', :facets => [:geo, :person]
20
+
21
+ See the RDOC for Article#search for better instructions on usage.
22
+
23
+ == TODO
24
+
25
+ The following functionality is still to be implemented:
26
+
27
+ * Parsing multimedia and related_multimedia fields
28
+ * Coercion of some facet results into more suitable Ruby types (mostly Dates / Integer fields)
29
+ * Next / previous result set pagination (with memoization?)
30
+
31
+ == COPYRIGHT
32
+ Copyright (c) 2008 Jacob Harris. See LICENSE for details.
data/Rakefile ADDED
@@ -0,0 +1,54 @@
1
+ require 'rake'
2
+
3
+ begin
4
+ require 'jeweler'
5
+ Jeweler::Tasks.new do |s|
6
+ s.name = "nytimes-articles"
7
+ s.summary = %Q{A gem for accessing the NYTimes Article Search API}
8
+ s.email = "jharris@nytimes.com"
9
+ s.homepage = "http://github.com/harrisj/nytimes-articles"
10
+ s.description = "A gem for accessing the New York Times Article Search API"
11
+ s.authors = ["Jacob Harris"]
12
+ s.requirements << 'Unicode'
13
+ s.requirements << 'The htmlentities gem'
14
+ s.add_dependency('htmlentities')
15
+ end
16
+ rescue LoadError
17
+ puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
18
+ end
19
+
20
+ require 'rake/rdoctask'
21
+ Rake::RDocTask.new do |rdoc|
22
+ rdoc.rdoc_dir = 'rdoc'
23
+ rdoc.title = 'nytimes-articles'
24
+ rdoc.options << '--line-numbers' << '--inline-source'
25
+ rdoc.rdoc_files.include('README*')
26
+ rdoc.rdoc_files.include('lib/**/*.rb')
27
+ end
28
+
29
+ require 'rake/testtask'
30
+ Rake::TestTask.new(:test) do |t|
31
+ t.libs << 'lib' << 'test'
32
+ t.pattern = 'test/**/test_*.rb'
33
+ t.verbose = false
34
+ end
35
+
36
+ begin
37
+ require 'rcov/rcovtask'
38
+ Rcov::RcovTask.new do |t|
39
+ t.libs << 'test'
40
+ t.test_files = FileList['test/**/test_*.rb']
41
+ t.verbose = true
42
+ end
43
+ rescue LoadError
44
+ puts "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
45
+ end
46
+
47
+ begin
48
+ require 'cucumber/rake/task'
49
+ Cucumber::Rake::Task.new(:features)
50
+ rescue LoadError
51
+ puts "Cucumber is not available. In order to run features, you must: sudo gem install cucumber"
52
+ end
53
+
54
+ task :default => :test
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
- :minor: 3
3
2
  :patch: 0
4
3
  :major: 0
4
+ :minor: 4
@@ -0,0 +1,9 @@
1
+ Feature: something something
2
+ In order to something something
3
+ A user something something
4
+ something something something
5
+
6
+ Scenario: something something
7
+ Given inspiration
8
+ When I create a sweet new gem
9
+ Then everyone should see how awesome I am
File without changes
@@ -0,0 +1,13 @@
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../../lib')
2
+ require 'nytimes_articles'
3
+
4
+ require 'test/unit/assertions'
5
+
6
+ require 'test/unit/assertions'
7
+
8
+ World do |world|
9
+
10
+ world.extend(Test::Unit::Assertions)
11
+
12
+ world
13
+ end
@@ -1,6 +1,6 @@
1
1
  # should I be setting this?
2
2
  $KCODE = 'UTF8'
3
3
 
4
- %w(exceptions base facet thumbnail article result_set query).each do |f|
4
+ %w(exceptions base facet facet_hash thumbnail article result_set query).each do |f|
5
5
  require File.join(File.dirname(__FILE__), 'nytimes_articles', f)
6
6
  end
@@ -30,6 +30,10 @@ module Nytimes
30
30
  attr_reader :classifiers, :descriptions, :geo, :material_types, :organizations, :persons, :nytd_bylines, :nytd_descriptions, :nytd_geo, :nytd_organizations, :nytd_persons, :nytd_sections, :nytd_works_mentioned, :works_mentioned
31
31
  alias :people :persons
32
32
  alias :nytd_people :nytd_persons
33
+ alias :places :geo
34
+ alias :nytd_places :nytd_geo
35
+ alias :subjects :descriptions
36
+ alias :nytd_subjects :nytd_descriptions
33
37
 
34
38
  ##
35
39
  # Create a new Article from hash arguments. You really don't need to call this as Article instances are automatically returned from the API
@@ -183,13 +187,14 @@ module Nytimes
183
187
  #
184
188
  # == ARTICLE FIELDS
185
189
  #
186
- # The <tt>:fields</tt> parameter is used to indicate what fields are returned with each article from the search results. If not specified, only
187
- # the following fields are returned for each article: body, byline, date, title, and url. To return specific fields, any of the search fields
190
+ # The <tt>:fields</tt> parameter is used to indicate what fields are returned with each article from the search results. If not specified, all
191
+ # fields are returned. To return specific fields, any of the search fields
188
192
  # from above can be explicitly specified in a comma-delimited list, as well as the additional display-only (not searchable) fields below (these
189
193
  # are strings or symbols):
190
194
  #
191
195
  # * <tt>:all</tt> - return all fields for the article
192
196
  # * <tt>:none</tt> - display only the facet breakdown and no article results
197
+ # * <tt>:basic</tt> - return only the body, byline, date, title, and url
193
198
  # * <tt>:multimedia</tt> - return any related multimedia links for the article
194
199
  # * <tt>:thumbnail</tt> - return information for a related thumbnail image (if the article has one)
195
200
  # * <tt>:word_count</tt> - the word_count of the article.
@@ -226,9 +231,8 @@ module Nytimes
226
231
  end
227
232
 
228
233
  def self.facet_params(params, facet_name)
229
- return nil if params[facet_name].nil?
230
-
231
- params[facet_name].map {|f| Facet.new(facet_name, f, nil) }
234
+ #return nil if params[facet_name].nil?
235
+ params[facet_name] # .map {|f| Facet.new(facet_name, f, nil) }
232
236
  end
233
237
 
234
238
  def self.text_argument(field, argument)
@@ -273,10 +277,10 @@ module Nytimes
273
277
 
274
278
  def self.add_fields_param(out_params, in_params)
275
279
  case in_params[:fields]
276
- when nil
277
- # do nothing
278
- when :all
280
+ when nil, :all
279
281
  out_params['fields'] = ALL_FIELDS.join(',')
282
+ when :basic
283
+ # do nothing, the API will return basic URLs
280
284
  when :none
281
285
  out_params['fields'] = ' '
282
286
  unless out_params['facets']
@@ -0,0 +1,26 @@
1
+ module Nytimes
2
+ module Articles
3
+ class FacetHash
4
+ def initialize(hash)
5
+ @facets = hash
6
+ end
7
+
8
+ def [](key)
9
+ case key
10
+ when Symbol
11
+ key = Facet.symbol_name(key)
12
+ when String
13
+ # do nothing
14
+ else
15
+ raise ArgumentError, "Argument to facets hash must be a symbol or string name"
16
+ end
17
+
18
+ @facets[key]
19
+ end
20
+
21
+ def self.init_from_api(hash)
22
+ new(hash)
23
+ end
24
+ end
25
+ end
26
+ end
@@ -8,7 +8,7 @@ module Nytimes
8
8
  #
9
9
  class Query
10
10
  FIELDS = [:only_facets, :except_facets, :begin_date, :end_date, :since,
11
- :before, :fee, :has_thumbnail, :facets, :fields, :query, :offset] + Article::TEXT_FIELDS.map(&:to_sym)
11
+ :before, :fee, :has_thumbnail, :facets, :fields, :query, :offset] + Article::TEXT_FIELDS.map{|f| f.to_sym}
12
12
  FIELDS.each {|f| attr_accessor f}
13
13
 
14
14
  # Produce a hash which uniquely identifies this query
@@ -35,7 +35,7 @@ module Nytimes
35
35
  @offset = params[:offset]
36
36
  @total_results = params[:total_results]
37
37
  @results = params[:results]
38
- @facets = params[:facets]
38
+ @facets = FacetHash.init_from_api(params[:facets])
39
39
  end
40
40
 
41
41
  ##
@@ -0,0 +1,73 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{nytimes-articles}
5
+ s.version = "0.4.0"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Jacob Harris"]
9
+ s.date = %q{2009-07-23}
10
+ s.description = %q{A gem for accessing the New York Times Article Search API}
11
+ s.email = %q{jharris@nytimes.com}
12
+ s.extra_rdoc_files = [
13
+ "LICENSE",
14
+ "README"
15
+ ]
16
+ s.files = [
17
+ ".gitignore",
18
+ "HISTORY",
19
+ "LICENSE",
20
+ "README",
21
+ "Rakefile",
22
+ "VERSION.yml",
23
+ "features/nytimes_articles.feature",
24
+ "features/steps/nytimes_articles_steps.rb",
25
+ "features/support/env.rb",
26
+ "lib/nytimes_articles.rb",
27
+ "lib/nytimes_articles/article.rb",
28
+ "lib/nytimes_articles/base.rb",
29
+ "lib/nytimes_articles/exceptions.rb",
30
+ "lib/nytimes_articles/facet.rb",
31
+ "lib/nytimes_articles/facet_hash.rb",
32
+ "lib/nytimes_articles/query.rb",
33
+ "lib/nytimes_articles/result_set.rb",
34
+ "lib/nytimes_articles/thumbnail.rb",
35
+ "nytimes-articles.gemspec",
36
+ "script/console",
37
+ "test/nytimes/articles/test_article.rb",
38
+ "test/nytimes/articles/test_base.rb",
39
+ "test/nytimes/articles/test_facet.rb",
40
+ "test/nytimes/articles/test_query.rb",
41
+ "test/nytimes/articles/test_result_set.rb",
42
+ "test/nytimes/articles/test_thumbnail.rb",
43
+ "test/test_helper.rb"
44
+ ]
45
+ s.homepage = %q{http://github.com/harrisj/nytimes-articles}
46
+ s.rdoc_options = ["--charset=UTF-8"]
47
+ s.require_paths = ["lib"]
48
+ s.requirements = ["Unicode", "The htmlentities gem"]
49
+ s.rubygems_version = %q{1.3.5}
50
+ s.summary = %q{A gem for accessing the NYTimes Article Search API}
51
+ s.test_files = [
52
+ "test/nytimes/articles/test_article.rb",
53
+ "test/nytimes/articles/test_base.rb",
54
+ "test/nytimes/articles/test_facet.rb",
55
+ "test/nytimes/articles/test_query.rb",
56
+ "test/nytimes/articles/test_result_set.rb",
57
+ "test/nytimes/articles/test_thumbnail.rb",
58
+ "test/test_helper.rb"
59
+ ]
60
+
61
+ if s.respond_to? :specification_version then
62
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
63
+ s.specification_version = 3
64
+
65
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
66
+ s.add_runtime_dependency(%q<htmlentities>, [">= 0"])
67
+ else
68
+ s.add_dependency(%q<htmlentities>, [">= 0"])
69
+ end
70
+ else
71
+ s.add_dependency(%q<htmlentities>, [">= 0"])
72
+ end
73
+ end
data/script/console ADDED
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+ # File: script/console
3
+ irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
4
+
5
+ libs = " -r irb/completion"
6
+ # Perhaps use a console_lib to store any extra methods I may want available in the cosole
7
+ # libs << " -r #{File.dirname(__FILE__) + '/../lib/console_lib/console_logger.rb'}"
8
+ libs << " -r #{File.dirname(__FILE__) + '/../lib/nytimes_articles.rb'}"
9
+ puts "Loading nytimes_articles gem"
10
+ exec "#{irb} #{libs} --simple-prompt"
@@ -249,6 +249,13 @@ class TestNytimes::TestArticles::TestArticle < Test::Unit::TestCase
249
249
  end
250
250
 
251
251
  context ":fields" do
252
+ context "when not specified at all" do
253
+ should "pass all fields in a comma-delimited list" do
254
+ Article.expects(:invoke).with(has_entry('fields', Article::ALL_FIELDS.join(',')))
255
+ Article.search "FOO BAR", :fields => :all
256
+ end
257
+ end
258
+
252
259
  context "for the :all argument" do
253
260
  should "pass all fields in a comma-delimited list" do
254
261
  Article.expects(:invoke).with(has_entry('fields', Article::ALL_FIELDS.join(',')))
@@ -256,6 +263,13 @@ class TestNytimes::TestArticles::TestArticle < Test::Unit::TestCase
256
263
  end
257
264
  end
258
265
 
266
+ context "for the :basic argument" do
267
+ should "not send a fields argument to the api" do
268
+ Article.expects(:invoke).with(Not(has_key('fields')))
269
+ Article.search "FOO BAR", :fields => :basic
270
+ end
271
+ end
272
+
259
273
  context "for the :none argument" do
260
274
  should "request a blank space for the fields argument" do
261
275
  Article.expects(:invoke).with(has_entry('fields', ' '))
@@ -562,79 +576,9 @@ class TestNytimes::TestArticles::TestArticle < Test::Unit::TestCase
562
576
  assert_equal ARTICLE_API_HASH2['small_image_height'].to_i, thumbnail.height
563
577
  end
564
578
  end
579
+
580
+ context "array facets" do
581
+ should "have some tests for array facets"
582
+ end
565
583
  end
566
584
  end
567
-
568
-
569
- # abstract String X X A summary of the article, written by Times indexers
570
- # author String X X An author note, such as an e-mail address or short biography (compare byline)
571
- # body String X X A portion of the beginning of the article. Note: Only a portion of the article body is included in responses. But when you search against the body field, you search the full text of the article.
572
- # byline String X X The article byline, including the author's name
573
- # classifers_facet Array (Strings) X X Taxonomic classifiers that reflect Times content categories, such as Top/News/Sports
574
- # column_facet String X X A Times column title (if applicable), such as Weddings or Ideas & Trends
575
- # date Date X X The publication date in YYYYMMDD format
576
- # day_of_week_facet String X X The day of the week (e.g., Monday, Tuesday) the article was published (compare publication_day, which is the numeric date rather than the day of the week)
577
- # des_facet Array (Strings) X X Descriptive subject terms assigned by Times indexers
578
- #
579
- # When used in a request, values must be UPPERCASE
580
- # desk_facet
581
- # desk_facet String X X The Times desk that produced the story (e.g., Business/Financial Desk)
582
- # fee Boolean X X Indicates whether users must pay a fee to retrieve the full article
583
- # geo_facet Array (Strings) X X Standardized names of geographic locations, assigned by Times indexers
584
- #
585
- # When used in a request, values must be UPPERCASE
586
- # lead_paragraph String X X The first paragraph of the article (as it appeared in the printed newspaper)
587
- # material_type_facet Array (Strings) X X The general article type, such as Biography, Editorial or Review
588
- # multimedia Array X Associated multimedia features, including URLs (see also the related_multimedia field)
589
- # nytd_byline_facet String X X The article byline, formatted for NYTimes.com
590
- # nytd_des_facet Array (Strings) X X Descriptive subject terms, assigned for use on NYTimes.com (to get standardized terms, use the TimesTags API)
591
- #
592
- # When used in a request, values must be Mixed Case
593
- # nytd_geo_facet Array (Strings) X X Standardized names of geographic locations, assigned for use on NYTimes.com (to get standardized terms, use the TimesTags API)
594
- #
595
- # When used in a request, values must be Mixed Case
596
- # nytd_lead_paragraph String X X The first paragraph of the article (as it appears on NYTimes.com)
597
- # nytd_org_facet Array (Strings) X X Standardized names of organizations, assigned for use on NYTimes.com (to get standardized terms, use the TimesTags API)
598
- #
599
- # When used in a request, values must be Mixed Case
600
- # nytd_per_facet Array (Strings) X X Standardized names of people, assigned for use on NYTimes.com (to get standardized terms, use the TimesTags API)
601
- #
602
- # When used in a request, values must be Mixed Case
603
- # nytd_section_facet Array (Strings) X X The section the article appears in (on NYTimes.com)
604
- # nytd_title String X X The article title on NYTimes.com (this field may or may not match the title field; headlines may be shortened and edited for the Web)
605
- # nytd_works_mentioned
606
- # _facet String X X Literary works mentioned (titles formatted for use on NYTimes.com)
607
- # org_facet Array (Strings) X X Standardized names of organizations, assigned by Times indexers
608
- #
609
- # When used in a request, values must be UPPERCASE
610
- # page_facet String X X The page the article appeared on (in the printed paper)
611
- # per_facet Array (Strings) X X Standardized names of people, assigned by Times indexers
612
- #
613
- # When used in a request, values must be UPPERCASE
614
- # publication_day
615
- # publication_month
616
- # publication_year Date
617
- # Date
618
- # Date X
619
- # X
620
- # X X
621
- # x
622
- # x The day (DD), month (MM) and year (YYYY) segments of date, separated for use as facets
623
- # related_multimedia Boolean X X Indicates whether multimedia features are associated with this article. Additional metadata for each related multimedia feature appears in the multimedia array.
624
- # section_page_facet String X X The full page number of the printed article (e.g., D00002)
625
- # small_image
626
- # small_image_url
627
- # small_image_height
628
- # small_image_width Boolean
629
- # String
630
- # Integer
631
- # Integer X X
632
- # X
633
- # X
634
- # X The small_image field indicates whether a smaller thumbnail image is associated with the article. The small_image_url field provides the URL of the image on NYTimes.com. The small_image_height and small_image_width fields provide the image dimensions.
635
- # source_facet String X X The originating body (e.g., AP, Dow Jones, The New York Times)
636
- # text String X The text field consists of title + byline + body (combined in an OR search) and is the default field for keyword searches. For more information, see Constructing a Search Query.
637
- # title String X X The article title (headline); corresponds to the headline that appeared in the printed newspaper
638
- # url String X X The URL of the article on NYTimes.com
639
- # word_count Integer X The full article word count
640
- # works_mentioned_facet
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: harrisj-nytimes-articles
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jacob Harris
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-03-03 00:00:00 -08:00
12
+ date: 2009-07-23 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -28,21 +28,30 @@ executables: []
28
28
 
29
29
  extensions: []
30
30
 
31
- extra_rdoc_files: []
32
-
31
+ extra_rdoc_files:
32
+ - LICENSE
33
+ - README
33
34
  files:
35
+ - .gitignore
36
+ - HISTORY
37
+ - LICENSE
38
+ - README
39
+ - Rakefile
34
40
  - VERSION.yml
35
- - lib/nytimes_articles
41
+ - features/nytimes_articles.feature
42
+ - features/steps/nytimes_articles_steps.rb
43
+ - features/support/env.rb
44
+ - lib/nytimes_articles.rb
36
45
  - lib/nytimes_articles/article.rb
37
46
  - lib/nytimes_articles/base.rb
38
47
  - lib/nytimes_articles/exceptions.rb
39
48
  - lib/nytimes_articles/facet.rb
49
+ - lib/nytimes_articles/facet_hash.rb
40
50
  - lib/nytimes_articles/query.rb
41
51
  - lib/nytimes_articles/result_set.rb
42
52
  - lib/nytimes_articles/thumbnail.rb
43
- - lib/nytimes_articles.rb
44
- - test/nytimes
45
- - test/nytimes/articles
53
+ - nytimes-articles.gemspec
54
+ - script/console
46
55
  - test/nytimes/articles/test_article.rb
47
56
  - test/nytimes/articles/test_base.rb
48
57
  - test/nytimes/articles/test_facet.rb
@@ -50,11 +59,10 @@ files:
50
59
  - test/nytimes/articles/test_result_set.rb
51
60
  - test/nytimes/articles/test_thumbnail.rb
52
61
  - test/test_helper.rb
53
- has_rdoc: true
62
+ has_rdoc: false
54
63
  homepage: http://github.com/harrisj/nytimes-articles
55
64
  post_install_message:
56
65
  rdoc_options:
57
- - --inline-source
58
66
  - --charset=UTF-8
59
67
  require_paths:
60
68
  - lib
@@ -76,7 +84,13 @@ requirements:
76
84
  rubyforge_project:
77
85
  rubygems_version: 1.2.0
78
86
  signing_key:
79
- specification_version: 2
87
+ specification_version: 3
80
88
  summary: A gem for accessing the NYTimes Article Search API
81
- test_files: []
82
-
89
+ test_files:
90
+ - test/nytimes/articles/test_article.rb
91
+ - test/nytimes/articles/test_base.rb
92
+ - test/nytimes/articles/test_facet.rb
93
+ - test/nytimes/articles/test_query.rb
94
+ - test/nytimes/articles/test_result_set.rb
95
+ - test/nytimes/articles/test_thumbnail.rb
96
+ - test/test_helper.rb