eshopworks-rboss 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +3 -0
 - data/Manifest.txt +2 -0
 - data/TODO.txt +1 -1
 - data/lib/boss/api.rb +10 -11
 - data/lib/boss/config.rb +2 -0
 - data/lib/boss/result/base.rb +2 -0
 - data/lib/boss/result_collection.rb +26 -0
 - data/lib/boss/result_factory.rb +9 -9
 - data/lib/boss/version.rb +1 -1
 - data/lib/boss.rb +1 -0
 - data/rboss.gemspec +2 -2
 - data/spec/boss/api_spec.rb +17 -17
 - data/spec/boss/config_spec.rb +2 -2
 - data/spec/boss/result_collection_spec.rb +23 -0
 - data/spec/boss/result_factory_spec.rb +21 -13
 - metadata +3 -1
 
    
        data/History.txt
    CHANGED
    
    
    
        data/Manifest.txt
    CHANGED
    
    | 
         @@ -22,11 +22,13 @@ lib/boss/result/image.rb 
     | 
|
| 
       22 
22 
     | 
    
         
             
            lib/boss/result/news.rb
         
     | 
| 
       23 
23 
     | 
    
         
             
            lib/boss/result/spell.rb
         
     | 
| 
       24 
24 
     | 
    
         
             
            lib/boss/result/web.rb
         
     | 
| 
      
 25 
     | 
    
         
            +
            lib/boss/result_collection.rb
         
     | 
| 
       25 
26 
     | 
    
         
             
            lib/boss/result_factory.rb
         
     | 
| 
       26 
27 
     | 
    
         
             
            lib/boss/version.rb
         
     | 
| 
       27 
28 
     | 
    
         
             
            rboss.gemspec
         
     | 
| 
       28 
29 
     | 
    
         
             
            spec/boss/api_spec.rb
         
     | 
| 
       29 
30 
     | 
    
         
             
            spec/boss/config_spec.rb
         
     | 
| 
      
 31 
     | 
    
         
            +
            spec/boss/result_collection_spec.rb
         
     | 
| 
       30 
32 
     | 
    
         
             
            spec/boss/result_factory_spec.rb
         
     | 
| 
       31 
33 
     | 
    
         
             
            spec/spec.opts
         
     | 
| 
       32 
34 
     | 
    
         
             
            spec/spec_helper.rb
         
     | 
    
        data/TODO.txt
    CHANGED
    
    
    
        data/lib/boss/api.rb
    CHANGED
    
    | 
         @@ -2,7 +2,6 @@ require 'net/http' 
     | 
|
| 
       2 
2 
     | 
    
         
             
            require 'rexml/document'
         
     | 
| 
       3 
3 
     | 
    
         
             
            require 'uri'
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
            require 'ostruct'
         
     | 
| 
       6 
5 
     | 
    
         
             
            require 'cgi'
         
     | 
| 
       7 
6 
     | 
    
         | 
| 
       8 
7 
     | 
    
         | 
| 
         @@ -29,23 +28,23 @@ module Boss 
     | 
|
| 
       29 
28 
     | 
    
         
             
                end
         
     | 
| 
       30 
29 
     | 
    
         | 
| 
       31 
30 
     | 
    
         
             
                def search(term, *conditions, &block)
         
     | 
| 
       32 
     | 
    
         
            -
                   search_boss 
     | 
| 
      
 31 
     | 
    
         
            +
                   search_boss(term, SearchType::WEB, *conditions, &block)
         
     | 
| 
       33 
32 
     | 
    
         
             
                end
         
     | 
| 
       34 
33 
     | 
    
         | 
| 
       35 
34 
     | 
    
         
             
                def search_images(term, *conditions, &block)
         
     | 
| 
       36 
     | 
    
         
            -
                  search_boss 
     | 
| 
      
 35 
     | 
    
         
            +
                  search_boss(term, SearchType::IMAGES, *conditions, &block)
         
     | 
| 
       37 
36 
     | 
    
         
             
                end
         
     | 
| 
       38 
37 
     | 
    
         | 
| 
       39 
38 
     | 
    
         
             
                def search_news(term, *conditions, &block)
         
     | 
| 
       40 
     | 
    
         
            -
                  search_boss 
     | 
| 
      
 39 
     | 
    
         
            +
                  search_boss(term, SearchType::NEWS, *conditions, &block)
         
     | 
| 
       41 
40 
     | 
    
         
             
                end
         
     | 
| 
       42 
41 
     | 
    
         | 
| 
       43 
42 
     | 
    
         
             
                def search_web(term, *conditions, &block)
         
     | 
| 
       44 
     | 
    
         
            -
                  search_boss 
     | 
| 
      
 43 
     | 
    
         
            +
                  search_boss(term, SearchType::WEB, *conditions, &block)
         
     | 
| 
       45 
44 
     | 
    
         
             
                end
         
     | 
| 
       46 
45 
     | 
    
         | 
| 
       47 
46 
     | 
    
         
             
                def search_spelling(term, *conditions, &block)
         
     | 
