relax 0.1.3 → 0.2.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/.gitignore +19 -0
- data/.rspec +2 -0
- data/CHANGELOG.md +63 -0
- data/Gemfile +3 -0
- data/LICENSE +3 -1
- data/README.md +80 -0
- data/Rakefile +2 -52
- data/examples/delicious.rb +61 -0
- data/examples/flickr.rb +66 -0
- data/examples/vimeo.rb +65 -0
- data/lib/relax.rb +6 -16
- data/lib/relax/client.rb +18 -0
- data/lib/relax/config.rb +12 -0
- data/lib/relax/delegator.rb +25 -0
- data/lib/relax/resource.rb +32 -0
- data/lib/relax/version.rb +3 -0
- data/relax.gemspec +17 -0
- data/spec/relax/client_spec.rb +39 -0
- data/spec/relax/config_spec.rb +17 -0
- data/spec/relax/delegator_spec.rb +32 -0
- data/spec/relax/resource_spec.rb +60 -0
- data/spec/spec_helper.rb +9 -13
- metadata +75 -96
- data/README.rdoc +0 -194
- data/VERSION.yml +0 -4
- data/lib/relax/action.rb +0 -49
- data/lib/relax/context.rb +0 -46
- data/lib/relax/contextable.rb +0 -15
- data/lib/relax/endpoint.rb +0 -21
- data/lib/relax/instance.rb +0 -25
- data/lib/relax/parameter.rb +0 -23
- data/lib/relax/performer.rb +0 -58
- data/lib/relax/service.rb +0 -45
- data/spec/relax/context_spec.rb +0 -18
- data/spec/relax/endpoint_spec.rb +0 -99
- data/spec/relax/integration_spec.rb +0 -63
- data/spec/relax/service_spec.rb +0 -32
- data/spec/services/blank_values_service.rb +0 -19
- data/spec/services/custom_parser_service.rb +0 -24
- data/spec/services/flickr.rb +0 -78
- data/spec/services/parameter_alias_service.rb +0 -17
    
        data/lib/relax/service.rb
    DELETED
    
    | @@ -1,45 +0,0 @@ | |
| 1 | 
            -
            module Relax
         | 
| 2 | 
            -
              class Service
         | 
| 3 | 
            -
                def initialize(values={}, options={})
         | 
| 4 | 
            -
                  @values = values
         | 
| 5 | 
            -
                  @options = options
         | 
| 6 | 
            -
                end
         | 
| 7 | 
            -
             | 
| 8 | 
            -
                def authenticate(*args)
         | 
| 9 | 
            -
                  @options[:credentials] = args
         | 
| 10 | 
            -
                  self
         | 
| 11 | 
            -
                end
         | 
| 12 | 
            -
             | 
| 13 | 
            -
                def proxy(url)
         | 
| 14 | 
            -
                  @options[:proxy] = url
         | 
| 15 | 
            -
                  self
         | 
| 16 | 
            -
                end
         | 
| 17 | 
            -
             | 
| 18 | 
            -
                def include_blank_values(value)
         | 
| 19 | 
            -
                  @options[:include_blank_values] = value
         | 
| 20 | 
            -
                  self
         | 
| 21 | 
            -
                end
         | 
| 22 | 
            -
             | 
| 23 | 
            -
                class << self
         | 
| 24 | 
            -
                  include Contextable
         | 
| 25 | 
            -
             | 
| 26 | 
            -
                  def endpoint(url, options={}, &block)
         | 
| 27 | 
            -
                    Endpoint.new(self, url, options, &block)
         | 
| 28 | 
            -
                  end
         | 
| 29 | 
            -
             | 
| 30 | 
            -
                  def register_action(action) # :nodoc:
         | 
| 31 | 
            -
                    @actions ||= {}
         | 
| 32 | 
            -
             | 
| 33 | 
            -
                    unless @actions[action.name]
         | 
| 34 | 
            -
                      @actions[action.name] = action.name
         | 
| 35 | 
            -
             | 
| 36 | 
            -
                      define_method(action.name) do |*args|
         | 
