# 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
# 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
# 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
# File lib/webmock/request_pattern.rb, line 22 def with(options = {}, &block) assign_options(options) @with_block = block self end
# File lib/webmock/request_pattern.rb, line 50 def assign_options(options) @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
# File lib/webmock/request_pattern.rb, line 56 def create_uri_pattern(uri) if uri.is_a?(Regexp) URIRegexpPattern.new(uri) else URIStringPattern.new(uri) end end