| 
       48 
     | 
    
         
            -
                  search_boss 
     | 
| 
      
 47 
     | 
    
         
            +
                  search_boss(term, SearchService::SPELL, *conditions, &block)
         
     | 
| 
       49 
48 
     | 
    
         
             
                end
         
     | 
| 
       50 
49 
     | 
    
         | 
| 
       51 
50 
     | 
    
         
             
                private
         
     | 
| 
         @@ -65,15 +64,15 @@ module Boss 
     | 
|
| 
       65 
64 
     | 
    
         
             
                  raise InvalidFormat unless (FORMATS.include? config.format)
         
     | 
| 
       66 
65 
     | 
    
         
             
                  raise InvalidConfig unless (config.count>0)
         
     | 
| 
       67 
66 
     | 
    
         | 
| 
       68 
     | 
    
         
            -
                  request = 
     | 
| 
       69 
     | 
    
         
            -
                  response = Net::HTTP.get_response 
     | 
| 
      
 67 
     | 
    
         
            +
                  request =  URI.parse(build_request_url(terms, search_type, config))
         
     | 
| 
      
 68 
     | 
    
         
            +
                  response = Net::HTTP.get_response(request)
         
     | 
| 
       70 
69 
     | 
    
         | 
| 
       71 
70 
     | 
    
         
             
                  case response.code
         
     | 
| 
       72 
71 
     | 
    
         
             
                  when "200"
         
     | 
| 
       73 
72 
     | 
    
         
             
                    data = response.body
         
     | 
| 
       74 
73 
     | 
    
         | 
| 
       75 
74 
     | 
    
         
             
                    if format_as_objects
         
     | 
| 
       76 
     | 
    
         
            -
                      search_results = ResultFactory.build 
     | 
| 
      
 75 
     | 
    
         
            +
                      search_results = ResultFactory.build(search_type, data)
         
     | 
| 
       77 
76 
     | 
    
         
             
                    else
         
     | 
| 
       78 
77 
     | 
    
         
             
                      search_results = data
         
     | 
| 
       79 
78 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -90,9 +89,9 @@ module Boss 
     | 
|
| 
       90 
89 
     | 
    
         
             
                end
         
     | 
| 
       91 
90 
     | 
    
         | 
| 
       92 
91 
     | 
    
         
             
                protected
         
     | 
| 
       93 
     | 
    
         
            -
                def  
     | 
| 
      
 92 
     | 
    
         
            +
                def build_request_url(terms, search_type, config)
         
     | 
| 
       94 
93 
     | 
    
         
             
                  #We could use URI.encode but it leaves things like ? unencoded which fails search.
         
     | 
| 
       95 
     | 
    
         
            -
                  encoded_terms = CGI.escape 
     | 
| 
      
 94 
     | 
    
         
            +
                  encoded_terms = CGI.escape(terms)
         
     | 
| 
       96 
95 
     | 
    
         
             
                  # puts "#{@endpoint}#{search_type}/#{boss_version}/#{encoded_terms}?appid=#{@app_id}#{config.to_url}"
         
     | 
| 
       97 
96 
     | 
    
         
             
                  "#{@endpoint}#{search_type}/#{boss_version}/#{encoded_terms}?appid=#{@app_id}#{config.to_url}"
         
     | 
| 
       98 
97 
     | 
    
         
             
                end
         
     | 
    
        data/lib/boss/config.rb
    CHANGED
    
    
    
        data/lib/boss/result/base.rb
    CHANGED
    
    
| 
         @@ -0,0 +1,26 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Boss
         
     | 
| 
      
 2 
     | 
    
         
            +
              class ResultCollection 
         
     | 
| 
      
 3 
     | 
    
         
            +
                include Enumerable
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
                def initialize(search_data)
         
     | 
| 
      
 6 
     | 
    
         
            +
                  search_data.each do |name, value|
         
     | 
| 
      
 7 
     | 
    
         
            +
                    instance_variable_set("@#{name}",value)
         
     | 
| 
      
 8 
     | 
    
         
            +
                    instance_eval("def #{name}\n @#{name}\n end")        
         
     | 
| 
      
 9 
     | 
    
         
            +
                  end
         
     | 
| 
      
 10 
     | 
    
         
            +
                  @results=[]
         
     | 
| 
      
 11 
     | 
    
         
            +
                end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                def each
         
     | 
| 
      
 14 
     | 
    
         
            +
                  @results.each { |result| yield result }
         
     | 
| 
      
 15 
     | 
    
         
            +
                end
         
     | 
| 
      
 16 
     | 
    
         
            +
                
         
     | 
| 
      
 17 
     | 
    
         
            +
                def <<(element)
         
     | 
| 
      
 18 
     | 
    
         
            +
                  @results << element
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
                
         
     | 
| 
      
 21 
     | 
    
         
            +
                def [](key)
         
     | 
| 
      
 22 
     | 
    
         
            +
                  @results[key]
         
     | 
| 
      
 23 
     | 
    
         
            +
                end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
              end
         
     | 