| 37 | 
            -
                        action.execute(@values, @options, *args)
         | 
| 38 | 
            -
                      end
         | 
| 39 | 
            -
                    else
         | 
| 40 | 
            -
                      raise ArgumentError.new("Duplicate action '#{action.name}'.") 
         | 
| 41 | 
            -
                    end
         | 
| 42 | 
            -
                  end
         | 
| 43 | 
            -
                end
         | 
| 44 | 
            -
              end
         | 
| 45 | 
            -
            end
         | 
    
        data/spec/relax/context_spec.rb
    DELETED
    
    | @@ -1,18 +0,0 @@ | |
| 1 | 
            -
            require File.join(File.dirname(__FILE__), '..', 'spec_helper')
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            describe Relax::Context do
         | 
| 4 | 
            -
              it "utilizes a custom parser for Class parsers" do
         | 
| 5 | 
            -
                service = CustomParserService.new
         | 
| 6 | 
            -
                service.test.should == 'parsed'
         | 
| 7 | 
            -
              end
         | 
| 8 | 
            -
             | 
| 9 | 
            -
              it "allows parameters with aliases" do
         | 
| 10 | 
            -
                service = ParameterAliasService.new
         | 
| 11 | 
            -
                service.test(:api_key => 'secret')[:stat].should == 'ok'
         | 
| 12 | 
            -
              end
         | 
| 13 | 
            -
             | 
| 14 | 
            -
              it "allows blank parameters values" do
         | 
| 15 | 
            -
                service = BlankValuesService.new({}, :include_blank_values => true)
         | 
| 16 | 
            -
                service.test[:stat].should == 'ok'
         | 
| 17 | 
            -
              end
         | 
| 18 | 
            -
            end
         | 
    
        data/spec/relax/endpoint_spec.rb
    DELETED
    
    | @@ -1,99 +0,0 @@ | |
| 1 | 
            -
            require File.join(File.dirname(__FILE__), '..', 'spec_helper')
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            describe Relax::Endpoint do
         | 
| 4 | 
            -
              it "provides access to the URL" do
         | 
| 5 | 
            -
                service = Class.new(Relax::Service)
         | 
| 6 | 
            -
                endpoint = service.endpoint("http://api.example.com/") { }
         | 
| 7 | 
            -
                endpoint.url.should == "http://api.example.com/"
         | 
| 8 | 
            -
              end
         | 
| 9 | 
            -
             | 
| 10 | 
            -
              it "allows contextual defaults to be set" do
         | 
| 11 | 
            -
                service = Class.new(Relax::Service)
         | 
| 12 | 
            -
                endpoint = service.endpoint("http://api.example.com/") { }
         | 
| 13 | 
            -
                endpoint.should respond_to(:defaults)
         | 
| 14 | 
            -
              end
         | 
| 15 | 
            -
             | 
| 16 | 
            -
              describe "actions" do
         | 
| 17 | 
            -
                it "should check for required values for service defaults" do
         | 
| 18 | 
            -
                  service = Class.new(Relax::Service) do
         | 
| 19 | 
            -
                    defaults { parameter :api_key, :required => true }
         | 
| 20 | 
            -
                    endpoint("http://api.example.com/") { action(:fetch) { } }
         | 
| 21 | 
            -
                  end
         | 
| 22 | 
            -
             | 
| 23 | 
            -
                  proc {
         | 
| 24 | 
            -
                    service.new.fetch
         | 
| 25 | 
            -
                  }.should raise_error(ArgumentError, /missing.*api_key/i)
         | 
| 26 | 
            -
                end
         | 
| 27 | 
            -
             | 
| 28 | 
            -
                it "should check for required values for endpoint defaults" do
         | 
| 29 | 
            -
                  service = Class.new(Relax::Service) do
         | 
| 30 | 
            -
                    endpoint("http://api.example.com/") do
         | 
| 31 | 
            -
                      defaults { parameter :operation, :required => true }
         | 
| 32 | 
            -
                      action(:fetch) { }
         | 
