zapt_in 0.0.1
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/.gitignore +5 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +20 -0
- data/LICENSE +20 -0
- data/README.md +55 -0
- data/Rakefile +27 -0
- data/lib/zapt_in/client.rb +41 -0
- data/lib/zapt_in/error.rb +3 -0
- data/lib/zapt_in/request.rb +38 -0
- data/lib/zapt_in/url.rb +32 -0
- data/lib/zapt_in/version.rb +3 -0
- data/lib/zapt_in.rb +6 -0
- data/test/fixtures/shorten_failure +18 -0
- data/test/fixtures/shorten_success +29 -0
- data/test/test_helper.rb +18 -0
- data/test/zapt_in/client_test.rb +65 -0
- data/test/zapt_in/request_test.rb +30 -0
- data/zapt_in.gemspec +24 -0
- metadata +118 -0
    
        data/Gemfile
    ADDED
    
    
    
        data/Gemfile.lock
    ADDED
    
    | @@ -0,0 +1,20 @@ | |
| 1 | 
            +
            PATH
         | 
| 2 | 
            +
              remote: .
         | 
| 3 | 
            +
              specs:
         | 
| 4 | 
            +
                zapt_in (0.0.1)
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            GEM
         | 
| 7 | 
            +
              remote: http://rubygems.org/
         | 
| 8 | 
            +
              specs:
         | 
| 9 | 
            +
                ansi (1.2.5)
         | 
| 10 | 
            +
                fakeweb (1.3.0)
         | 
| 11 | 
            +
                turn (0.8.2)
         | 
| 12 | 
            +
                  ansi (>= 1.2.2)
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            PLATFORMS
         | 
| 15 | 
            +
              ruby
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            DEPENDENCIES
         | 
| 18 | 
            +
              fakeweb
         | 
| 19 | 
            +
              turn (~> 0.8.2)
         | 
| 20 | 
            +
              zapt_in!
         | 
    
        data/LICENSE
    ADDED
    
    | @@ -0,0 +1,20 @@ | |
| 1 | 
            +
            Copyright (c) 2011 Roger Leite
         | 
| 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 NONINFRINGEMENT.
         | 
| 17 | 
            +
            IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
         | 
| 18 | 
            +
            CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
         | 
| 19 | 
            +
            TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
         | 
| 20 | 
            +
            SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
         | 
    
        data/README.md
    ADDED
    
    | @@ -0,0 +1,55 @@ | |
| 1 | 
            +
            ZaptIn
         | 
| 2 | 
            +
            ======
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            A Ruby API for http://zapt.in and http://abr.io
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            More information for API here:
         | 
| 7 | 
            +
            http://zapt.in/pages/api
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            Project goals:
         | 
| 10 | 
            +
            * Easy to use;
         | 
| 11 | 
            +
            * Flexible to configure;
         | 
| 12 | 
            +
            * No external dependencies;
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            Installation
         | 
| 15 | 
            +
            ------------
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                gem install zapt_in
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            Usage
         | 
| 20 | 
            +
            -----
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                require "rubygems"
         | 
| 23 | 
            +
                require "zapt_in"
         | 
| 24 | 
            +
                
         | 
| 25 | 
            +
                client = ZaptIn::Client.new(:login => "login", :key => "Z_123") #=> #<ZaptIn::Client:0xb7403140 @key="Z_123", @login="login", @uri="http://zapt.in/api/links"> 
         | 
| 26 | 
            +
                url = client.shorten("http://google.com") #=> #<ZaptIn::Url:0xb702daac @status_code="OK", @short_url="http://zapt.in/11jU", @error_code="0", @error_message=nil>
         | 
| 27 | 
            +
                url.short_url  #=> "http://zapt.in/11jU"
         | 
| 28 | 
            +
              
         | 
| 29 | 
            +
             | 
| 30 | 
            +
            Running the Tests
         | 
| 31 | 
            +
            -----------------
         | 
| 32 | 
            +
             | 