| 
      
 26 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/boss/result_factory.rb
    CHANGED
    
    | 
         @@ -18,31 +18,31 @@ module Boss 
     | 
|
| 
       18 
18 
     | 
    
         
             
                    if json_hash.has_key? 'Error'
         
     | 
| 
       19 
19 
     | 
    
         
             
                      raise BossError, "Web service error"
         
     | 
| 
       20 
20 
     | 
    
         
             
                    end
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
                    search_results=[]
         
     | 
| 
       23 
21 
     | 
    
         | 
| 
       24 
     | 
    
         
            -
                     
     | 
| 
      
 22 
     | 
    
         
            +
                    result_collection = ResultCollection.new(json_hash[SEARCH_RESPONSE])
         
     | 
| 
      
 23 
     | 
    
         
            +
                            
         
     | 
| 
      
 24 
     | 
    
         
            +
                    if has_results?(json_hash, :for => search_type)
         
     | 
| 
       25 
25 
     | 
    
         | 
| 
       26 
26 
     | 
    
         
             
                      json_hash[SEARCH_RESPONSE]["#{RESULT_SET}_#{search_type}"].each do |result|
         
     | 
| 
       27 
27 
     | 
    
         | 
| 
       28 
28 
     | 
    
         
             
                        case search_type
         
     | 
| 
       29 
29 
     | 
    
         
             
                        when SearchType::WEB
         
     | 
| 
       30 
     | 
    
         
            -
                           
     | 
| 
      
 30 
     | 
    
         
            +
                          result_collection << Result::Web.new(result)
         
     | 
| 
       31 
31 
     | 
    
         
             
                        when SearchType::IMAGES
         
     | 
| 
       32 
     | 
    
         
            -
                           
     | 
| 
      
 32 
     | 
    
         
            +
                          result_collection << Result::Image.new(result)
         
     | 
| 
       33 
33 
     | 
    
         
             
                        when SearchType::NEWS
         
     | 
| 
       34 
     | 
    
         
            -
                           
     | 
| 
      
 34 
     | 
    
         
            +
                          result_collection << Result::News.new(result)
         
     | 
| 
       35 
35 
     | 
    
         
             
                        when SearchType::SPELL
         
     | 
| 
       36 
     | 
    
         
            -
                           
     | 
| 
      
 36 
     | 
    
         
            +
                          result_collection << Result::Spell.new(result)
         
     | 
| 
       37 
37 
     | 
    
         
             
                        end
         
     | 
| 
       38 
38 
     | 
    
         | 
| 
       39 
39 
     | 
    
         
             
                      end
         
     | 
| 
       40 
40 
     | 
    
         
             
                    end
         
     | 
| 
       41 
41 
     | 
    
         | 
| 
       42 
     | 
    
         
            -
                     
     | 
| 
      
 42 
     | 
    
         
            +
                    result_collection
         
     | 
| 
       43 
43 
     | 
    
         
             
                  end
         
     | 
| 
       44 
44 
     | 
    
         | 
| 
       45 
     | 
    
         
            -
                  def has_results(json_hash, type={})
         
     | 
| 
      
 45 
     | 
    
         
            +
                  def has_results?(json_hash, type={})
         
     | 
| 
       46 
46 
     | 
    
         
             
                    !(json_hash[SEARCH_RESPONSE]["#{RESULT_SET}_#{type[:for]}"]).nil?
         
     | 
| 
       47 
47 
     | 
    
         
             
                  end
         
     | 
| 
       48 
48 
     | 
    
         | 
    
        data/lib/boss/version.rb
    CHANGED
    
    
    
        data/lib/boss.rb
    CHANGED
    
    
    
        data/rboss.gemspec
    CHANGED
    
    | 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            Gem::Specification.new do |s|
         
     | 
| 
       2 
2 
     | 
    
         
             
              s.name = %q{rboss}
         
     | 
| 
       3 
     | 
    
         
            -
              s.version = "0.1. 
     | 
| 
      
 3 
     | 
    
         
            +
              s.version = "0.1.2"
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         
     | 
| 
       6 
6 
     | 
    
         
             
              s.authors = ["Joseph Wilk"]
         
     | 
| 
         @@ -8,7 +8,7 @@ Gem::Specification.new do |s| 
     | 
|
| 
       8 
8 
     | 
    
         
             
              s.description = %q{Api wrapping Yahoo Boss search}
         
     | 
| 
       9 
9 
     | 
    
         
             
              s.email = ["joe@eshopworks.co.uk"]
         
     | 
| 
       10 
10 
     | 
    
         
             
              s.extra_rdoc_files = ["History.txt", "License.txt", "Manifest.txt", "TODO.txt"]
         
     | 