| 33 | 
            -
                    end
         | 
| 34 | 
            -
                  end
         | 
| 35 | 
            -
             | 
| 36 | 
            -
                  proc {
         | 
| 37 | 
            -
                    service.new.fetch
         | 
| 38 | 
            -
                  }.should raise_error(ArgumentError, /missing.*operation/i)
         | 
| 39 | 
            -
                end
         | 
| 40 | 
            -
             | 
| 41 | 
            -
                it "should check for required values for action parameters" do
         | 
| 42 | 
            -
                  service = Class.new(Relax::Service) do
         | 
| 43 | 
            -
                    endpoint("http://api.example.com/") do
         | 
| 44 | 
            -
                      action(:fetch) { parameter :id, :required => true }
         | 
| 45 | 
            -
                    end
         | 
| 46 | 
            -
                  end
         | 
| 47 | 
            -
             | 
| 48 | 
            -
                  proc {
         | 
| 49 | 
            -
                    service.new.fetch
         | 
| 50 | 
            -
                  }.should raise_error(ArgumentError, /missing.*id/i)
         | 
| 51 | 
            -
                end
         | 
| 52 | 
            -
             | 
| 53 | 
            -
                it "should create required parameters from tokens in the endpoint URL" do
         | 
| 54 | 
            -
                  service = Class.new(Relax::Service) do
         | 
| 55 | 
            -
                    endpoint("http://api.example.com/:version/") do
         | 
| 56 | 
            -
                      action(:fetch) { parameter :id }
         | 
| 57 | 
            -
                    end
         | 
| 58 | 
            -
                  end
         | 
| 59 | 
            -
             | 
| 60 | 
            -
                  proc {
         | 
| 61 | 
            -
                    service.new.fetch
         | 
| 62 | 
            -
                  }.should raise_error(ArgumentError, /missing.*version/i)
         | 
| 63 | 
            -
                end
         | 
| 64 | 
            -
             | 
| 65 | 
            -
                it "should replace parameter tokens in the endpoint URL" do
         | 
| 66 | 
            -
                  service = Class.new(Relax::Service) do
         | 
| 67 | 
            -
                    endpoint("http://api.example.com/:version/") do
         | 
| 68 | 
            -
                      action(:fetch) do
         | 
| 69 | 
            -
                        parameter :id
         | 
| 70 | 
            -
                        parser(:xml) { attribute :status }
         | 
| 71 | 
            -
                      end
         | 
| 72 | 
            -
                    end
         | 
| 73 | 
            -
                  end
         | 
| 74 | 
            -
             | 
| 75 | 
            -
                  FakeWeb.register_uri(:get, 'http://api.example.com/v1/', :string => <<-RESPONSE)
         | 
| 76 | 
            -
                    <?xml version="1.0" encoding="utf-8" ?>
         | 
| 77 | 
            -
                    <response status="ok" />
         | 
| 78 | 
            -
                  RESPONSE
         | 
| 79 | 
            -
             | 
| 80 | 
            -
                  service.new(:version => 'v1').fetch.should == { :status => 'ok' }
         | 
| 81 | 
            -
                end
         | 
| 82 | 
            -
              end
         | 
| 83 | 
            -
             | 
| 84 | 
            -
              describe ".action" do
         | 
| 85 | 
            -
                it "is callable from within an Endpoint" do
         | 
| 86 | 
            -
                  service = Class.new(Relax::Service)
         | 
| 87 | 
            -
                  endpoint = service.endpoint("http://api.example.com/") { }
         | 
| 88 | 
            -
                  endpoint.should respond_to(:action)
         | 
| 89 | 
            -
                end
         | 
| 90 | 
            -
             | 
| 91 | 
            -
                it "defines an instance method by the same name on the Service" do
         | 
| 92 | 
            -
                  service = Class.new(Relax::Service)
         | 
| 93 | 
            -
                  service.new.should_not respond_to(:fetch)
         | 
| 94 | 
            -
             | 
| 95 | 
            -
                  service.endpoint("http://api.example.com/") { action :fetch }
         | 
