Sha256: 811f7d33cdcb4d118ad231e11badbf2551adb9476d779f47889c851124d7862c
Contents?: true
Size: 1.99 KB
Versions: 2
Compression:
Stored size: 1.99 KB
Contents
module RspecApiDocumentation class ClientBase < Struct.new(:context, :options) include Headers delegate :example, :app, :to => :context delegate :metadata, :to => :example def get(*args) process :get, *args end def post(*args) process :post, *args end def put(*args) process :put, *args end def delete(*args) process :delete, *args end def response_status status end private def process(method, path, params = {}, headers ={}) do_request(method, path, params, headers) document_example(method.to_s.upcase, path) end def document_example(method, path) return unless metadata[:document] input = last_request.env["rack.input"] input.rewind request_body = input.read request_metadata = {} request_metadata[:request_method] = method request_metadata[:request_path] = path request_metadata[:request_body] = request_body.empty? ? nil : request_body request_metadata[:request_headers] = request_headers request_metadata[:request_query_parameters] = query_hash request_metadata[:request_content_type] = request_content_type request_metadata[:response_status] = status request_metadata[:response_status_text] = Rack::Utils::HTTP_STATUS_CODES[status] request_metadata[:response_body] = response_body.empty? ? nil : response_body request_metadata[:response_headers] = response_headers request_metadata[:response_content_type] = response_content_type request_metadata[:curl] = Curl.new(method, path, request_body, request_headers) metadata[:requests] ||= [] metadata[:requests] << request_metadata end def query_hash strings = query_string.split("&") arrays = strings.map do |segment| k,v = segment.split("=") [k, CGI.unescape(v)] end Hash[arrays] end def headers(method, path, params, request_headers) request_headers || {} end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
rspec_api_documentation-0.8.0 | lib/rspec_api_documentation/client_base.rb |
rspec_api_documentation-0.7.1 | lib/rspec_api_documentation/client_base.rb |