| 33 | 
            +
            Install development dependencies with:
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                $ bundle install
         | 
| 36 | 
            +
             | 
| 37 | 
            +
            To run the test suite:
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                $ rake
         | 
| 40 | 
            +
             | 
| 41 | 
            +
             | 
| 42 | 
            +
            Contributing
         | 
| 43 | 
            +
            ------------
         | 
| 44 | 
            +
             | 
| 45 | 
            +
            Once you've made your great commits:
         | 
| 46 | 
            +
             | 
| 47 | 
            +
            1. [Fork][0] zapt_in
         | 
| 48 | 
            +
            2. Create a topic branch - `git checkout -b my_branch`
         | 
| 49 | 
            +
            3. Push to your branch - `git push origin my_branch`
         | 
| 50 | 
            +
            4. Create an [Issue][1] with a link to your branch
         | 
| 51 | 
            +
            5. That's it!
         | 
| 52 | 
            +
             | 
| 53 | 
            +
             | 
| 54 | 
            +
            [0]: http://help.github.com/forking/
         | 
| 55 | 
            +
            [1]: https://github.com/rogerleite/zapt_in/issues
         | 
    
        data/Rakefile
    ADDED
    
    | @@ -0,0 +1,27 @@ | |
| 1 | 
            +
            require 'rake'
         | 
| 2 | 
            +
            require 'rake/testtask'
         | 
| 3 | 
            +
            require 'rake/rdoctask'
         | 
| 4 | 
            +
            require 'bundler'
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            Bundler::GemHelper.install_tasks
         | 
| 7 | 
            +
             
         | 
| 8 | 
            +
            desc 'Generate API documentation to doc/rdocs/index.html'
         | 
| 9 | 
            +
            Rake::RDocTask.new do |rd|
         | 
| 10 | 
            +
              rd.rdoc_dir = 'doc'
         | 
| 11 | 
            +
              rd.main = 'README.md'
         | 
| 12 | 
            +
              rd.rdoc_files.include "README.md", "LICENSE", "lib/**/*\.rb"
         | 
| 13 | 
            +
             
         | 
| 14 | 
            +
              rd.options << '--inline-source'
         | 
| 15 | 
            +
              rd.options << '--line-numbers'
         | 
| 16 | 
            +
              rd.options << '--all'
         | 
| 17 | 
            +
              rd.options << '--fileboxes'
         | 
| 18 | 
            +
            end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            desc "Run tests"
         | 
| 21 | 
            +
            Rake::TestTask.new do |t|
         | 
| 22 | 
            +
              t.libs << "test"
         | 
| 23 | 
            +
              t.test_files = FileList['test/**/*.rb']
         | 
| 24 | 
            +
              t.verbose = true
         | 
| 25 | 
            +
            end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            task :default => :test
         | 
| @@ -0,0 +1,41 @@ | |
| 1 | 
            +
             | 
| 2 | 
            +
            #Client proxy for Zapt.In or Abr.io API.
         | 
| 3 | 
            +
            class ZaptIn::Client
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              attr_reader :uri, :login, :key
         | 
| 6 | 
            +
             | 
| 7 | 
            +
              DEFAULT_PARAMS = {:format => "xml", :version => "1.0"}
         | 
| 8 | 
            +
             | 
| 9 | 
            +
              #Use the following options to initialize your client:
         | 
| 10 | 
            +
              #  [uri] - Default: "zapt.in/api/links"
         | 
| 11 | 
            +
              #  [login] - Your login from Zapt.In. See: http://zapt.in/pages/api
         | 
| 12 | 
            +
              #  [key] - Your key from Zapt.In. See: http://zapt.in/pages/api
         | 
| 13 | 
            +
              def initialize(options = {})
         | 
| 14 | 
            +
                @uri = options[:uri] || "http://zapt.in/api/links"
         | 
| 15 | 
            +
                @login = options[:login]
         | 
| 16 | 
            +
                @key = options[:key]
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              #Shorten an url.
         | 