| 96 | 
            -
                  service.new.should respond_to(:fetch)
         | 
| 97 | 
            -
                end
         | 
| 98 | 
            -
              end
         | 
| 99 | 
            -
            end
         | 
| @@ -1,63 +0,0 @@ | |
| 1 | 
            -
            require File.join(File.dirname(__FILE__), '..', 'spec_helper')
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            describe "an example service's" do
         | 
| 4 | 
            -
              describe "get_photos action" do
         | 
| 5 | 
            -
                it "includes :get_photos" do
         | 
| 6 | 
            -
                  Flickr.new.should respond_to(:get_photos)
         | 
| 7 | 
            -
                end
         | 
| 8 | 
            -
             | 
| 9 | 
            -
                it "requires an API key" do
         | 
| 10 | 
            -
                  proc {
         | 
| 11 | 
            -
                    Flickr.new.get_photos
         | 
| 12 | 
            -
                  }.should raise_error(ArgumentError, /missing.*api_key/i)
         | 
| 13 | 
            -
                end
         | 
| 14 | 
            -
             | 
| 15 | 
            -
                it "requires a user ID" do
         | 
| 16 | 
            -
                  proc {
         | 
| 17 | 
            -
                    Flickr.new(:api_key => 'secret').get_photos
         | 
| 18 | 
            -
                  }.should raise_error(ArgumentError, /missing.*user_id/i)
         | 
| 19 | 
            -
                end
         | 
| 20 | 
            -
             | 
| 21 | 
            -
                it "parses the response" do
         | 
| 22 | 
            -
                  flickr = Flickr.new(:api_key => 'secret')
         | 
| 23 | 
            -
                  flickr.get_photos(:user_id => '59532755@N00', :per_page => 3).should == {
         | 
| 24 | 
            -
                    :status => 'ok',
         | 
| 25 | 
            -
                    :photos => {
         | 
| 26 | 
            -
                      :total => '7830',
         | 
| 27 | 
            -
                      :photo => [
         | 
| 28 | 
            -
                        { :ispublic => '1', :isfriend => '0', :owner => '59532755@N00', :isfamily => '0', :secret => '2ebe0307e3', :server => '3562', :farm => '4', :id => '3508500178', :title => 'Rich Kilmer'},
         | 
| 29 | 
            -
                        {:ispublic => '1', :isfriend => '0', :owner => '59532755@N00', :isfamily => '0', :secret => '10b217377b', :server => '3593', :farm => '4', :id => '3508500140', :title => 'Women In Rails'},
         | 
| 30 | 
            -
                        {:ispublic => '1', :isfriend => '0', :owner => '59532755@N00', :isfamily => '0', :secret => '83bc8fbf71', :server => '3620', :farm => '4', :id => '3507688713', :title => 'Obie Fernandez'}
         | 
| 31 | 
            -
                      ],
         | 
| 32 | 
            -
                      :per_page => '3',
         | 
| 33 | 
            -
                      :pages => '2610',
         | 
| 34 | 
            -
                      :page => '1'
         | 
| 35 | 
            -
                    }
         | 
| 36 | 
            -
                  }
         | 
| 37 | 
            -
                end
         | 
| 38 | 
            -
              end
         | 
| 39 | 
            -
             | 
| 40 | 
            -
              describe "get_user_by_username action" do
         | 
| 41 | 
            -
                it "includes :get_user_by_username" do
         | 
| 42 | 
            -
                  Flickr.new.should respond_to(:get_user_by_username)
         | 
| 43 | 
            -
                end
         | 
| 44 | 
            -
             | 
| 45 | 
            -
                it "requires an API key" do
         | 
| 46 | 
            -
                  proc {
         | 
| 47 | 
            -
                    Flickr.new.get_user_by_username
         | 
| 48 | 
            -
                  }.should raise_error(ArgumentError, /missing.*api_key/i)
         | 
| 49 | 
            -
                end
         | 
| 50 | 
            -
             | 
| 51 | 
            -
                it "parses the response" do
         | 
