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.



12
13
14
15
16
17
18
# File 'lib/pact/shared/request.rb', line 12

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
  set_query(query)
end

Instance Attribute Details

#bodyObject (readonly)

Returns the value of attribute body.



10
11
12
# File 'lib/pact/shared/request.rb', line 10

def body
  @body
end

#headersObject (readonly)

Returns the value of attribute headers.



10
11
12
# File 'lib/pact/shared/request.rb', line 10

def headers
  @headers
end

#methodObject (readonly)

Returns the value of attribute method.



10
11
12
# File 'lib/pact/shared/request.rb', line 10

def method
  @method
end

#optionsObject (readonly)

Returns the value of attribute options.



10
11
12
# File 'lib/pact/shared/request.rb', line 10

def options
  @options
end

#pathObject (readonly)

Returns the value of attribute path.



10
11
12
# File 'lib/pact/shared/request.rb', line 10

def path
  @path
end

#queryObject (readonly)

Returns the value of attribute query.



10
11
12
# File 'lib/pact/shared/request.rb', line 10

def query
  @query
end

Instance Method Details

#content_typeObject



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

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)


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

def content_type? content_type
  self.content_type == content_type
end

#full_pathObject



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

def full_path
  display_path + display_query
end

#method_and_pathObject



31
32
33
# File 'lib/pact/shared/request.rb', line 31

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

#modifies_resource?Boolean

Returns:

  • (Boolean)


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

def modifies_resource?
  http_method_modifies_resource? && body_specified?
end

#specified?(key) ⇒ Boolean

Returns:

  • (Boolean)


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

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

#to_hashObject



20
21
22
23
24
25
26
27
28
29
# File 'lib/pact/shared/request.rb', line 20

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