| 20 | 
            +
              #[long_url] url you want to shorten.
         | 
| 21 | 
            +
              #[options] Optional Hash. You can pass the following keys:
         | 
| 22 | 
            +
              #  [uri] - Default: "zapt.in/api/links"
         | 
| 23 | 
            +
              #  [login] - Your login from Zapt.In. See: http://zapt.in/pages/api
         | 
| 24 | 
            +
              #  [key] - Your key from Zapt.In. See: http://zapt.in/pages/api
         | 
| 25 | 
            +
              def shorten(long_url, options = {})
         | 
| 26 | 
            +
                return nil if long_url.nil? || long_url == ""
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                @uri = options.delete(:uri) || @uri
         | 
| 29 | 
            +
                params = {:login => @login || options.delete(:login),
         | 
| 30 | 
            +
                          :key   => @key   || options.delete(:key)}.merge(DEFAULT_PARAMS)
         | 
| 31 | 
            +
                params[:longUrl] = long_url
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                begin
         | 
| 34 | 
            +
                  response = ZaptIn::Request.get("#{self.uri}/shorten", params)
         | 
| 35 | 
            +
                  ZaptIn::Url.parse(response)
         | 
| 36 | 
            +
                rescue ZaptIn::Error => e
         | 
| 37 | 
            +
                  ZaptIn::Url.new(:status_code => "ERROR", :errorMessage => e.message, :error_code => -1)
         | 
| 38 | 
            +
                end
         | 
| 39 | 
            +
              end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
            end
         | 
| @@ -0,0 +1,38 @@ | |
| 1 | 
            +
            require "net/http"
         | 
| 2 | 
            +
            require "uri"
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            #Wrapper responsible for all requests.
         | 
| 5 | 
            +
            class ZaptIn::Request
         | 
| 6 | 
            +
              
         | 
| 7 | 
            +
              #Call get at *uri* with *parameters*.
         | 
| 8 | 
            +
              #[uri] Complete url. Example: http://zapt.in/api/links/shorten
         | 
| 9 | 
            +
              #[parameters] Hash of parameters. Example: {:format => "xml", :version => "1.0"}
         | 
| 10 | 
            +
              #
         | 
| 11 | 
            +
              #Returns response body, a String.
         | 
| 12 | 
            +
              def self.get(uri, parameters)
         | 
| 13 | 
            +
                url = URI.parse(uri)
         | 
| 14 | 
            +
                params = build_parameters(parameters)
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                begin
         | 
| 17 | 
            +
                  req = Net::HTTP::Get.new("#{url}?#{params}")
         | 
| 18 | 
            +
                  res = Net::HTTP.start(url.host, url.port) do |http| 
         | 
| 19 | 
            +
                    http.request(req)
         | 
| 20 | 
            +
                  end
         | 
| 21 | 
            +
                  res.body
         | 
| 22 | 
            +
                rescue StandardError => e
         | 
| 23 | 
            +
                  raise ZaptIn::Error.new(e)
         | 
| 24 | 
            +
                end
         | 
| 25 | 
            +
              end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
              protected
         | 
| 28 | 
            +
             | 
| 29 | 
            +
              #Receives a Hash.
         | 
| 30 | 
            +
              #
         | 
| 31 | 
            +
              #Returns a String in format: "key=value&key2=value2"
         | 
| 32 | 
            +
              def self.build_parameters(params)
         | 
| 33 | 
            +
                array_params = []
         | 
| 34 | 
            +
                params.each_pair { |key, value| array_params << "#{key}=#{value}"}
         | 
| 35 | 
            +
                array_params.join("&")
         | 
| 36 | 
            +
              end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
            end
         | 
    
        data/lib/zapt_in/url.rb
    ADDED
    
    | @@ -0,0 +1,32 @@ | |
| 1 | 
            +
            require 'rexml/document'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            #Represents ZaptIn API response.
         | 
| 4 | 
            +
            class ZaptIn::Url
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              attr_reader :status_code, :error_message, :error_code
         | 
