MCPcopy Create free account
hub / github.com/docker/docker-agent / resolveBaseURL

Method resolveBaseURL

pkg/tools/builtin/openapi/openapi.go:208–237  ·  view source on GitHub ↗

resolveBaseURL determines the base URL for API requests.

(spec *v3.Document)

Source from the content-addressed store, hash-verified

206
207// resolveBaseURL determines the base URL for API requests.
208func (t *ToolSet) resolveBaseURL(spec *v3.Document) (string, error) {
209 if len(spec.Servers) > 0 && spec.Servers[0].URL != "" {
210 serverURL := spec.Servers[0].URL
211
212 // Resolve relative server URLs against the spec URL.
213 if !strings.HasPrefix(serverURL, "http://") && !strings.HasPrefix(serverURL, "https://") {
214 specParsed, err := url.Parse(t.specURL)
215 if err != nil {
216 return "", fmt.Errorf("failed to parse spec URL: %w", err)
217 }
218
219 resolved, err := specParsed.Parse(serverURL)
220 if err != nil {
221 return "", fmt.Errorf("failed to resolve server URL: %w", err)
222 }
223
224 serverURL = resolved.String()
225 }
226
227 return strings.TrimRight(serverURL, "/"), nil
228 }
229
230 // Fall back to the spec URL's origin.
231 specParsed, err := url.Parse(t.specURL)
232 if err != nil {
233 return "", fmt.Errorf("failed to parse spec URL: %w", err)
234 }
235
236 return fmt.Sprintf("%s://%s", specParsed.Scheme, specParsed.Host), nil
237}
238
239// operationToTool converts a single OpenAPI operation to a tool.
240func (t *ToolSet) operationToTool(baseURL, path, method string, op *v3.Operation) tools.Tool {

Callers 1

buildToolsMethod · 0.95

Implementers 15

StartableToolSetpkg/tools/startable.go
fakeToolSetpkg/tools/named_test.go
stubDescriberpkg/tools/startable_test.go
stubToolSetpkg/tools/startable_test.go
flappyToolSetpkg/tools/startable_test.go
listFlappyToolSetpkg/tools/startable_test.go
reportingToolSetpkg/tools/startable_test.go
reportingStartOnlyToolSetpkg/tools/startable_test.go
recoveryFailingToolSetpkg/tools/startable_test.go
codeModeToolpkg/tools/codemode/codemode.go
testToolSetpkg/tools/codemode/codemode_test.go
Toolsetpkg/tools/a2a/a2a.go

Calls 2

ParseMethod · 0.80
StringMethod · 0.45

Tested by

no test coverage detected