Sha256: 1a33058c4136b368feb2aa39e2eb53257109091d4634dbb8dc9109998311eda5

Contents?: true

Size: 1.15 KB

Versions: 1

Compression:

Stored size: 1.15 KB

Contents

require "savon"
require "savon/ext/response"

module Savon
  module Model

    VERSION = "0.1.2"

    class << self

      def response_pattern
        @response_pattern ||= []
      end

      attr_writer :response_pattern

    end

    module ClassMethods

      def client(&block)
        @@client ||= Savon::Client.new &block
      end

      def endpoint(uri)
        client.wsdl.endpoint = uri
      end

      def namespace(uri)
        client.wsdl.namespace = uri
      end

      def actions(*args)
        args.each do |arg|
          define_class_action arg
          define_instance_action arg
        end
      end

    private

      def define_class_action(action)
        instance_eval %Q{
          def #{action}(body = nil, &block)
            client.request :wsdl, :#{action}, :body => body, &block
          end
        }
      end

      def define_instance_action(action)
        class_eval %Q{
          def #{action}(body = nil, &block)
            self.class.#{action} body, &block
          end
        }
      end

    end

    def self.included(base)
      base.extend ClassMethods
    end

    def client
      self.class.client
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
savon_model-0.1.2 lib/savon/model.rb