class WebMock::RequestPattern

Attributes

body_pattern[R]
headers_pattern[R]
method_pattern[R]
uri_pattern[R]

Public Class Methods

new(method, uri, options = {}) click to toggle source
# File lib/webmock/request_pattern.rb, line 13
def initialize(method, uri, options = {})
  @method_pattern  = MethodPattern.new(method)
  @uri_pattern     = create_uri_pattern(uri)
  @body_pattern    = nil
  @headers_pattern = nil
  @with_block      = nil
  assign_options(options)
end

Public Instance Methods

matches?(request_signature) click to toggle source
# File lib/webmock/request_pattern.rb, line 28
def matches?(request_signature)
  content_type = request_signature.headers['Content-Type'] if request_signature.headers
  content_type = content_type.split(';').first if content_type
  @method_pattern.matches?(request_signature.method) &&
    @uri_pattern.matches?(request_signature.uri) &&
    (@body_pattern.nil? || @body_pattern.matches?(request_signature.body, content_type || "")) &&
    (@headers_pattern.nil? || @headers_pattern.matches?(request_signature.headers)) &&
    (@with_block.nil? || @with_block.call(request_signature))
end
to_s() click to toggle source
# File lib/webmock/request_pattern.rb, line 38
def to_s
  string = "#{@method_pattern.to_s.upcase}"
  string << " #{@uri_pattern.to_s}"
  string << " with body #{@body_pattern.to_s}" if @body_pattern
  string << " with headers #{@headers_pattern.to_s}" if @headers_pattern
  string << " with given block" if @with_block
  string
end
with(options = {}, &block) click to toggle source
# File lib/webmock/request_pattern.rb, line 22
def with(options = {}, &block)
  assign_options(options)
  @with_block = block
  self
end

Private Instance Methods

assign_options(options) click to toggle source
# File lib/webmock/request_pattern.rb, line 50
def assign_options(options)
  options = WebMock::Util::HashKeysStringifier.stringify_keys!(options, :deep => true)
  @body_pattern = BodyPattern.new(options['body']) if options.has_key?('body')
  @headers_pattern = HeadersPattern.new(options['headers']) if options.has_key?('headers')
  @uri_pattern.add_query_params(options['query']) if options.has_key?('query')
end
create_uri_pattern(uri) click to toggle source
# File lib/webmock/request_pattern.rb, line 57
def create_uri_pattern(uri)
  if uri.is_a?(Regexp)
    URIRegexpPattern.new(uri)
  elsif uri.is_a?(Addressable::Template)
    URIAddressablePattern.new(uri)
  else
    URIStringPattern.new(uri)
  end
end