browshot 1.3.0 → 1.4.0
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/Gemfile +6 -2
- data/README.rdoc +1 -1
- data/VERSION +1 -1
- data/lib/browshot.rb +62 -3
- data/test/test_browshot.rb +13 -1
- metadata +37 -15
    
        data/Gemfile
    CHANGED
    
    | @@ -1,11 +1,15 @@ | |
| 1 1 | 
             
            source "http://rubygems.org"
         | 
| 2 2 | 
             
            # Dependencies required to use browshot
         | 
| 3 3 |  | 
| 4 | 
            -
             | 
| 5 | 
            -
            gem " | 
| 4 | 
            +
            group :runtime do
         | 
| 5 | 
            +
              gem "json", ">= 0"
         | 
| 6 | 
            +
              gem "url", ">= 0"
         | 
| 7 | 
            +
            end
         | 
| 6 8 |  | 
| 7 9 | 
             
            # Dependencies to develop browshot.
         | 
| 8 10 | 
             
            group :development do
         | 
| 11 | 
            +
              gem "json", ">= 0"
         | 
| 12 | 
            +
              gem "url", ">= 0"
         | 
| 9 13 | 
             
              gem "shoulda", ">= 0"
         | 
| 10 14 | 
             
              gem "bundler", "~> 1.0.0"
         | 
| 11 15 | 
             
              gem "jeweler", "~> 1.6.4"
         | 
    
        data/README.rdoc
    CHANGED
    
    
    
        data/VERSION
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            1. | 
| 1 | 
            +
            1.4.0
         | 
    
        data/lib/browshot.rb
    CHANGED
    
    | @@ -5,7 +5,7 @@ | |
| 5 5 | 
             
            # and this library.
         | 
| 6 6 | 
             
            #
         | 
| 7 7 | 
             
            # Author::    Julien Sobrier  (mailto:jsobrier@browshot.com)
         | 
| 8 | 
            -
            # Copyright:: Copyright (c)  | 
| 8 | 
            +
            # Copyright:: Copyright (c) 2012 Browshot
         | 
| 9 9 | 
             
            # License::   Distributes under the same terms as Ruby
         | 
| 10 10 |  | 
| 11 11 | 
             
            require 'url'
         | 
| @@ -34,8 +34,42 @@ class Browshot | |
| 34 34 |  | 
| 35 35 | 
             
            	# Return the API version handled by the library. Note that this library can usually handle new arguments in requests without requiring an update.
         | 
| 36 36 | 
             
            	def api_version()
         | 
| 37 | 
            -
            		return "1. | 
| 38 | 
            -
            	end
         | 
| 37 | 
            +
            		return "1.4"
         | 
| 38 | 
            +
            	end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                # Retrieve a screenshot with one call. See http://browshot.com/api/documentation#simple for the full list of possible arguments.
         | 
| 41 | 
            +
                #
         | 
| 42 | 
            +
                # Return {: code => 200, :png => <content>} in case of success
         | 
| 43 | 
            +
                def simple(parameters={})
         | 
| 44 | 
            +
                    begin
         | 
| 45 | 
            +
                        url = make_url('simple', parameters)
         | 
| 46 | 
            +
                        response = fetch(url.to_s)
         | 
| 47 | 
            +
                        case response
         | 
| 48 | 
            +
                            when Net::HTTPSuccess     then 
         | 
| 49 | 
            +
                                return {:code => response.code, :png => response.response.body}
         | 
| 50 | 
            +
                            else
         | 
| 51 | 
            +
                                return {:code => response.code, :png => ''}
         | 
| 52 | 
            +
                        end
         | 
| 53 | 
            +
                    rescue Exception => e
         | 
| 54 | 
            +
                        puts "{e.message}" if (@debug)
         | 
| 55 | 
            +
                        raise e
         | 
| 56 | 
            +
                    end
         | 
| 57 | 
            +
                end
         | 
| 58 | 
            +
             | 
| 59 | 
            +
                # Save a screenshot to a file with one call, and save it to a file. See http://browshot.com/api/documentation#simple for the full list of possible arguments.
         | 
| 60 | 
            +
                #
         | 
| 61 | 
            +
                # Return {: code => 200, :file => <file_name>} in case of success
         | 
| 62 | 
            +
                #
         | 
| 63 | 
            +
                # +file+:  Local file name to write to.
         | 
| 64 | 
            +
                def simple_file(file='', parameters={})
         | 
| 65 | 
            +
                    data = self.simple(parameters)
         | 
| 66 | 
            +
                    if (data[:png].length > 0)
         | 
| 67 | 
            +
                        File.open(file, 'w') {|f| f.write(data[:png]) }
         | 
| 68 | 
            +
                        return {:code => data[:code], :file => file}
         | 
| 69 | 
            +
                    else
         | 
| 70 | 
            +
                        return {:code => data[:code], :file => ''}
         | 
| 71 | 
            +
                    end
         | 
| 72 | 
            +
                end
         | 
