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
- #add_authorization_header(request, auth_token) ⇒ Object
- #add_headers_to_request(request, headers, auth_token) ⇒ Object
- #body_required?(method) ⇒ Boolean
- #build_request_context(method, path, params, headers, server_context) ⇒ Object
- #build_request_uri(path, method, params) ⇒ Object
- #create_http_request(method, uri, params) ⇒ Object
- #process_path_parameters(path, params) ⇒ Object
- #request_methods(method) ⇒ Object
- #set_json_body(request, params) ⇒ Object
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 (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 (request, auth_token) end |
#body_required?(method) ⇒ 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 |