| 7 | 
            +
              attr_reader :short_url
         | 
| 8 | 
            +
             | 
| 9 | 
            +
              #Initialize all read-only atributes with Hash.
         | 
| 10 | 
            +
              def initialize(attrs = {})
         | 
| 11 | 
            +
                attrs.each_pair do |attr, value|
         | 
| 12 | 
            +
                  self.instance_variable_set("@#{attr}", value)
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              #Parses *xml* from ZaptIn API.
         | 
| 17 | 
            +
              #
         | 
| 18 | 
            +
              #See documentation at http://zapt.in/pages/api
         | 
| 19 | 
            +
              def self.parse(xml_body)
         | 
| 20 | 
            +
                doc = REXML::Document.new(xml_body)
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                attributes = {:status_code => doc.elements["zaptin/statusCode"].text,
         | 
| 23 | 
            +
                              :error_message => doc.elements["zaptin/errorMessage"].text,
         | 
| 24 | 
            +
                              :error_code => doc.elements["zaptin/errorCode"].text}
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                if (result = doc.elements["zaptin/results/nodeKeyVal"])
         | 
| 27 | 
            +
                  attributes.merge!({:short_url => result.elements["shortUrl"].text})
         | 
| 28 | 
            +
                end
         | 
| 29 | 
            +
                self.new(attributes)
         | 
| 30 | 
            +
              end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            end
         | 
    
        data/lib/zapt_in.rb
    ADDED
    
    
| @@ -0,0 +1,18 @@ | |
| 1 | 
            +
            HTTP/1.1 200 OK
         | 
| 2 | 
            +
            Server: nginx/0.7.67
         | 
| 3 | 
            +
            Date: Mon, 06 Jun 2011 17:42:58 GMT
         | 
| 4 | 
            +
            Content-Type: application/xml; charset=utf-8
         | 
| 5 | 
            +
            Connection: keep-alive
         | 
| 6 | 
            +
            X-Runtime: 12
         | 
| 7 | 
            +
            Etag: "9cd7a5d7537c402e82dfc1612e7d2dea"
         | 
| 8 | 
            +
            Cache-Control: private, max-age=0, must-revalidate
         | 
| 9 | 
            +
            Content-Length: 153
         | 
| 10 | 
            +
            X-Varnish: 247868969
         | 
| 11 | 
            +
            Age: 0
         | 
| 12 | 
            +
            Via: 1.1 varnish
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            <zaptin>
         | 
| 15 | 
            +
            	<errorCode>203</errorCode>
         | 
| 16 | 
            +
            	<errorMessage>You must be authenticated to access shorten.</errorMessage>
         | 
| 17 | 
            +
            	<statusCode>ERROR</statusCode>
         | 
| 18 | 
            +
            </zaptin>
         | 
| @@ -0,0 +1,29 @@ | |
| 1 | 
            +
            HTTP/1.1 200 OK
         | 
| 2 | 
            +
            Server: nginx/0.7.67
         | 
| 3 | 
            +
            Date: Fri, 03 Jun 2011 18:17:52 GMT
         | 
| 4 | 
            +
            Content-Type: application/xml; charset=utf-8
         | 
| 5 | 
            +
            Connection: keep-alive
         | 
| 6 | 
            +
            X-Runtime: 33
         | 
| 7 | 
            +
            ETag: "96e2aec9b5358bed89d8345f4d94b969"
         | 
| 8 | 
            +
            Cache-Control: private, max-age=0, must-revalidate
         | 
| 9 | 
            +
            Content-Length: 380
         | 
| 10 | 
            +
            X-Varnish: 981428441
         | 
| 11 | 
            +
            Age: 0
         | 
| 12 | 
            +
            Via: 1.1 varnish
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            <zaptin>
         | 
| 15 | 
            +
              <errorCode>0</errorCode>
         | 
| 16 | 
            +
              <errorMessage></errorMessage>
         | 
| 17 | 
            +
              <results>
         | 