| 39 73 |  | 
| 40 74 | 
             
            	# Return the list of instances. See http://browshot.com/api/documentation#instance_list for the response format.
         | 
| 41 75 | 
             
            	def instance_list()
         | 
| @@ -176,4 +210,29 @@ class Browshot | |
| 176 210 | 
             
            			raise e
         | 
| 177 211 | 
             
            		end
         | 
| 178 212 | 
             
            	end
         | 
| 213 | 
            +
             | 
| 214 | 
            +
                def fetch(url, limit=32)
         | 
| 215 | 
            +
                    raise ArgumentError, 'HTTP redirect too deep' if (limit == 0)
         | 
| 216 | 
            +
             | 
| 217 | 
            +
                    uri = URI.parse(url)
         | 
| 218 | 
            +
                    http = Net::HTTP.new(uri.host, uri.port)
         | 
| 219 | 
            +
                    http.open_timeout = 240
         | 
| 220 | 
            +
                    http.read_timeout = 240
         | 
| 221 | 
            +
             | 
| 222 | 
            +
                    request = Net::HTTP::Get.new(uri.request_uri)
         | 
| 223 | 
            +
                    if (uri.scheme == 'https')
         | 
| 224 | 
            +
                        http.use_ssl = true
         | 
| 225 | 
            +
                        http.verify_mode = OpenSSL::SSL::VERIFY_NONE
         | 
| 226 | 
            +
                    end
         | 
| 227 | 
            +
                    response = http.request(request)
         | 
| 228 | 
            +
             | 
| 229 | 
            +
                    case response
         | 
| 230 | 
            +
                        when Net::HTTPRedirection then 
         | 
| 231 | 
            +
                            path = response['location']
         | 
| 232 | 
            +
                            url = URL.new( URI.join(@base, path).to_s )
         | 
| 233 | 
            +
                            return fetch(url.to_s, limit - 1)
         | 
| 234 | 
            +
                        else
         | 
| 235 | 
            +
                            return response
         | 
| 236 | 
            +
                    end
         | 
| 237 | 
            +
                end
         | 
| 179 238 | 
             
            end
         | 
    
        data/test/test_browshot.rb
    CHANGED
    
    | @@ -14,7 +14,19 @@ class TestBrowshot < Test::Unit::TestCase | |
| 14 14 | 
             
                end
         | 
| 15 15 |  | 
| 16 16 | 
             
                should "get the API version" do
         | 
| 17 | 
            -
                  assert_equal '1. | 
| 17 | 
            +
                  assert_equal '1.4', @browshot.api_version()
         | 
| 18 | 
            +
                end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                should "get a screenshot with the simple method" do
         | 
| 21 | 
            +
                    data = @browshot.simple({'url' => 'http://mobilito.net/', 'cache' => 60 * 60 * 24 * 365})
         | 
| 22 | 
            +
                    assert_equal 200, data[:code].to_i,                     "Screenshot should be succesful"
         | 
| 23 | 
            +
                    assert_equal true, data[:png].length > 0,               "Screenshot should be sent"
         | 
| 24 | 
            +
                end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                 should "get an error with the simple method" do
         | 
| 27 | 
            +
                    data = @browshot.simple({'url' => 'http://', 'cache' => 60 * 60 * 24 * 365})
         | 
| 28 | 
            +
                    assert_equal 400, data[:code].to_i,                     "Screenshot should have failed"
         | 
| 29 | 
            +
                    assert_equal 0, data[:png].length,                      "Screenshot should not be sent"
         | 
| 18 30 | 
             
                end
         | 
| 19 31 |  | 
| 20 32 | 
             
                should "get the list of instances available" do
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: browshot
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1. | 
| 4 | 
            +
              version: 1.4.0
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -9,11 +9,11 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date:  | 
| 12 | 
            +
            date: 2012-01-16 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: json
         | 
| 16 | 
            -
              requirement: & | 
| 16 | 
            +
              requirement: &76488040 !ruby/object:Gem::Requirement
         | 
| 17 17 | 
             
                none: false
         | 
| 18 18 | 
             
                requirements:
         | 
| 19 19 | 
             
                - - ! '>='
         | 
| @@ -21,10 +21,10 @@ dependencies: | |
| 21 21 | 
             
                    version: '0'
         | 
| 22 22 | 
             
              type: :runtime
         | 
| 23 23 | 
             
              prerelease: false
         | 
| 24 | 
            -
              version_requirements: * | 
| 24 | 
            +
              version_requirements: *76488040
         | 
| 25 25 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 26 26 | 
             
              name: url
         | 
| 27 | 
            -
              requirement: & | 
| 27 | 
            +
              requirement: &76487040 !ruby/object:Gem::Requirement
         | 
| 28 28 | 
             
                none: false
         | 
| 29 29 | 
             
                requirements:
         | 
| 30 30 | 
             
                - - ! '>='
         | 
| @@ -32,10 +32,32 @@ dependencies: | |
| 32 32 | 
             
                    version: '0'
         | 
| 33 33 | 
             
              type: :runtime
         | 
