Class: Pact::Request::Base

Inherits:
Object
  • Object
show all
Includes:
SymbolizeKeys
Defined in:
lib/pact/shared/request.rb

Direct Known Subclasses

Consumer::Request::Actual, Expected

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from SymbolizeKeys

included, #symbolize_keys

Constructor Details

#initialize(method, path, headers, body, query) ⇒ Base

Returns a new instance of Base.



15
16
17
18
19
20
21
# File 'lib/pact/shared/request.rb', line 15

def initialize(method, path, headers, body, query)
  @method = method.to_s
  @path = path
  @headers = Hash === headers ? Headers.new(headers) : headers # Could be a NullExpectation - TODO make this more elegant
  @body = body
  @query = is_unspecified?(query) ? query : Pact::Query.create(query)
end

Instance Attribute Details

#bodyObject (readonly)

Returns the value of attribute body.



13
14
15
# File 'lib/pact/shared/request.rb', line 13

def body
  @body
end

#headersObject (readonly)

Returns the value of attribute headers.



13
14
15
# File 'lib/pact/shared/request.rb', line 13

def headers
  @headers
end

#methodObject (readonly)

Returns the value of attribute method.



13
14
15
# File 'lib/pact/shared/request.rb', line 13

def method
  @method
end

#optionsObject (readonly)

Returns the value of attribute options.



13
14
15
# File 'lib/pact/shared/request.rb', line 13

def options
  @options
end

#pathObject (readonly)

Returns the value of attribute path.



13
14
15
# File 'lib/pact/shared/request.rb', line 13

def path
  @path
end

#queryObject (readonly)

Returns the value of attribute query.



13
14
15
# File 'lib/pact/shared/request.rb', line 13

def query
  @query
end

Instance Method Details

#content_typeObject



42
43
44
45
# File 'lib/pact/shared/request.rb', line 42

def content_type
  return nil unless specified?(:headers) && headers['Content-Type']
  Pact::Reification.from_term(headers['Content-Type'])
end

#content_type?(content_type) ⇒ Boolean

Returns:

  • (Boolean)


47
48
49
# File 'lib/pact/shared/request.rb', line 47

def content_type? content_type
  self.content_type == content_type
end

#full_pathObject



38
39
40
# File 'lib/pact/shared/request.rb', line 38

def full_path
  display_path + display_query
end

#method_and_pathObject



34
35
36
# File 'lib/pact/shared/request.rb', line 34

def method_and_path
  "#{method.upcase} #{full_path}"
end

#modifies_resource?Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/pact/shared/request.rb', line 51

def modifies_resource?
  http_method_modifies_resource? && body_specified?
end

#specified?(key) ⇒ Boolean

Returns:

  • (Boolean)


55
56
57
# File 'lib/pact/shared/request.rb', line 55

def specified? key
  !is_unspecified?(self.send(key))
end

#to_hashObject



23
24
25
26
27
28
29
30
31
32
# File 'lib/pact/shared/request.rb', line 23

def to_hash
  hash = {
    method: method,
    path: path,
  }
  hash[:query] = query if specified?(:query)
  hash[:headers] = headers if specified?(:headers)
  hash[:body] = body if specified?(:body)
  hash
end