| 
       11 
     | 
    
         
            -
              s.files = ["History.txt", "License.txt", "Manifest.txt", "README.textile", "Rakefile", "TODO.txt", "config/hoe.rb", "config/requirements.rb", "gem_tasks/deployment.rake", "gem_tasks/environment.rake", "gem_tasks/fix_cr_lf.rake", "gem_tasks/gemspec.rake", "gem_tasks/rspec.rake", "gem_tasks/verify_rcov.rake", "gem_tasks/website.rake", "lib/boss.rb", "lib/boss/api.rb", "lib/boss/config.rb", "lib/boss/result.rb", "lib/boss/result/base.rb", "lib/boss/result/image.rb", "lib/boss/result/news.rb", "lib/boss/result/spell.rb", "lib/boss/result/web.rb", "lib/boss/result_factory.rb", "lib/boss/version.rb", "rboss.gemspec", "spec/boss/api_spec.rb", "spec/boss/config_spec.rb", "spec/boss/result_factory_spec.rb", "spec/spec.opts", "spec/spec_helper.rb"]
         
     | 
| 
      
 11 
     | 
    
         
            +
              s.files = ["History.txt", "License.txt", "Manifest.txt", "README.textile", "Rakefile", "TODO.txt", "config/hoe.rb", "config/requirements.rb", "gem_tasks/deployment.rake", "gem_tasks/environment.rake", "gem_tasks/fix_cr_lf.rake", "gem_tasks/gemspec.rake", "gem_tasks/rspec.rake", "gem_tasks/verify_rcov.rake", "gem_tasks/website.rake", "lib/boss.rb", "lib/boss/api.rb", "lib/boss/config.rb", "lib/boss/result.rb", "lib/boss/result/base.rb", "lib/boss/result/image.rb", "lib/boss/result/news.rb", "lib/boss/result/spell.rb", "lib/boss/result/web.rb", "lib/boss/result_collection.rb", "lib/boss/result_factory.rb", "lib/boss/version.rb", "rboss.gemspec", "spec/boss/api_spec.rb", "spec/boss/config_spec.rb", "spec/boss/result_collection_spec.rb", "spec/boss/result_factory_spec.rb", "spec/spec.opts", "spec/spec_helper.rb"]
         
     | 
| 
       12 
12 
     | 
    
         
             
              s.has_rdoc = true
         
     | 
| 
       13 