| 34 34 | 
             
              prerelease: false
         | 
| 35 | 
            -
              version_requirements: * | 
| 35 | 
            +
              version_requirements: *76487040
         | 
| 36 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 37 | 
            +
              name: json
         | 
| 38 | 
            +
              requirement: &76486260 !ruby/object:Gem::Requirement
         | 
| 39 | 
            +
                none: false
         | 
| 40 | 
            +
                requirements:
         | 
| 41 | 
            +
                - - ! '>='
         | 
| 42 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 43 | 
            +
                    version: '0'
         | 
| 44 | 
            +
              type: :development
         | 
| 45 | 
            +
              prerelease: false
         | 
| 46 | 
            +
              version_requirements: *76486260
         | 
| 47 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 48 | 
            +
              name: url
         | 
| 49 | 
            +
              requirement: &76485600 !ruby/object:Gem::Requirement
         | 
| 50 | 
            +
                none: false
         | 
| 51 | 
            +
                requirements:
         | 
| 52 | 
            +
                - - ! '>='
         | 
| 53 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            +
                    version: '0'
         | 
| 55 | 
            +
              type: :development
         | 
| 56 | 
            +
              prerelease: false
         | 
| 57 | 
            +
              version_requirements: *76485600
         | 
| 36 58 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 37 59 | 
             
              name: shoulda
         | 
| 38 | 
            -
              requirement: & | 
| 60 | 
            +
              requirement: &76484880 !ruby/object:Gem::Requirement
         | 
| 39 61 | 
             
                none: false
         | 
| 40 62 | 
             
                requirements:
         | 
| 41 63 | 
             
                - - ! '>='
         | 
| @@ -43,10 +65,10 @@ dependencies: | |
| 43 65 | 
             
                    version: '0'
         | 
| 44 66 | 
             
              type: :development
         | 
| 45 67 | 
             
              prerelease: false
         | 
| 46 | 
            -
              version_requirements: * | 
| 68 | 
            +
              version_requirements: *76484880
         | 
| 47 69 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 48 70 | 
             
              name: bundler
         | 
| 49 | 
            -
              requirement: & | 
| 71 | 
            +
              requirement: &76520160 !ruby/object:Gem::Requirement
         | 
| 50 72 | 
             
                none: false
         | 
| 51 73 | 
             
                requirements:
         | 
| 52 74 | 
             
                - - ~>
         | 
| @@ -54,10 +76,10 @@ dependencies: | |
| 54 76 | 
             
                    version: 1.0.0
         | 
| 55 77 | 
             
              type: :development
         | 
| 56 78 | 
             
              prerelease: false
         | 
| 57 | 
            -
              version_requirements: * | 
| 79 | 
            +
              version_requirements: *76520160
         | 
| 58 80 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 59 81 | 
             
              name: jeweler
         | 
| 60 | 
            -
              requirement: & | 
| 82 | 
            +
              requirement: &76519480 !ruby/object:Gem::Requirement
         | 
| 61 83 | 
             
                none: false
         | 
| 62 84 | 
             
                requirements:
         | 
| 63 85 | 
             
                - - ~>
         | 
| @@ -65,10 +87,10 @@ dependencies: | |
| 65 87 | 
             
                    version: 1.6.4
         | 
| 66 88 | 
             
              type: :development
         | 
| 67 89 | 
             
              prerelease: false
         | 
| 68 | 
            -
              version_requirements: * | 
| 90 | 
            +
              version_requirements: *76519480
         | 
| 69 91 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 70 92 | 
             
              name: rcov
         | 
| 71 | 
            -
              requirement: & | 
| 93 | 
            +
              requirement: &76518780 !ruby/object:Gem::Requirement
         | 
| 72 94 | 
             
                none: false
         | 
| 73 95 | 
             
                requirements:
         | 
| 74 96 | 
             
                - - ! '>='
         | 
| @@ -76,7 +98,7 @@ dependencies: | |
| 76 98 | 
             
                    version: '0'
         | 
| 77 99 | 
             
              type: :development
         | 
| 78 100 | 
             
              prerelease: false
         | 
| 79 | 
            -
              version_requirements: * | 
| 101 | 
            +
              version_requirements: *76518780
         | 
| 80 102 | 
             
            description: ! 'Browshot (http://www.browshot.com/) is a web service to easily make
         | 
| 81 103 | 
             
              screenshots of web pages in any screen size, as any device: iPhone©, iPad©, Android©,
         | 
| 82 104 | 
             
              Nook©, PC, etc. Browshot has full Flash, JavaScript, CSS, & HTML5 support. The latest
         | 
| @@ -119,7 +141,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 119 141 | 
             
                  version: '0'
         | 
| 120 142 | 
             
                  segments:
         | 
| 121 143 | 
             
                  - 0
         | 
| 122 | 
            -
                  hash: - | 
| 144 | 
            +
                  hash: -2499451636168677631
         | 
| 123 145 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 124 146 | 
             
              none: false
         | 
| 125 147 | 
             
              requirements:
         |