| 52 | 
            -
                  flickr = Flickr.new(:api_key => 'secret')
         | 
| 53 | 
            -
                  flickr.get_user_by_username(:username => 'duncandavidson').should == {
         | 
| 54 | 
            -
                    :user => {
         | 
| 55 | 
            -
                      :username => 'duncandavidson',
         | 
| 56 | 
            -
                      :nsid => '59532755@N00',
         | 
| 57 | 
            -
                      :id => '59532755@N00'
         | 
| 58 | 
            -
                    },
         | 
| 59 | 
            -
                    :status => 'ok'
         | 
| 60 | 
            -
                  }
         | 
| 61 | 
            -
                end
         | 
| 62 | 
            -
              end
         | 
| 63 | 
            -
            end
         | 
    
        data/spec/relax/service_spec.rb
    DELETED
    
    | @@ -1,32 +0,0 @@ | |
| 1 | 
            -
            require File.join(File.dirname(__FILE__), '..', 'spec_helper')
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            describe Relax::Service do
         | 
| 4 | 
            -
              it "allows contextual defaults to be set" do
         | 
| 5 | 
            -
                Relax::Service.should respond_to(:defaults)
         | 
| 6 | 
            -
              end
         | 
| 7 | 
            -
             | 
| 8 | 
            -
              describe "#authenticate" do
         | 
| 9 | 
            -
                it "is callable from within a Service" do
         | 
| 10 | 
            -
                  Relax::Service.new.should respond_to(:authenticate)
         | 
| 11 | 
            -
                end
         | 
| 12 | 
            -
             | 
| 13 | 
            -
                it "returns the service" do
         | 
| 14 | 
            -
                  service = Relax::Service.new
         | 
| 15 | 
            -
                  service.authenticate('username', 'password').should == service
         | 
| 16 | 
            -
                end
         | 
| 17 | 
            -
              end
         | 
| 18 | 
            -
             | 
| 19 | 
            -
              describe ".endpoint" do
         | 
| 20 | 
            -
                it "is callable from within a Service" do
         | 
| 21 | 
            -
                  Relax::Service.should respond_to(:endpoint)
         | 
| 22 | 
            -
                end
         | 
| 23 | 
            -
             | 
| 24 | 
            -
                it "creates a new Endpoint" do
         | 
| 25 | 
            -
                  Relax::Endpoint.should_receive(:new)
         | 
| 26 | 
            -
             | 
| 27 | 
            -
                  class Service < Relax::Service
         | 
| 28 | 
            -
                    endpoint "http://api.example.com/"
         | 
| 29 | 
            -
                  end
         | 
| 30 | 
            -
                end
         | 
| 31 | 
            -
              end
         | 
| 32 | 
            -
            end
         | 
| @@ -1,19 +0,0 @@ | |
| 1 | 
            -
            class BlankValuesService < Relax::Service
         | 
| 2 | 
            -
              endpoint 'http://example.com/' do
         | 
| 3 | 
            -
                action :test do
         | 
| 4 | 
            -
                  parameter :one
         | 
| 5 | 
            -
                  parameter :two
         | 
| 6 | 
            -
                  parameter :three
         | 
| 7 | 
            -
             | 
| 8 | 
            -
                  parser :response do
         | 
| 9 | 
            -
                    attribute :stat
         | 
| 10 | 
            -
                  end
         | 
| 11 | 
            -
                end
         | 
| 12 | 
            -
              end
         | 
| 13 | 
            -
            end
         | 
| 14 | 
            -
             | 
| 15 | 
            -
            FakeWeb.register_uri(:get, 'http://example.com/?one=&two=&three=', :string => <<-RESPONSE)
         | 
| 16 | 
            -
              <?xml version="1.0" encoding="utf-8" ?>
         | 
| 17 | 
            -
              <response stat="ok">
         | 
| 18 | 
            -
              </response>
         | 
| 19 | 
            -
            RESPONSE
         | 
| @@ -1,24 +0,0 @@ | |
| 1 | 
            -
            class TestCustomParser
         | 
