Module: SwaggerMCPTool::Helpers::Request

Included in:
ApiClient
Defined in:
lib/swagger_mcp_tool/helpers/request.rb

Overview

Helper for HTTP request building and execution

Instance Method Summary collapse

Instance Method Details

#add_authorization_header(request, auth_token) ⇒ Object



70
71
72
73
74
75
# File 'lib/swagger_mcp_tool/helpers/request.rb', line 70

def add_authorization_header(request, auth_token)
  return unless auth_token && @config.auth_header_name

  request[@config.auth_header_name] = auth_token
  @config.logger.info 'Added authorization header for request'
end

#add_headers_to_request(request, headers, auth_token) ⇒ Object



59
60
61
62
63
64
65
66
67
68
# File 'lib/swagger_mcp_tool/helpers/request.rb', line 59

def add_headers_to_request(request, headers, auth_token)
  # Add custom headers
  headers.each do |key, value|
    next unless valid_header?(key, value)
    request[key] = sanitize_header_value(value)
  end

  # Add authorization header if available
  add_authorization_header(request, auth_token)
end

#body_required?(method) ⇒ Boolean

Returns:

  • (Boolean)


29
30
31
# File 'lib/swagger_mcp_tool/helpers/request.rb', line 29

def body_required?(method)
  %w[post put patch].include?(method)
end

#build_request_context(method, path, params, headers, server_context) ⇒ Object



11
12
13
14
15
16
17
18
19
# File 'lib/swagger_mcp_tool/helpers/request.rb', line 11

def build_request_context(method, path, params, headers, server_context)
  {
    method: method.downcase,
    original_path: path,
    params: params,
    headers: headers,
    auth_token: server_context[@config.auth_header_name]
  }
end

#build_request_uri(path, method, params) ⇒ Object



50
51
52
53
54
55
56
57
# File 'lib/swagger_mcp_tool/helpers/request.rb', line 50

def build_request_uri(path, method, params)
  uri = URI("#{@base_url}#{path}")

  # Add query parameters only for GET requests
  uri.query = URI.encode_www_form(params) if method == 'get' && !params.empty?

  uri
end

#create_http_request(method, uri, params) ⇒ Object



21
22
23
24
25
26
27
# File 'lib/swagger_mcp_tool/helpers/request.rb', line 21

def create_http_request(method, uri, params)
  req_method = request_methods(method.downcase&.to_sym)
  request = req_method.new(uri.request_uri)

  set_json_body(request, params) if body_required?(method.downcase)
  request
end

#process_path_parameters(path, params) ⇒ Object



77
78
79
80
81
82
83
84
85
# File 'lib/swagger_mcp_tool/helpers/request.rb', line 77

def process_path_parameters(path, params)
  return [path, params] unless path_has_placeholders?(path)

  processed_path = path.dup
  used_params = substitute_path_placeholders!(processed_path, params)
  remaining_params = filter_unused_params(params, used_params)

  [processed_path, remaining_params]
end

#request_methods(method) ⇒ Object



33
34
35
36
37
38
39
40
41
# File 'lib/swagger_mcp_tool/helpers/request.rb', line 33

def request_methods(method)
  {
    get: Net::HTTP::Get,
    post: Net::HTTP::Post,
    put: Net::HTTP::Put,
    delete: Net::HTTP::Delete,
    patch: Net::HTTP::Patch
  }[method] || Net::HTTP::Get
end

#set_json_body(request, params) ⇒ Object



43
44
45
46
47
48
# File 'lib/swagger_mcp_tool/helpers/request.rb', line 43

def set_json_body(request, params)
  return if params.empty?

  request.body = params.to_json
  request.content_type = 'application/json'
end