MCPcopy Index your code
hub / github.com/yusing/godoxy / buildRequest

Function buildRequest

cmd/cli/cli.go:192–263  ·  view source on GitHub ↗
(ep Endpoint, baseURL string, typedValues map[string]any, isSet map[string]bool)

Source from the content-addressed store, hash-verified

190}
191
192func buildRequest(ep Endpoint, baseURL string, typedValues map[string]any, isSet map[string]bool) (string, []byte, error) {
193 path := ep.Path
194 for _, p := range ep.Params {
195 if p.In != "path" {
196 continue
197 }
198 raw, err := paramValueString(p, typedValues[p.FlagName], isSet[p.FlagName])
199 if err != nil {
200 return "", nil, err
201 }
202 if raw == "" {
203 continue
204 }
205 esc := url.PathEscape(raw)
206 path = strings.ReplaceAll(path, "{"+p.Name+"}", esc)
207 path = strings.ReplaceAll(path, ":"+p.Name, esc)
208 }
209
210 u, err := url.Parse(baseURL)
211 if err != nil {
212 return "", nil, fmt.Errorf("invalid base url: %w", err)
213 }
214 u.Path = strings.TrimRight(u.Path, "/") + path
215
216 q := u.Query()
217 for _, p := range ep.Params {
218 if p.In != "query" || !isSet[p.FlagName] {
219 continue
220 }
221 val, err := paramQueryValues(p, typedValues[p.FlagName])
222 if err != nil {
223 return "", nil, err
224 }
225 for _, v := range val {
226 q.Add(p.Name, v)
227 }
228 }
229 u.RawQuery = q.Encode()
230
231 bodyMap := map[string]any{}
232 rawBody := ""
233 for _, p := range ep.Params {
234 if p.In != "body" || !isSet[p.FlagName] {
235 continue
236 }
237 if p.Name == "file" {
238 s, err := paramValueString(p, typedValues[p.FlagName], true)
239 if err != nil {
240 return "", nil, err
241 }
242 rawBody = s
243 continue
244 }
245 v, err := paramBodyValue(p, typedValues[p.FlagName])
246 if err != nil {
247 return "", nil, err
248 }
249 bodyMap[p.Name] = v

Callers 1

executeEndpointFunction · 0.85

Calls 6

paramValueStringFunction · 0.85
paramQueryValuesFunction · 0.85
paramBodyValueFunction · 0.85
AddMethod · 0.65
StringMethod · 0.65
ParseMethod · 0.45

Tested by

no test coverage detected