Sha256: 25a32cbb95c89fd1def062c95b138aa226b0e2a4d244f5a85b60667bcbad05f9

Contents?: true

Size: 1.54 KB

Versions: 1

Compression:

Stored size: 1.54 KB

Contents

module WebSpeak
  module HTTP

    module Dialect
      def host(host)
        request.host = host
      end

      def port(port)
        request.port = port
      end

      def path(path)
        request.path = path
      end

      def header(*args)
        name, value = get_name_value_pair('header', args)
        request.headers[name] = value
      end

      def query_param(*args)
        name, value = get_name_value_pair('query_param', args)
        request.query_params[name] = value
      end
      
      def param(*args)
        name, value = get_name_value_pair('param', args)
        request.params[name] = value
      end

      def cookie(*args)
        name, value = get_name_value_pair('cookie', args)
        request.cookies[name] = value
      end

      def post
        request.post()
      end
      
      def get
        request.get()
      end
      
      def request
        @request ||= WebSpeak::Request.new
      end
      
      def response
        @response_accessor = ResponseAccessor.new(request.response)
      end

    protected
      def get_name_value_pair(method_name, args)
        raise "wrong number of arguments for '#{method_name}'.  " + 
        "Use either 'name' => 'value' or 'name', 'value'" if 
        args.size < 1 || args.size > 2 || (args.size == 1 && (!args.class == Hash))
        if args.length == 2
          name, value = args[0,2]
        else
          name, value = args[0].keys.first, args[0].values.first
        end
        [name, value]
      end
    end

    class Base
      include Dialect
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
webspeak-0.0.1 lib/webspeak/http_dialect.rb