module RspecApiDocumentation::DSL::Endpoint
Constants
- URL_PARAMS_REGEX
Public Instance Methods
authentication(type, value, opts = {})
click to toggle source
# File lib/rspec_api_documentation/dsl/endpoint.rb, line 80 def authentication(type, value, opts = {}) name, new_opts = case type when :basic then ['Authorization', opts.merge(type: type)] when :apiKey then [opts[:name], opts.merge(type: type, in: :header)] else raise 'Not supported type for authentication' end header(name, value) example.metadata[:authentications] ||= {} example.metadata[:authentications][name] = new_opts end
do_request(extra_params = {})
click to toggle source
# File lib/rspec_api_documentation/dsl/endpoint.rb, line 35 def do_request(extra_params = {}) @extra_params = extra_params params_or_body = nil path_or_query = path extended_parameters extract_route_parameters! if http_method == :get && !query_string.blank? path_or_query += "?#{query_string}" else if respond_to?(:raw_post) params_or_body = raw_post else formatter = RspecApiDocumentation.configuration.request_body_formatter case formatter when :json params_or_body = params.empty? ? nil : params.to_json when :xml params_or_body = params.to_xml when Proc params_or_body = formatter.call(params) else params_or_body = params end end end rspec_api_documentation_client.send(http_method, path_or_query, params_or_body, headers) end
example()
click to toggle source
# File lib/rspec_api_documentation/dsl/endpoint.rb, line 158 def example RSpec.current_example end
explanation(text)
click to toggle source
# File lib/rspec_api_documentation/dsl/endpoint.rb, line 154 def explanation(text) example.metadata[:explanation] = text end
extended_parameters()
click to toggle source
# File lib/rspec_api_documentation/dsl/endpoint.rb, line 106 def extended_parameters example.metadata[:extended_parameters] ||= Params.new(self, example, extra_params).extended end
extract_route_parameters!()
click to toggle source
# File lib/rspec_api_documentation/dsl/endpoint.rb, line 92 def extract_route_parameters! example.metadata[:route].gsub(URL_PARAMS_REGEX) do |match| value = if extra_params.keys.include?($1) extra_params[$1] elsif respond_to?($1) send($1) else match end extended_parameters << {name: match[1..-1], value: value, in: :path} end end
header(name, value)
click to toggle source
# File lib/rspec_api_documentation/dsl/endpoint.rb, line 75 def header(name, value) example.metadata[:headers] ||= {} example.metadata[:headers][name] = value end
headers()
click to toggle source
# File lib/rspec_api_documentation/dsl/endpoint.rb, line 110 def headers return unless example.metadata[:headers] example.metadata[:headers].inject({}) do |hash, (header, value)| if value.is_a?(Symbol) hash[header] = send(value) if respond_to?(value) else hash[header] = value end hash end end
http_method()
click to toggle source
# File lib/rspec_api_documentation/dsl/endpoint.rb, line 122 def http_method example.metadata[:method] end
in_path?(param)
click to toggle source
# File lib/rspec_api_documentation/dsl/endpoint.rb, line 134 def in_path?(param) path_params.include?(param) end
method()
click to toggle source
# File lib/rspec_api_documentation/dsl/endpoint.rb, line 126 def method http_method end
params()
click to toggle source
# File lib/rspec_api_documentation/dsl/endpoint.rb, line 71 def params Params.new(self, example, extra_params).call end
path()
click to toggle source
# File lib/rspec_api_documentation/dsl/endpoint.rb, line 142 def path example.metadata[:route].gsub(URL_PARAMS_REGEX) do |match| if extra_params.keys.include?($1) delete_extra_param($1) elsif respond_to?($1) escape send($1) else escape match end end end
path_params()
click to toggle source
# File lib/rspec_api_documentation/dsl/endpoint.rb, line 138 def path_params example.metadata[:route].scan(URL_PARAMS_REGEX).flatten end
query_string()
click to toggle source
# File lib/rspec_api_documentation/dsl/endpoint.rb, line 67 def query_string build_nested_query(params || {}) end
status()
click to toggle source
# File lib/rspec_api_documentation/dsl/endpoint.rb, line 130 def status rspec_api_documentation_client.status end
Private Instance Methods
delete_extra_param(key)
click to toggle source
# File lib/rspec_api_documentation/dsl/endpoint.rb, line 177 def delete_extra_param(key) @extra_params.delete(key.to_sym) || @extra_params.delete(key.to_s) end
extra_params()
click to toggle source
# File lib/rspec_api_documentation/dsl/endpoint.rb, line 168 def extra_params return {} if @extra_params.nil? @extra_params.inject({}) do |h, (k, v)| v = v.is_a?(Hash) ? v.stringify_keys : v h[k.to_s] = v h end end
rspec_api_documentation_client()
click to toggle source
# File lib/rspec_api_documentation/dsl/endpoint.rb, line 164 def rspec_api_documentation_client send(RspecApiDocumentation.configuration.client_method) end