MCPcopy Create free account
hub / github.com/compozy/agh / ResolveBridgeTarget

Method ResolveBridgeTarget

internal/cli/client.go:2544–2584  ·  view source on GitHub ↗
(
	ctx context.Context,
	id string,
	name string,
)

Source from the content-addressed store, hash-verified

2542}
2543
2544func (c *unixSocketClient) ResolveBridgeTarget(
2545 ctx context.Context,
2546 id string,
2547 name string,
2548) (record BridgeResolveTargetRecord, err error) {
2549 path := "/api/bridges/" + url.PathEscape(strings.TrimSpace(id)) + "/resolve"
2550 var response BridgeResolveTargetRecord
2551 requestBody := BridgeResolveTargetRequest{Name: strings.TrimSpace(name)}
2552 httpResponse, err := c.doRequest(
2553 ctx,
2554 http.MethodPost,
2555 path,
2556 nil,
2557 requestBody,
2558 )
2559 if err != nil {
2560 return BridgeResolveTargetRecord{}, err
2561 }
2562 defer func() {
2563 if closeErr := httpResponse.Body.Close(); closeErr != nil {
2564 err = errors.Join(err, fmt.Errorf("cli: close %s %s response: %w", http.MethodPost, path, closeErr))
2565 }
2566 }()
2567 if httpResponse.StatusCode >= 200 && httpResponse.StatusCode < 300 {
2568 if err := json.NewDecoder(httpResponse.Body).Decode(&response); err != nil {
2569 return BridgeResolveTargetRecord{}, fmt.Errorf("cli: decode %s %s response: %w", http.MethodPost, path, err)
2570 }
2571 return response, nil
2572 }
2573 if httpResponse.StatusCode == http.StatusNotFound || httpResponse.StatusCode == http.StatusUnprocessableEntity {
2574 body, readErr := io.ReadAll(io.LimitReader(httpResponse.Body, 1<<20))
2575 if readErr != nil {
2576 return BridgeResolveTargetRecord{}, fmt.Errorf("cli: read bridge target resolve response: %w", readErr)
2577 }
2578 if json.Unmarshal(body, &response) == nil && bridgeResolveTargetHasStructuredPayload(response) {
2579 return response, nil
2580 }
2581 return BridgeResolveTargetRecord{}, readAPIErrorBody(httpResponse.StatusCode, httpResponse.Status, body)
2582 }
2583 return BridgeResolveTargetRecord{}, readAPIError(httpResponse)
2584}
2585
2586func bridgeResolveTargetHasStructuredPayload(response BridgeResolveTargetRecord) bool {
2587 return response.Diagnostic != nil ||

Callers 1

Calls 5

doRequestMethod · 0.95
readAPIErrorBodyFunction · 0.85
readAPIErrorFunction · 0.85
CloseMethod · 0.65

Tested by 1