| 2 | 
            -
              def initialize(options = {}, &block)
         | 
| 3 | 
            -
              end
         | 
| 4 | 
            -
             | 
| 5 | 
            -
              def parse(input)
         | 
| 6 | 
            -
                'parsed'
         | 
| 7 | 
            -
              end
         | 
| 8 | 
            -
            end
         | 
| 9 | 
            -
             | 
| 10 | 
            -
            class CustomParserService < Relax::Service
         | 
| 11 | 
            -
              endpoint "http://test.local/rest" do
         | 
| 12 | 
            -
                action :test do
         | 
| 13 | 
            -
                  parser TestCustomParser do
         | 
| 14 | 
            -
                    element :status, :attribute => :stat
         | 
| 15 | 
            -
                  end
         | 
| 16 | 
            -
                end
         | 
| 17 | 
            -
              end
         | 
| 18 | 
            -
            end
         | 
| 19 | 
            -
             | 
| 20 | 
            -
            FakeWeb.register_uri(:get, 'http://test.local/rest', :string => <<-RESPONSE)
         | 
| 21 | 
            -
              <?xml version="1.0" encoding="utf-8" ?>
         | 
| 22 | 
            -
              <test stat="ok">
         | 
| 23 | 
            -
              </test>
         | 
| 24 | 
            -
            RESPONSE
         | 
    
        data/spec/services/flickr.rb
    DELETED
    
    | @@ -1,78 +0,0 @@ | |
| 1 | 
            -
            class Flickr < Relax::Service
         | 
| 2 | 
            -
              defaults do
         | 
| 3 | 
            -
                parameter :api_key, :required => true
         | 
| 4 | 
            -
              end
         | 
| 5 | 
            -
             | 
| 6 | 
            -
              endpoint "http://api.flickr.com/services/rest" do
         | 
| 7 | 
            -
                defaults do
         | 
| 8 | 
            -
                  parameter :method, :required => true
         | 
| 9 | 
            -
                end
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                action :get_photos do
         | 
| 12 | 
            -
                  set :method, "flickr.people.getPublicPhotos"
         | 
| 13 | 
            -
                  parameter :user_id, :required => true
         | 
| 14 | 
            -
                  parameter :safe_search
         | 
| 15 | 
            -
                  parameter :extras
         | 
| 16 | 
            -
                  parameter :per_page
         | 
| 17 | 
            -
                  parameter :page
         | 
| 18 | 
            -
             | 
| 19 | 
            -
                  parser :rsp do
         | 
| 20 | 
            -
                    element :status, :attribute => :stat
         | 
| 21 | 
            -
             | 
| 22 | 
            -
                    element :photos do
         | 
| 23 | 
            -
                      element :page, :attribute => true
         | 
| 24 | 
            -
                      element :pages, :attribute => true
         | 
| 25 | 
            -
                      element :per_page, :attribute => :perpage
         | 
| 26 | 
            -
                      element :total, :attribute => true
         | 
| 27 | 
            -
             | 
| 28 | 
            -
                      elements :photo do
         | 
| 29 | 
            -
                        element :id, :attribute => true
         | 
| 30 | 
            -
                        element :owner, :attribute => true
         | 
| 31 | 
            -
                        element :secret, :attribute => true
         | 
| 32 | 
            -
                        element :server, :attribute => true
         | 
| 33 | 
            -
                        element :farm, :attribute => true
         | 
| 34 | 
            -
                        element :title, :attribute => true
         | 
| 35 | 
            -
                        element :ispublic, :attribute => true
         | 
| 36 | 
            -
                        element :isfriend, :attribute => true
         | 
| 37 | 
            -
                        element :isfamily, :attribute => true
         | 
| 38 | 
            -
                      end
         | 
| 39 | 
            -
                    end
         | 
| 40 | 
            -
                  end
         | 
| 41 | 
            -
                end
         | 
| 42 | 
            -
             | 
| 43 | 
            -
                action :get_user_by_username do
         | 
| 44 | 
            -
                  set :method, "flickr.people.findByUsername"
         | 