| 18 | 
            +
                <nodeKeyVal>
         | 
| 19 | 
            +
                  <userHash>11jU</userHash>
         | 
| 20 | 
            +
                  <shortKeywordUrl></shortKeywordUrl>
         | 
| 21 | 
            +
                  <hash>9</hash>
         | 
| 22 | 
            +
                  <nodeKey>
         | 
| 23 | 
            +
                    <![CDATA[http://google.com]]>
         | 
| 24 | 
            +
                  </nodeKey>
         | 
| 25 | 
            +
                  <shortUrl>http://zapt.in/11jU</shortUrl>
         | 
| 26 | 
            +
                </nodeKeyVal>
         | 
| 27 | 
            +
              </results>
         | 
| 28 | 
            +
              <statusCode>OK</statusCode>
         | 
| 29 | 
            +
            </zaptin>
         | 
    
        data/test/test_helper.rb
    ADDED
    
    | @@ -0,0 +1,18 @@ | |
| 1 | 
            +
            require 'rubygems'
         | 
| 2 | 
            +
            require 'test/unit'
         | 
| 3 | 
            +
            require 'ruby-debug'
         | 
| 4 | 
            +
            require 'turn'
         | 
| 5 | 
            +
            require 'fakeweb'
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            FakeWeb.allow_net_connect = false
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            class Test::Unit::TestCase
         | 
| 10 | 
            +
             | 
| 11 | 
            +
              def register_uri(url, options = {})
         | 
| 12 | 
            +
                fixture = options.delete(:fixture)
         | 
| 13 | 
            +
                FakeWeb.register_uri(:get, url, :response => File.read("test/fixtures/#{fixture}"))
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            require 'zapt_in'
         | 
| @@ -0,0 +1,65 @@ | |
| 1 | 
            +
            require 'test_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            class ZaptIn::ClientTest < Test::Unit::TestCase
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              def setup
         | 
| 6 | 
            +
              end
         | 
| 7 | 
            +
             | 
| 8 | 
            +
              def test_default_configurations
         | 
| 9 | 
            +
                assert_equal "http://zapt.in/api/links", ZaptIn::Client.new.uri
         | 
| 10 | 
            +
              end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              def test_shorten_with_blank_value
         | 
| 13 | 
            +
                client = ZaptIn::Client.new
         | 
| 14 | 
            +
                assert_equal nil, client.shorten(nil)
         | 
| 15 | 
            +
                assert_equal nil, client.shorten("")
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
              def test_shorten_with_valid_value
         | 
| 19 | 
            +
                client = ZaptIn::Client.new(:login => "rogleite", :key => "Z_321")
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                FakeWeb.clean_registry
         | 
| 22 | 
            +
                register_uri("http://zapt.in/api/links/shorten?version=1.0&login=rogleite&format=xml&key=Z_321&longUrl=http://google.com", :fixture => "shorten_success")
         | 
| 23 | 
            +
                zapt_url = client.shorten("http://google.com")
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                assert_not_nil zapt_url, "expects a ZaptIn::Url"
         | 
| 26 | 
            +
                assert_equal "http://zapt.in/11jU", zapt_url.short_url
         | 
| 27 | 
            +
              end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
              def test_shorten_options_parameter
         | 
| 30 | 
            +
                client = ZaptIn::Client.new(:login => "rogleite", :key => "Z_321")
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                FakeWeb.clean_registry
         | 
| 33 | 
            +
                register_uri("http://abr.io/api/links/shorten?version=1.0&login=rogleite&format=xml&key=Z_321&longUrl=http://google.com", :fixture => "shorten_success")
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                zapt_url = client.shorten("http://google.com", :uri => "http://abr.io/api/links", :login => "login", :key => "Z_123")
         | 
| 36 | 
            +
                assert_not_nil zapt_url, "expects a ZaptIn::Url"
         | 
| 37 | 
            +
                assert_equal "OK", zapt_url.status_code
         | 
| 38 | 
            +
              end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
              def test_shorten_failure
         | 
| 41 | 
            +
                client = ZaptIn::Client.new(:login => "rogleite", :key => "Z_INVALID")
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                FakeWeb.clean_registry
         | 
| 44 | 
            +
                register_uri("http://zapt.in/api/links/shorten?longUrl=http://google.com&version=1.0&login=rogleite&format=xml&key=Z_INVALID", :fixture => "shorten_failure")
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                zapt_url = client.shorten("http://google.com")
         | 
| 47 | 
            +
                assert_not_nil zapt_url, "expects a ZaptIn::Url"
         | 
| 48 | 
            +
                assert_equal "ERROR", zapt_url.status_code
         | 
| 49 | 
            +
                assert_nil zapt_url.short_url
         | 
| 50 | 
            +
              end
         | 
| 51 | 
            +
             | 
| 52 | 
            +
              def test_shorten_net_http_error
         | 
| 53 | 
            +
                FakeWeb.allow_net_connect = true
         | 
| 54 | 
            +
                
         | 
| 55 | 
            +
                client = ZaptIn::Client.new(:login => "rogleite", :key => "Z_INVALID")
         | 
| 56 | 
            +
                zapt_url = client.shorten("http://google.com", :uri => "http://nonexist")
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                FakeWeb.allow_net_connect = false
         | 
| 59 | 
            +
             | 
| 60 | 
            +
                assert_not_nil zapt_url, "expects a ZaptIn::Url"
         | 
| 61 | 
            +
                assert_equal "ERROR", zapt_url.status_code
         | 
| 62 | 
            +
                assert_nil zapt_url.short_url
         | 
| 63 | 
            +
              end
         | 
| 64 | 
            +
             | 
| 65 | 
            +
            end
         | 
| @@ -0,0 +1,30 @@ | |
| 1 | 
            +
            require 'test_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            class ZaptIn::RequestTest < Test::Unit::TestCase
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              def test_build_parameters
         | 
| 6 | 
            +
                params = {:format => "xml", :version => "1.0", :login => "login", :key => "key"}
         | 
| 7 | 
            +
                assert_equal "version=1.0&login=login&format=xml&key=key", ZaptIn::Request.build_parameters(params)
         | 
| 8 | 
            +
              end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              def test_get_request
         | 
| 11 | 
            +
                register_uri(/zapt\.in\/api\/links\/shorten/, :fixture => "shorten_success")
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                uri = "http://zapt.in/api/links/shorten"
         | 
| 14 | 
            +
                params = {:format => "xml", :version => "1.0", :login => "login", :key => "key"}
         | 
| 15 | 
            +
                
         | 
| 16 | 
            +
                response_body = ZaptIn::Request.get(uri, params)
         | 
| 17 | 
            +
                assert_match /zaptin/, response_body
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              def test_get_invalid_request
         | 
| 21 | 
            +
                FakeWeb.allow_net_connect = true
         | 
| 22 | 
            +
               
         | 
| 23 | 
            +
                assert_raise ZaptIn::Error do
         | 
| 24 | 
            +
                  ZaptIn::Request.get("http://nonexist", {})
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
                
         | 
| 27 | 
            +
                FakeWeb.allow_net_connect = false
         | 
| 28 | 
            +
              end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
            end
         | 
    
        data/zapt_in.gemspec
    ADDED
    
    | @@ -0,0 +1,24 @@ | |
| 1 | 
            +
            # -*- encoding: utf-8 -*-
         | 
| 2 | 
            +
            $:.push File.expand_path("../lib", __FILE__)
         | 
| 3 | 
            +
            require "zapt_in/version"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            Gem::Specification.new do |s|
         | 
| 6 | 
            +
              s.name        = "zapt_in"
         | 
| 7 | 
            +
              s.version     = ZaptIn::VERSION
         | 
| 8 | 
            +
              s.platform    = Gem::Platform::RUBY
         | 
| 9 | 
            +
              s.authors     = ["Roger Leite"]
         | 
| 10 | 
            +
              s.email       = ["roger.leite@abril.com.br"]
         | 
| 11 | 
            +
              s.homepage    = ""
         | 
| 12 | 
            +
              s.summary     = %q{Client ruby para os encurtadores http://zapt.in e http://abr.io}
         | 
| 13 | 
            +
              s.description = %q{Client ruby para os encurtadores http://zapt.in e http://abr.io}
         | 
| 14 | 
            +
              s.required_ruby_version = ">= 1.8.7"
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              #s.rubyforge_project = "zapt_in"
         | 
| 17 | 
            +
              s.add_development_dependency "turn", "~> 0.8.2"
         | 
| 18 | 
            +
              s.add_development_dependency "fakeweb", "~> 1.0.7"
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              s.files         = `git ls-files`.split("\n")
         | 
| 21 | 
            +
              s.test_files    = `git ls-files -- {test,spec,features}/*`.split("\n")
         | 
| 22 | 
            +
              s.executables   = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
         | 
| 23 | 
            +
              s.require_paths = ["lib"]
         | 
| 24 | 
            +
            end
         | 
    
        metadata
    ADDED
    
    | @@ -0,0 +1,118 @@ | |
| 1 | 
            +
            --- !ruby/object:Gem::Specification 
         | 
| 2 | 
            +
            name: zapt_in
         | 
| 3 | 
            +
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            +
              hash: 29
         | 
| 5 | 
            +
              prerelease: 
         | 
| 6 | 
            +
              segments: 
         | 
| 7 | 
            +
              - 0
         | 
| 8 | 
            +
              - 0
         | 
| 9 | 
            +
              - 1
         | 
| 10 | 
            +
              version: 0.0.1
         | 
| 11 | 
            +
            platform: ruby
         | 
| 12 | 
            +
            authors: 
         | 
| 13 | 
            +
            - Roger Leite
         | 
| 14 | 
            +
            autorequire: 
         | 
| 15 | 
            +
            bindir: bin
         | 
| 16 | 
            +
            cert_chain: []
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            date: 2011-06-06 00:00:00 -03:00
         | 
| 19 | 
            +
            default_executable: 
         | 
| 20 | 
            +
            dependencies: 
         | 
| 21 | 
            +
            - !ruby/object:Gem::Dependency 
         | 
| 22 | 
            +
              name: turn
         | 
| 23 | 
            +
              prerelease: false
         | 
| 24 | 
            +
              requirement: &id001 !ruby/object:Gem::Requirement 
         | 
| 25 | 
            +
                none: false
         | 
| 26 | 
            +
                requirements: 
         | 
| 27 | 
            +
                - - ~>
         | 
| 28 | 
            +
                  - !ruby/object:Gem::Version 
         | 
| 29 | 
            +
                    hash: 59
         | 
| 30 | 
            +
                    segments: 
         | 
| 31 | 
            +
                    - 0
         | 
| 32 | 
            +
                    - 8
         | 
| 33 | 
            +
                    - 2
         | 
| 34 | 
            +
                    version: 0.8.2
         | 
| 35 | 
            +
              type: :development
         | 
| 36 | 
            +
              version_requirements: *id001
         | 
| 37 | 
            +
            - !ruby/object:Gem::Dependency 
         | 
| 38 | 
            +
              name: fakeweb
         | 
| 39 | 
            +
              prerelease: false
         | 
| 40 | 
            +
              requirement: &id002 !ruby/object:Gem::Requirement 
         | 
| 41 | 
            +
                none: false
         | 
| 42 | 
            +
                requirements: 
         | 
| 43 | 
            +
                - - ~>
         | 
| 44 | 
            +
                  - !ruby/object:Gem::Version 
         | 
| 45 | 
            +
                    hash: 25
         | 
| 46 | 
            +
                    segments: 
         | 
| 47 | 
            +
                    - 1
         | 
| 48 | 
            +
                    - 0
         | 
| 49 | 
            +
                    - 7
         | 
| 50 | 
            +
                    version: 1.0.7
         | 
| 51 | 
            +
              type: :development
         | 
| 52 | 
            +
              version_requirements: *id002
         | 
| 53 | 
            +
            description: Client ruby para os encurtadores http://zapt.in e http://abr.io
         | 
| 54 | 
            +
            email: 
         | 
| 55 | 
            +
            - roger.leite@abril.com.br
         | 
| 56 | 
            +
            executables: []
         | 
| 57 | 
            +
             | 
| 58 | 
            +
            extensions: []
         | 
| 59 | 
            +
             | 
| 60 | 
            +
            extra_rdoc_files: []
         | 
| 61 | 
            +
             | 
| 62 | 
            +
            files: 
         | 
| 63 | 
            +
            - .gitignore
         | 
| 64 | 
            +
            - Gemfile
         | 
| 65 | 
            +
            - Gemfile.lock
         | 
| 66 | 
            +
            - LICENSE
         | 
| 67 | 
            +
            - README.md
         | 
| 68 | 
            +
            - Rakefile
         | 
| 69 | 
            +
            - lib/zapt_in.rb
         | 
| 70 | 
            +
            - lib/zapt_in/client.rb
         | 
| 71 | 
            +
            - lib/zapt_in/error.rb
         | 
| 72 | 
            +
            - lib/zapt_in/request.rb
         | 
| 73 | 
            +
            - lib/zapt_in/url.rb
         | 
| 74 | 
            +
            - lib/zapt_in/version.rb
         | 
| 75 | 
            +
            - test/fixtures/shorten_failure
         | 
| 76 | 
            +
            - test/fixtures/shorten_success
         | 
| 77 | 
            +
            - test/test_helper.rb
         | 
| 78 | 
            +
            - test/zapt_in/client_test.rb
         | 
| 79 | 
            +
            - test/zapt_in/request_test.rb
         | 
| 80 | 
            +
            - zapt_in.gemspec
         | 
| 81 | 
            +
            has_rdoc: true
         | 
| 82 | 
            +
            homepage: ""
         | 
| 83 | 
            +
            licenses: []
         | 
| 84 | 
            +
             | 
| 85 | 
            +
            post_install_message: 
         | 
| 86 | 
            +
            rdoc_options: []
         | 
| 87 | 
            +
             | 
| 88 | 
            +
            require_paths: 
         | 
| 89 | 
            +
            - lib
         | 
| 90 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement 
         | 
| 91 | 
            +
              none: false
         | 
| 92 | 
            +
              requirements: 
         | 
| 93 | 
            +
              - - ">="
         | 
| 94 | 
            +
                - !ruby/object:Gem::Version 
         | 
| 95 | 
            +
                  hash: 57
         | 
| 96 | 
            +
                  segments: 
         | 
| 97 | 
            +
                  - 1
         | 
| 98 | 
            +
                  - 8
         | 
| 99 | 
            +
                  - 7
         | 
| 100 | 
            +
                  version: 1.8.7
         | 
| 101 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement 
         | 
| 102 | 
            +
              none: false
         | 
| 103 | 
            +
              requirements: 
         | 
| 104 | 
            +
              - - ">="
         | 
| 105 | 
            +
                - !ruby/object:Gem::Version 
         | 
| 106 | 
            +
                  hash: 3
         | 
| 107 | 
            +
                  segments: 
         | 
| 108 | 
            +
                  - 0
         | 
| 109 | 
            +
                  version: "0"
         | 
| 110 | 
            +
            requirements: []
         | 
| 111 | 
            +
             | 
| 112 | 
            +
            rubyforge_project: 
         | 
| 113 | 
            +
            rubygems_version: 1.4.1
         | 
| 114 | 
            +
            signing_key: 
         | 
| 115 | 
            +
            specification_version: 3
         | 
| 116 | 
            +
            summary: Client ruby para os encurtadores http://zapt.in e http://abr.io
         | 
| 117 | 
            +
            test_files: []
         | 
| 118 | 
            +
             |