13 
     | 
    
         
             
              s.homepage = %q{http://github.com/eshopworks/rboss-gem}
         
     | 
| 
       14 
14 
     | 
    
         
             
              s.rdoc_options = ["--main", "README.txt"]
         
     | 
    
        data/spec/boss/api_spec.rb
    CHANGED
    
    | 
         @@ -17,14 +17,14 @@ describe Boss::Api do 
     | 
|
| 
       17 
17 
     | 
    
         
             
                it "should make a spelling request to yahoo service" do
         
     | 
| 
       18 
18 
     | 
    
         
             
                  Net::HTTP.should_receive(:get_response).and_return{ mock_http_response }
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
                  @api.search_spelling 
     | 
| 
      
 20 
     | 
    
         
            +
                  @api.search_spelling("girafes")
         
     | 
| 
       21 
21 
     | 
    
         
             
                end
         
     | 
| 
       22 
22 
     | 
    
         | 
| 
       23 
23 
     | 
    
         
             
                it "should build the spelling objects" do
         
     | 
| 
       24 
24 
     | 
    
         
             
                  Net::HTTP.stub!(:get_response).and_return{ mock_http_response }
         
     | 
| 
       25 
25 
     | 
    
         
             
                  Boss::ResultFactory.should_receive(:build).with(Boss::SearchService::SPELL, '{"ysearchresponse":{}}')
         
     | 
| 
       26 
26 
     | 
    
         | 
| 
       27 
     | 
    
         
            -
                  @api.search_spelling 
     | 
| 
      
 27 
     | 
    
         
            +
                  @api.search_spelling("girafes")
         
     | 
| 
       28 
28 
     | 
    
         
             
                end
         
     | 
| 
       29 
29 
     | 
    
         | 
| 
       30 
30 
     | 
    
         
             
              end
         
     | 
| 
         @@ -33,14 +33,14 @@ describe Boss::Api do 
     | 
|
| 
       33 
33 
     | 
    
         
             
                it "should make a news request to yahoo service" do
         
     | 
| 
       34 
34 
     | 
    
         
             
                  Net::HTTP.should_receive(:get_response).and_return{ mock_http_response }
         
     | 
| 
       35 
35 
     | 
    
         | 
| 
       36 
     | 
    
         
            -
                  @api.search_news 
     | 
| 
      
 36 
     | 
    
         
            +
                  @api.search_news("monkey")
         
     | 
| 
       37 
37 
     | 
    
         
             
                end
         
     | 
| 
       38 
38 
     | 
    
         | 
| 
       39 
39 
     | 
    
         
             
                it "should build the news objects" do
         
     | 
| 
       40 
40 
     | 
    
         
             
                  Net::HTTP.stub!(:get_response).and_return{ mock_http_response }
         
     | 
| 
       41 
41 
     | 
    
         
             
                  Boss::ResultFactory.should_receive(:build).with(Boss::SearchType::NEWS, '{"ysearchresponse":{}}')
         
     | 
| 
       42 
42 
     | 
    
         | 
| 
       43 
     | 
    
         
            -
                  @api.search_news 
     | 
| 
      
 43 
     | 
    
         
            +
                  @api.search_news("monkey")
         
     | 
| 
       44 
44 
     | 
    
         
             
                end
         
     | 
| 
       45 
45 
     | 
    
         
             
              end
         
     | 
| 
       46 
46 
     | 
    
         | 
| 
         @@ -48,14 +48,14 @@ describe Boss::Api do 
     | 
|
| 
       48 
48 
     | 
    
         
             
                it "should make a image request to yahoo service" do
         
     | 
| 
       49 
49 
     | 
    
         
             
                  Net::HTTP.should_receive(:get_response).and_return{ mock_http_response }
         
     | 
| 
       50 
50 
     | 
    
         | 
| 
       51 
     | 
    
         
            -
                  @api.search_images 
     | 
| 
      
 51 
     | 
    
         
            +
                  @api.search_images("hippo")
         
     | 
| 
       52 
52 
     | 
    
         
             
                end
         
     | 
| 
       53 
53 
     | 
    
         | 
| 
       54 
54 
     | 
    
         
             
                it "should build the image objects" do
         
     | 
| 
       55 
55 
     | 
    
         
             
                  Net::HTTP.stub!(:get_response).and_return{ mock_http_response }
         
     | 
| 
       56 
56 
     | 
    
         
             
                  Boss::ResultFactory.should_receive(:build).with(Boss::SearchType::IMAGES, '{"ysearchresponse":{}}')
         
     | 
| 
       57 
57 
     | 
    
         | 
| 
       58 
     | 
    
         
            -
                  @api.search_images 
     | 
| 
      
 58 
     | 
    
         
            +
                  @api.search_images("hippo")
         
     | 
| 
       59 
59 
     | 
    
         
             
                end
         
     | 
| 
       60 
60 
     | 
    
         
             
              end
         
     | 
| 
       61 
61 
     | 
    
         | 
| 
         @@ -64,14 +64,14 @@ describe Boss::Api do 
     | 
|
| 
       64 
64 
     | 
    
         
             
                it "should make a web request to yahoo service" do
         
     | 
| 
       65 
65 
     | 
    
         
             
                  Net::HTTP.should_receive(:get_response).and_return{ mock_http_response }
         
     | 
| 
       66 
66 
     | 
    
         | 
| 
       67 
     | 
    
         
            -
                  @api.search_web 
     | 
| 
      
 67 
     | 
    
         
            +
                  @api.search_web("monkey")
         
     | 
| 
       68 
68 
     | 
    
         
             
                end
         
     | 
| 
       69 
69 
     | 
    
         | 
| 
       70 
70 
     | 
    
         
             
                it "should build the web objects" do
         
     | 
| 
       71 
71 
     | 
    
         
             
                  Net::HTTP.stub!(:get_response).and_return{ mock_http_response }
         
     | 
| 
       72 
72 
     | 
    
         
             
                  Boss::ResultFactory.should_receive(:build).with(Boss::SearchType::WEB, '{"ysearchresponse":{}}')
         
     | 
| 
       73 
73 
     | 
    
         | 
| 
       74 
     | 
    
         
            -
                  @api.search_web 
     | 
| 
      
 74 
     | 
    
         
            +
                  @api.search_web("monkey")
         
     | 
| 
       75 
75 
     | 
    
         
             
                end
         
     | 
| 
       76 
76 
     | 
    
         | 
| 
       77 
77 
     | 
    
         
             
              end
         
     | 
| 
         @@ -81,7 +81,7 @@ describe Boss::Api do 
     | 
|
| 
       81 
81 
     | 
    
         
             
                it "should raise error on failed search" do
         
     | 
| 
       82 
82 
     | 
    
         
             
                  Net::HTTP.stub!(:get_response).and_return{ mock_http_response :code => "404" }
         
     | 
| 
       83 
83 
     | 
    
         | 
| 
       84 
     | 
    
         
            -
                  lambda { @api.search_web 
     | 
| 
      
 84 
     | 
    
         
            +
                  lambda { @api.search_web("monkey")  }.should raise_error(Boss::BossError)
         
     | 
| 
       85 
85 
     | 
    
         
             
                end
         
     | 
| 
       86 
86 
     | 
    
         | 
| 
       87 
87 
     | 
    
         
             
              end
         
     | 
| 
         @@ -98,7 +98,7 @@ describe Boss::Api do 
     | 
|
| 
       98 
98 
     | 
    
         
             
                  @config.should_receive(:count=).with(1)
         
     | 
| 
       99 
99 
     | 
    
         
             
                  Boss::Config.should_receive(:new).and_return(@config)
         
     | 
| 
       100 
100 
     | 
    
         | 
| 
       101 
     | 
    
         
            -
                  result = @api.search_web 
     | 
| 
      
 101 
     | 
    
         
            +
                  result = @api.search_web("monkeys") do |setup|
         
     | 
| 
       102 
102 
     | 
    
         
             
                    setup.count = 1
         
     | 
| 
       103 
103 
     | 
    
         
             
                  end
         
     | 
| 
       104 
104 
     | 
    
         
             
                end
         
     | 
| 
         @@ -106,7 +106,7 @@ describe Boss::Api do 
     | 
|
| 
       106 
106 
     | 
    
         
             
                it "should allow configuring through hash" do
         
     | 
| 
       107 
107 
     | 
    
         
             
                  Boss::Config.should_receive(:new).with({:count => 1}).and_return(@config)
         
     | 
| 
       108 
108 
     | 
    
         | 
| 
       109 
     | 
    
         
            -
                  @api.search_web 
     | 
| 
      
 109 
     | 
    
         
            +
                  @api.search_web("monkeys", :count => 1)
         
     | 
| 
       110 
110 
     | 
    
         
             
                end
         
     | 
| 
       111 
111 
     | 
    
         | 
| 
       112 
112 
     | 
    
         
             
              end
         
     | 
| 
         @@ -119,20 +119,20 @@ describe Boss::Api do 
     | 
|
| 
       119 
119 
     | 
    
         | 
| 
       120 
120 
     | 
    
         
             
                it "should not return any objects when format is 'xml'" do
         
     | 
| 
       121 
121 
     | 
    
         
             
                  Boss::ResultFactory.should_receive(:build).never
         
     | 
| 
       122 
     | 
    
         
            -
                  @api.search_web 
     | 
| 
      
 122 
     | 
    
         
            +
                  @api.search_web("monkeys", :format => 'xml', :count => 1)
         
     | 
| 
       123 
123 
     | 
    
         
             
                end
         
     | 
| 
       124 
124 
     | 
    
         | 
| 
       125 
125 
     | 
    
         
             
                it "should not return any objects when format is 'json'" do
         
     | 
| 
       126 
126 
     | 
    
         
             
                  Boss::ResultFactory.should_receive(:build).never
         
     | 
| 
       127 
     | 
    
         
            -
                  @api.search_web 
     | 
| 
      
 127 
     | 
    
         
            +
                  @api.search_web("monkeys", :format => 'json', :count => 1)
         
     | 
| 
       128 
128 
     | 
    
         
             
                end
         
     | 
| 
       129 
129 
     | 
    
         | 
| 
       130 
130 
     | 
    
         
             
                it "should raise an error invalid format" do
         
     | 
| 
       131 
     | 
    
         
            -
                  lambda { @api.search_web 
     | 
| 
      
 131 
     | 
    
         
            +
                  lambda { @api.search_web("monkeys", :format => 'grilled_cheese', :count => 1) }.should raise_error(Boss::InvalidFormat)
         
     | 
| 
       132 
132 
     | 
    
         
             
                end
         
     | 
| 
       133 
133 
     | 
    
         | 
| 
       134 
134 
     | 
    
         
             
                it "should raise an error on invalid count" do
         
     | 
| 
       135 
     | 
    
         
            -
                  lambda { @api.search_web 
     | 
| 
      
 135 
     | 
    
         
            +
                  lambda { @api.search_web("monkeys", :count => 0) }.should raise_error(Boss::InvalidConfig)
         
     | 
| 
       136 
136 
     | 
    
         
             
                end
         
     | 
| 
       137 
137 
     | 
    
         | 
| 
       138 
138 
     | 
    
         
             
              end
         
     | 
| 
         @@ -142,7 +142,7 @@ describe Boss::Api do 
     | 
|
| 
       142 
142 
     | 
    
         
             
                  pending("fix for http://eshopworks.lighthouseapp.com/projects/15732/tickets/1")
         
     | 
| 
       143 
143 
     | 
    
         
             
                  Net::HTTP.stub!(:get_response).and_return{ mock_http_response :code => "206" }
         
     | 
| 
       144 
144 
     | 
    
         | 
| 
       145 
     | 
    
         
            -
                  lambda { @api.search_web 
     | 
| 
      
 145 
     | 
    
         
            +
                  lambda { @api.search_web("monkey")  }.should_not raise_error(Boss::BossError)
         
     | 
| 
       146 
146 
     | 
    
         
             
                end
         
     | 
| 
       147 
147 
     | 
    
         
             
              end
         
     | 
| 
       148 
148 
     | 
    
         | 
| 
         @@ -152,7 +152,7 @@ describe Boss::Api do 
     | 
|
| 
       152 
152 
     | 
    
         
             
                  CGI.stub!(:escape)
         
     | 
| 
       153 
153 
     | 
    
         
             
                  CGI.should_receive(:escape).with('monkey?magic').and_return('monkey%3Fmagic')
         
     | 
| 
       154 
154 
     | 
    
         | 
| 
       155 
     | 
    
         
            -
                  @api.search_web 
     | 
| 
      
 155 
     | 
    
         
            +
                  @api.search_web("monkey?magic")
         
     | 
| 
       156 
156 
     | 
    
         
             
                end
         
     | 
| 
       157 
157 
     | 
    
         | 
| 
       158 
158 
     | 
    
         
             
              end
         
     | 
    
        data/spec/boss/config_spec.rb
    CHANGED
    
    | 
         @@ -19,13 +19,13 @@ describe Boss::Config do 
     | 
|
| 
       19 
19 
     | 
    
         
             
              end
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
21 
     | 
    
         
             
              it "should add custom values to url" do
         
     | 
| 
       22 
     | 
    
         
            -
                config = Boss::Config.new 
     | 
| 
      
 22 
     | 
    
         
            +
                config = Boss::Config.new(:mizaru => 'cannot_see')
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
       24 
24 
     | 
    
         
             
                config.to_url.should include("&mizaru=cannot_see")
         
     | 
| 
       25 
25 
     | 
    
         
             
              end
         
     | 
| 
       26 
26 
     | 
    
         | 
| 
       27 
27 
     | 
    
         
             
              it "should encode invalid url characters" do
         
     | 
| 
       28 
     | 
    
         
            -
                config = Boss::Config.new 
     | 
| 
      
 28 
     | 
    
         
            +
                config = Boss::Config.new(:mizaru => 'dancing monkeys?')
         
     | 
| 
       29 
29 
     | 
    
         | 
| 
       30 
30 
     | 
    
         
             
                config.to_url.should include("dancing+monkeys%3F")
         
     | 
| 
       31 
31 
     | 
    
         
             
              end
         
     | 
| 
         @@ -0,0 +1,23 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require File.dirname(__FILE__) + '/../spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe Boss::ResultCollection do
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              it "should dynamically set instance values given at creation" do
         
     | 
| 
      
 6 
     | 
    
         
            +
                collection = Boss::ResultCollection.new({:totalhits => "344"})
         
     | 
| 
      
 7 
     | 
    
         
            +
                
         
     | 
| 
      
 8 
     | 
    
         
            +
                collection.totalhits.should eql("344")
         
     | 
| 
      
 9 
     | 
    
         
            +
              end
         
     | 
| 
      
 10 
     | 
    
         
            +
              
         
     | 
| 
      
 11 
     | 
    
         
            +
              it "should allow iterating over result collection" do
         
     | 
| 
      
 12 
     | 
    
         
            +
                collection = Boss::ResultCollection.new({})
         
     | 
| 
      
 13 
     | 
    
         
            +
                
         
     | 
| 
      
 14 
     | 
    
         
            +
                collection << 1
         
     | 
| 
      
 15 
     | 
    
         
            +
                collection << 2
         
     | 
| 
      
 16 
     | 
    
         
            +
                
         
     | 
| 
      
 17 
     | 
    
         
            +
                collection.each do |value| 
         
     | 
| 
      
 18 
     | 
    
         
            +
                  [1,2].member?(value).should be_true
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
                
         
     | 
| 
      
 21 
     | 
    
         
            +
              end
         
     | 
| 
      
 22 
     | 
    
         
            +
              
         
     | 
| 
      
 23 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -2,16 +2,24 @@ require File.dirname(__FILE__) + '/../spec_helper' 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            describe Boss::ResultFactory do
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
      
 5 
     | 
    
         
            +
              news_json_result = '{"ysearchresponse":{"responsecode":"200","nextpage":"nextpage","totalhits":"344","count":"1","start":"0","resultset_news":[{"abstract":"abstract","clickurl":"clickurl","date":"2008\/08\/18","language":"en english","source":"source","sourceurl":"sourceurl","time":"09:17:29","title":"monkey_title","url":"url"}]}}'
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
      
 7 
     | 
    
         
            +
              image_json_result = '{"ysearchresponse":{"responsecode":"200","nextpage":"http:\/\/www.example.com","totalhits":"80","count":"1","start":"0","resultset_images":[{"abstract":"more monkeys","clickurl":"http:\/\/www.example.con\/click","date":"2001\/12\/19","filename":"monkeys.jpg","format":"jpeg","height":"600","mimetype":"image\/jpeg","refererclickurl":"http:\/\/www.example.com\/ref","refererurl":"http:\/\/www.monkeys.com","size":"60900","thumbnail_height":"116","thumbnail_url":"http:\/\/monkey.com\/image\/25\/m7\/3918546506","thumbnail_width":"155","title":"monkeys.jpg","url":"http:\/\/monkey\/monkeys.jpg","width":"800"}]}}'
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
               
         
     | 
| 
       11 
     | 
    
         
            -
               spelling_json_result = '{"ysearchresponse":{"responsecode":"200","totalhits":"1","count":"1","start":"0","resultset_spell":[{"suggestion":"giraffes"}]}}'
         
     | 
| 
      
 9 
     | 
    
         
            +
              web_json_result = '{"ysearchresponse":{"responsecode":"200","nextpage":"nextpage","totalhits":"344","count":"1","start":"0","resultset_web":[{"abstract":"abstract","clickurl":"clickurl","date":"2008\/08\/18","language":"en english","source":"source","sourceurl":"sourceurl","time":"09:17:29","title":"monkey_title","url":"url"}]}}'
         
     | 
| 
       12 
10 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
      
 11 
     | 
    
         
            +
              spelling_json_result = '{"ysearchresponse":{"responsecode":"200","totalhits":"1","count":"1","start":"0","resultset_spell":[{"suggestion":"giraffes"}]}}'
         
     | 
| 
       14 
12 
     | 
    
         | 
| 
      
 13 
     | 
    
         
            +
              error_json_result = '{"Error":"true"}'
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              it "should create a result collection" do
         
     | 
| 
      
 16 
     | 
    
         
            +
                news_hash = JSON.parse(news_json_result)
         
     | 
| 
      
 17 
     | 
    
         
            +
                result_collection = Boss::ResultCollection.new(news_hash)
         
     | 
| 
      
 18 
     | 
    
         
            +
                Boss::ResultCollection.should_receive(:new).once.with(news_hash['ysearchresponse']).and_return(result_collection)
         
     | 
| 
      
 19 
     | 
    
         
            +
                  
         
     | 
| 
      
 20 
     | 
    
         
            +
                Boss::ResultFactory.build(Boss::SearchType::NEWS, news_json_result)
         
     | 
| 
      
 21 
     | 
    
         
            +
              end
         
     | 
| 
      
 22 
     | 
    
         
            +
              
         
     | 
| 
       15 
23 
     | 
    
         
             
              it "should create a new news object from json" do
         
     | 
| 
       16 
24 
     | 
    
         
             
                Boss::Result::News.should_receive(:new).once
         
     | 
| 
       17 
25 
     | 
    
         | 
| 
         @@ -23,27 +31,27 @@ describe Boss::ResultFactory do 
     | 
|
| 
       23 
31 
     | 
    
         | 
| 
       24 
32 
     | 
    
         
             
                news_results[0].title.should == "monkey_title"
         
     | 
| 
       25 
33 
     | 
    
         
             
              end
         
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
       27 
35 
     | 
    
         
             
              it "should build image objects from json" do
         
     | 
| 
       28 
36 
     | 
    
         
             
                Boss::Result::Image.should_receive(:new).once
         
     | 
| 
       29 
37 
     | 
    
         | 
| 
       30 
38 
     | 
    
         
             
                Boss::ResultFactory.build(Boss::SearchType::IMAGES, image_json_result)
         
     | 
| 
       31 
39 
     | 
    
         
             
              end
         
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
       33 
41 
     | 
    
         
             
              it "should build web object from json" do
         
     | 
| 
       34 
42 
     | 
    
         
             
                Boss::Result::Web.should_receive(:new).once
         
     | 
| 
       35 
43 
     | 
    
         | 
| 
       36 
44 
     | 
    
         
             
                Boss::ResultFactory.build(Boss::SearchType::WEB, web_json_result)
         
     | 
| 
       37 
45 
     | 
    
         
             
              end
         
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
       39 
47 
     | 
    
         
             
              it "should build spelling object from json" do
         
     | 
| 
       40 
48 
     | 
    
         
             
                Boss::Result::Spell.should_receive(:new).once
         
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
       42 
50 
     | 
    
         
             
                Boss::ResultFactory.build(Boss::SearchType::SPELL, spelling_json_result)
         
     | 
| 
       43 
51 
     | 
    
         
             
              end
         
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
       45 
53 
     | 
    
         
             
              it "should raise an error if json result carries an error" do
         
     | 
| 
       46 
54 
     | 
    
         
             
                lambda { Boss::ResultFactory.build(Boss::SearchType::WEB, error_json_result) }.should raise_error(Boss::BossError)
         
     | 
| 
       47 
55 
     | 
    
         
             
              end
         
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
            end
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: eshopworks-rboss
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.1.2
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors: 
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Joseph Wilk
         
     | 
| 
         @@ -85,11 +85,13 @@ files: 
     | 
|
| 
       85 
85 
     | 
    
         
             
            - lib/boss/result/news.rb
         
     | 
| 
       86 
86 
     | 
    
         
             
            - lib/boss/result/spell.rb
         
     | 
| 
       87 
87 
     | 
    
         
             
            - lib/boss/result/web.rb
         
     | 
| 
      
 88 
     | 
    
         
            +
            - lib/boss/result_collection.rb
         
     | 
| 
       88 
89 
     | 
    
         
             
            - lib/boss/result_factory.rb
         
     | 
| 
       89 
90 
     | 
    
         
             
            - lib/boss/version.rb
         
     | 
| 
       90 
91 
     | 
    
         
             
            - rboss.gemspec
         
     | 
| 
       91 
92 
     | 
    
         
             
            - spec/boss/api_spec.rb
         
     | 
| 
       92 
93 
     | 
    
         
             
            - spec/boss/config_spec.rb
         
     | 
| 
      
 94 
     | 
    
         
            +
            - spec/boss/result_collection_spec.rb
         
     | 
| 
       93 
95 
     | 
    
         
             
            - spec/boss/result_factory_spec.rb
         
     | 
| 
       94 
96 
     | 
    
         
             
            - spec/spec.opts
         
     | 
| 
       95 
97 
     | 
    
         
             
            - spec/spec_helper.rb
         
     |