| 45 | 
            -
                  parameter :username, :required => true
         | 
| 46 | 
            -
             | 
| 47 | 
            -
                  parser :rsp do
         | 
| 48 | 
            -
                    element :status, :attribute => :stat
         | 
| 49 | 
            -
             | 
| 50 | 
            -
                    element :user do
         | 
| 51 | 
            -
                      element :id, :attribute => true
         | 
| 52 | 
            -
                      element :nsid, :attribute => true
         | 
| 53 | 
            -
                      element :username
         | 
| 54 | 
            -
                    end
         | 
| 55 | 
            -
                  end
         | 
| 56 | 
            -
                end
         | 
| 57 | 
            -
              end
         | 
| 58 | 
            -
            end
         | 
| 59 | 
            -
             | 
| 60 | 
            -
            FakeWeb.register_uri(:get, 'http://api.flickr.com/services/rest?api_key=secret&method=flickr.people.findByUsername&username=duncandavidson', :string => <<-RESPONSE)
         | 
| 61 | 
            -
              <?xml version="1.0" encoding="utf-8" ?>
         | 
| 62 | 
            -
              <rsp stat="ok">
         | 
| 63 | 
            -
                <user id="59532755@N00" nsid="59532755@N00">
         | 
| 64 | 
            -
                  <username>duncandavidson</username>
         | 
| 65 | 
            -
                </user>
         | 
| 66 | 
            -
              </rsp>
         | 
| 67 | 
            -
            RESPONSE
         | 
| 68 | 
            -
             | 
| 69 | 
            -
            FakeWeb.register_uri(:get, 'http://api.flickr.com/services/rest?user_id=59532755@N00&per_page=3&method=flickr.people.getPublicPhotos&api_key=secret', :string => <<-RESPONSE)
         | 
| 70 | 
            -
            <?xml version="1.0" encoding="utf-8" ?>
         | 
| 71 | 
            -
            <rsp stat="ok">
         | 
| 72 | 
            -
              <photos page="1" pages="2610" perpage="3" total="7830">
         | 
| 73 | 
            -
                <photo id="3508500178" owner="59532755@N00" secret="2ebe0307e3" server="3562" farm="4" title="Rich Kilmer" ispublic="1" isfriend="0" isfamily="0" />
         | 
| 74 | 
            -
                <photo id="3508500140" owner="59532755@N00" secret="10b217377b" server="3593" farm="4" title="Women In Rails" ispublic="1" isfriend="0" isfamily="0" />
         | 
| 75 | 
            -
                <photo id="3507688713" owner="59532755@N00" secret="83bc8fbf71" server="3620" farm="4" title="Obie Fernandez" ispublic="1" isfriend="0" isfamily="0" />
         | 
| 76 | 
            -
              </photos>
         | 
| 77 | 
            -
            </rsp>
         | 
| 78 | 
            -
            RESPONSE
         | 
| @@ -1,17 +0,0 @@ | |
| 1 | 
            -
            class ParameterAliasService < Relax::Service
         | 
| 2 | 
            -
              endpoint 'http://example.com/' do
         | 
| 3 | 
            -
                action :test do
         | 
| 4 | 
            -
                  parameter :APIKey, :as => :api_key, :required => true
         | 
| 5 | 
            -
             | 
| 6 | 
            -
                  parser :response do
         | 
| 7 | 
            -
                    attribute :stat
         | 
| 8 | 
            -
                  end
         | 
| 9 | 
            -
                end
         | 
| 10 | 
            -
              end
         | 
| 11 | 
            -
            end
         | 
| 12 | 
            -
             | 
| 13 | 
            -
            FakeWeb.register_uri(:get, 'http://example.com/?APIKey=secret', :string => <<-RESPONSE)
         | 
| 14 | 
            -
              <?xml version="1.0" encoding="utf-8" ?>
         | 
| 15 | 
            -
              <response stat="ok">
         | 
| 16 | 
            -
              </response>
         | 
| 17 | 
            -
            RESPONSE
         |