MCPcopy
hub / github.com/dosco/graphjin / Resolve

Method Resolve

core/remote_api.go:55–111  ·  view source on GitHub ↗

Resolve function resolves a remote API request

(c context.Context, rr ResolverReq)

Source from the content-addressed store, hash-verified

53
54// Resolve function resolves a remote API request
55func (r *remoteAPI) Resolve(c context.Context, rr ResolverReq) ([]byte, error) {
56 uri := strings.ReplaceAll(r.URL, "$id", rr.ID)
57
58 req, err := http.NewRequestWithContext(c, "GET", uri, nil)
59 if err != nil {
60 return nil, err
61 }
62
63 // if host, ok := hdr["Host"]; ok {
64 // req.Host = host[0]
65 // }
66
67 for _, v := range r.SetHeaders {
68 req.Header.Set(v.Name, v.Value)
69 }
70
71 // for _, v := range r.PassHeaders {
72 // req.Header.Set(v, hdr.Get(v))
73 // }
74
75 res, err := r.httpClient.Do(req)
76 if err != nil {
77 return nil, fmt.Errorf("failed to connect to '%s': %v", uri, err)
78 }
79 defer res.Body.Close() //nolint:errcheck
80
81 if r.Debug {
82 reqDump, err := httputil.DumpRequestOut(req, true)
83 if err != nil {
84 return nil, err
85 }
86
87 resDump, err := httputil.DumpResponse(res, true)
88 if err != nil {
89 return nil, err
90 }
91
92 rr.Log.Printf("DBG Remote Request:\n%s\n%s",
93 reqDump, resDump)
94 }
95
96 if res.StatusCode != 200 {
97 return nil,
98 fmt.Errorf("server responded with a %d", res.StatusCode)
99 }
100
101 b, err := io.ReadAll(res.Body)
102 if err != nil {
103 return nil, err
104 }
105
106 if err := jsn.ValidateBytes(b); err != nil {
107 return nil, err
108 }
109
110 return b, nil
111}

Callers

nothing calls this directly

Calls 2

SetMethod · 0.65
CloseMethod · 0.65

Tested by

no test coverage detected